如何将Flash模拟成EEPROM?

嵌入式ARM 2023-03-22 13:10

1. EEPROM与Flash Memory 特性

EEPROM 和Flash都是非易失性存储器,这意味着它们在断电后仍保留其数据。它们都由一组存储单元(memory cells )组成,其中每个存储单元保存一位或多位信息。在一些设计中,多个单元组合形成一个位。

在每个存储单元保存一位信息的 EEPROM 和Flash中,(对于Qorivva MPC55xx/MPC56xx/MPC57xx  等芯片)存储单元的默认擦除状态读取为二进制 1。对存储单元进行编程会将其值从二进制 1 更改为二进制 0,并且擦除存储单元会更改其值 值从 0 到 1。编程不能反向工作:只有擦除操作才能将存储单元的值从 0 更改为 1。

EEPROM通常是以一个Byte或者Word为单位写入和擦除的,即擦写是以Byte或Word为边界,这样就使得EEPROM擦写比较独立自由,也不会影响其他数据。另外,EEPROM的擦写寿命(PE cycles)是比较高的,达百万次。

而Flash(以Qorivva Device为例)通常是以Word或Double-Word为写入单位,但是擦除却以Block为单位,这个Block大小往往又是以KB衡量的。这些都是半导体制造工艺或设计特性有关,这也使得Flash的容量非常大,但擦写寿命很短(通常只有十万次PE cycles)。

2. 使用Flash Memory模拟EEPROM

将Flash模拟成EEPROM来使用,会遇到两个问题:

  1. 修改Flash中存储的值需要擦除整个内存块。

  2. 频繁更新数据的应用程序必须注意PE cycles要求。

那么,怎么可以完美解决这两个问题呢?

可以通过Record(记录)列表的方式来实现,每个Record都是一个或多个变量的组合。每条Record还有一个标签(Tag),用于标识Record中包含的变量、Record的大小以及Record是否有效。

一组Flash Block被设定为 EEPROM emulation block。从这组块中,选择一个块作为Active Block。Record被编程到Active Block中的连续内存位置。为了更新Record,软件将Record的更新版本添加到Active Block中的下一个可用位置。读取Record是通过检索带有匹配标记的最近写入的Record(即最后一条Record)来完成的。

当Active Block变满时,软件将Active Block内的所有有效Record复制到其他 EEPROM emulation block之一中。这个新Block成为Active Block,然后擦除前一个Active Block。由于此块交换过程会清除过时的Record,因此新的Active Block将有空间用于进一步的Record更新。

(1)Record结构

Record分为两个主要部分:

  • Data Segment,即数据部分,其中保存应用程序变量,

  • Metadata Segment,即元数据部分,其中包含管理和检索Record中数据所需的所有信息。

Metadata Segment进一步细分为其他字段:

  • Record Status Field,即Record状态字段,该字段用于从错误中恢复和保持数据一致性。

  • ID Field,即ID 字段,此字段用于标识Record中包含的数据。

  • Size Field,即大小字段,该字段用于确定数据段内的数据字节数。

以上的ID Field和Size Field的长度是可以根据应用而设置不一样的,但是Record Status Field却不能随意设置,这个跟Flash的ECC有关。

下图,根据Flash的ECC不同,有两种不同的设计:

(2)ECC和Record Status

纠错码 (ECC) 与存储设备一起使用,以纠正或检测由于辐射或电磁干扰导致的内存损坏。一般IC(如Qorivva Device)上的Flash采用单bit校正、双bit检测ECC算法。

ECC 的工作原理是对写入Flash的数据计算固定数量的奇偶校验位。稍后从闪存读取数据时,数据位与奇偶校验位组合,任何错误都会得到适当处理。在 Qorivva 设备上,每个 4 字节或 8 字节边界都被指定为一个校验基,并且有自己的一组奇偶校验位(校验基大小是特定于设备的,如下表所示)。

在以上Flash模拟EEPROM的方案中,那个Record Status在不同状态变化时是需要写入不同的值的。通常,在不擦除的前提下,多次写入Flash是不允许的,但是,这里有个方法。

如果这个IC没有ECC,只要写入时将Flash里面的bit位从1改成0是没有问题的,因为写入的过程就是讲1改成0,但是注意,如果不擦除,将0改成1是不行的哦。虽然说,在已经擦除过的数据位中,一个bit只有一次从1改成0的机会,但是Record Status是有很多bit的,是不是可以改写很多次?例如:

0xFFFFFFFF0xFFEF3FFF0x0FEE1ABC0x02AE1AB0

但是,IC是有包括 ECC的,因此重复写一个值也会尝试重写校验库中的 ECC 奇偶校验位。即使数据位仅从 1 更改为 0,新数据也可能需要将奇偶校验位从 0 更改为 1。由于奇偶校验位是闪存的一部分,因此编程操作将失败。

这里就看ECC是怎么做保护的了,有些IC(如Qorivva   Device),如果重写(reprogram)是按group(如8/16bits)进行Clear的话,那是没问题的。例如,具有 8-byte ECC checkbase的设备可以使用以下双字序列reprogram,允许清除 16-bit group:

0xFFFFFFFFFFFFFFFF0x0000FFFF0000FFFF0x000000000000FFFF

通过这个特性,这个Record Status就可以reprogram多次了。以下汇总了Qorivva Device的ECC情况:

DeviceCheckbase size1/0 bit groupingsExample value
MPC55xx8 bytes16 bits0xFFFF_0000_FFFF_0000
MPC56xx (instruction flash)8 bytes16 bits0xFFFF_0000_FFFF_0000
MPC56xx (data flash)4 bytes8 bits0xFF00_00FF
MPC57xx8 bytes8 bits0xFFFF_0000_FF00_00FF

(3)添加和更新Record

在向Active Block添加新Record之前,EEPROM emulation软件定位块中第一个擦除的存储位置。Record按顺序写入Active Block,因此软件知道剩余的存储位置也被擦除。然后,软件从该位置确定是否有足够的空间来保存Record。实际的写入过程分为以下几个步骤:

  1. 软件将Record状态写为$invalid

  2. 软件将 ID 和Size字段以及打包到同一个 ECC checkbase中的任何其他数据写入。

  3. 软件写入剩余数据。

  4. 软件将Record状态写为$valid

选择 $valid$invalid 值,使它们遵循上一节中解释的 ECC 规则。下表给出了status字段的建议值。注意,在写入$invalid 值之前,Record状态被认为是$empty,即被擦除内存的值。

Status4-Byte ECC boundary8-Byte ECC boundary
$empty0xFFFF_FFFF0xFFFF_FFFF_FFFF_FFFF
$invalid0x0000_FFFF0x0000_0000_FFFF_FFFF
$valid0x0000_00000x0000_0000_0000_0000

要更新已写入Flash的Record,软件只需将更新的Record添加到Record列表的末尾。在搜索具有特定 ID 的Record时,软件知道具有匹配 ID 的最后一条Record是最新的Record。

下图显示了写入多条Record后Active Block内存内容的示例。在此示例中,在添加第二条Record时Reset了设备。由于Record添加过程未完成,第二条Record的状态为 $invalid


(4)读Record

当应用软件请求读取一条Record时,EEPROM emulation软件必须定位该Record。应用软件提供Record ID,EEPROM emulation软件遍历Record列表,沿途比较每个RecordID。EEPROM emulation软件返回具有匹配 ID 的最后一个有效Record的地址。遍历Record列表使用以下步骤,从块中的第一条Record开始:

  1. EEPROM emulation软件检查Record状态。如果Record状态为 $empty,则软件位于列表末尾并返回最近匹配Record(如果有)的地址。

  2. 软件检查Record的ID。如果 ID 与请求Record的 ID 匹配,并且Record状态为 $valid,则软件会Record此记录。由于Active Block中可能同时存在多个具有相同 ID 的记录,因此软件必须继续遍历列表,直到到达末尾。

  3. 软件读取Record的大小,并用它来计算列表中下一条Record的地址。

  4. 软件移至下一条Record,从步骤 1 重新开始该过程。

在Block交换操作期间或添加Record时,EEPROM emulation软件以类似的方式遍历Record列表。在块交换的情况下,记录 ID 被忽略,因为软件只关心查找有效Record。在添加Record的情况下,软件遍历Record列表只找到列表的末尾。

(5)在添加Record中断中恢复

某些事件(例如设备断电)可能会在任何时间点中断Record添加过程。正确使用Record状态字段允许应用程序优雅地恢复,即使易失性上下文信息丢失。每当 EEPROM emulation软件遍历Record列表时,它就会跳过标记为 $invalid 的记录。标记为 $invalid 的Record会在块交换过程中从Record列表中清除,因为它们不会写入新的Flash块。

下表将Record添加过程的每个阶段与每个阶段完成后的Record状态配对。

StageOperationRecord statusID/Size field
A写操作之前的Record的状态$emptyblank
B软件写Record status 为$invalid.$invalidblank
C软件将 ID 和Size字段以及打包到同一个checkbase中的任何数据写入。$invalidwritten
D软件对剩余的Record数据进行写入。这需要多次写入,具体取决于数据的大小。$invalidwritten
E软件写Record status 为$valid$validwritten

$invalid Record 状态有两个目的:标记损坏Record的存在,以及防止边缘写错误。

如果系统正在写入时被中断,可能存在写入不成功,即边界写入情况。此时的Flash状态处于已擦除和已写入之间,如果以相同的值再次写入,这是没有问题的。

但是,真实的情况不仅仅这样。当读取的数据来源于已擦除的位置,那么应用程序是不知道这个值是擦除值还是正常写入的值。那么要依赖Record Status的值了,这样可以通过$invalid 来防止边界写入的情况了。如上表中的State B,第一步就写入$invalid 状态,然后再写数据,最后在State E才将状态改为$valid

举例说明:

如果软件在State B 完成之前被中断(如上表所述),$invalid 值将被写入。由于下次软件尝试添加Record 时会写入相同的值,因此操作将成功完成。

当跳过 $invalid 块时,EEPROM emulation软件会查看Record  Size以了解下一条Record 在内存中的位置。如果软件在阶段 C 完成之前中断,则Record ID 和Size不可用。出于这个原因,软件将任何具有空白大小字段的Record 视为保存零字节数据的Record 。由于没有写入任何Record 数据,软件使用紧跟在 ID 和Size字段之后的字/双字(取决于checkbase大小)作为下一条Record 的开始。阶段 C 完成后,软件通过跳过不完整的 $invalid Record 从任何中断中恢复。

(6)交换(Swapping)Block

在多次Record 添加和更新之后,活动块中将没有足够的擦除内存来执行进一步的更新。在此阶段,EEPROM emulation软件通过将有效Record 从活动块复制到备用块来执行块交换

每当软件擦除一个块时,软件随后会通过检查块中的每个存储位置是否都读回全1来验证该块是否已被擦除。任何被验证为已擦除的块都可以用作块交换中的替代块。验证擦除的块可防止软件使用未完全擦除的块作为替代块。尝试对未完全擦除的块进行编程可能会导致错误。

选择备用块后,软件会读取活动块的内容并将每个 ID 的最新Record 复制到备用块中。然后将备用块标记为任何后续访问的Active Block,软件会擦除并验证前一个Active Block以备将来使用。每个块在块的开始处保留一个字/双字(参考“添加和更新Record”章节的图示)来保存块Status。块Status字段的使用方式与Record Status字段的使用方式相同,并在四种可能的状态之间依次循环:

  1. $erased - 擦除块的默认值(全 1)

  2. $verified - 块已被验证为已擦除

  3. $copy - 块被用作块交换中的替代块

  4. $active - 块用作Active Block

与Record Status字段一样,必须特别选择立即值 $verified$copy$active,以便遵守 ECC 规则。下表提供了一些建议值。

Status4-Byte checkbase, groups of 8 bits8-Byte checkbase, groups of 16 bits
$erased0xFFFF_FFFF0xFFFF_FFFF_FFFF_FFFF
$verified0x00FF_FFFF0x0000_FFFF_FFFF_FFFF
$copy0x0000_FFFF0x0000_0000_FFFF_FFFF
$active0x0000_00FF0x0000_0000_0000_FFFF

下表显示了块交换操作的不同阶段,以及该过程中涉及的每个块的状态。State A 代表正常操作条件,其中Flash块 A 是Active Block。其他阶段是仅存在于块交换过程中的短暂瞬间阶段。如果块交换过程在任何时候中断,EEPROM emulation软件能够恢复并识别用于后续访问和更新的块。

StageBlock A statusBlock B statusOperation
A$active$verifiedBlock A 激活且Block B 验证擦除的初始状态。
B$active$verified → $copy软件将区Bloc B 的Status字段设置为 $copy,表示区块交换操作开始
C$active$copy软件从Block A复制active records到Block B.
D$active$copy → $active软件完成将Active Record从Block A 复制到Block B。软件将Block B 设置为新的Active Block。
E$active → $erased$active软件擦除Block A.
F$erased → $verified$active软件验证Block A 已被擦除并将Block A 的Status设置为 $verified。

(7)在Block Swap中断中恢复

与Record添加一样,可以从块交换操作被中断并且所有易失性上下文信息丢失的情况中恢复。软件将状态不是 $verified$active 的任何块视为处于故障状态,并且这种情况下的任何块都应该被擦除并验证为空白。有关本节中使用的State的说明,请参阅上表。

如果块交换过程在State BC 中断,则Flash Block A 仍标记为Active Block,从而仍然可以正确访问Record。标记为 $copy 的Flash Block B 包含可能损坏或部分编程的数据Record。为了将Block B 返回到已知的有用状态,EEPROM emulation软件会擦除Block B 并验证它是否为空白。然后软件重新启动块交换过程。

如果块交换过程在State D 中断,则两个块都标记为 $active。软件识别哪个块具有最大数量的未使用(即擦除)Flash并将该块用作Active Block。另一个块已完全或几乎完全已满,这是需要进行块交换过程的最初原因。软件通过擦除完整块并验证其为空白来完成Block Swap过程。

如果Block Swap过程在State EF 中断,则Block A 处于部分擦除状态。这种状态可以通过非法Block/Record状态值或可能发生的 ECC 错误来检测。恢复包括重新擦除Block  A 并验证它是空白的。与Record添加一样,可以从块交换操作被中断并且所有易失性上下文信息丢失的情况中恢复。软件将状态不是 $verified$active 的任何块视为处于故障状态,并且这种情况下的任何块都应该被擦除并验证为空白。有关本节中使用的State的说明,请参阅上表。

3. 模拟EEPROM的软件实现和变种

前几章节描述了同个Record和Block的方式模拟EEPROM的方案,以下讲讲其软件实现,会涉及到几个关键技术:

  • 将数据分组到标记Record列表中

  • 将多条Record打包到一个块中以减少块擦除次数

  • 覆盖Status字段时正确处理 ECC

  • 当活动块变满时进行Block Swap

  • 以允许从意外中断中恢复的方式处理Record

(1)Record Cache

添加到 EEPROM emulation软件的一项可能功能是能够将Record缓存到 RAM 中。此功能可实现在驱动程序中。在 RAM 中保留一个区域来保存几个最常用(或最近使用)的Record具有以下几个优点:

  • 读取和写入 RAM 的速度比各自的Flash访问速度快。

  • Record更新可以就地进行。

  • 将更多的Record操作移入 RAM 意味着更少的Block Swap操作,从而减少块擦除的次数。

添加此功能会增加 EEPROM emulation软件的复杂性,因为该软件现在必须处理Flash和 RAM 之间的移动记录。

软件可以构建一个查找表,保存给定Record ID 的Record的内存位置,而不是将整个Record保存在 RAM 中。这减少了搜索Record所需的时间(特别是对于接近满的块),因为软件只需要参考查找表而不是遍历整个Record列表。

(2)固定的Record长度

在某些情况下,不需要可变Record长度方案的灵活性,固定Record长度方案就足够了。如果应用程序中的每条Record的长度都相同,或者如果多个大小混合的变量总是组合在一起形成一个固定长度的Record,则Record长度字段携带冗余信息,可以删除。由于已知Record总是从内存中的固定偏移量开始,因此降低了搜索固定长度Record所涉及的软件复杂性。不再需要读取每条Record的大小字段来计算下一条Record的地址。

(3)单Flash Block

某些应用程序可能只有(或想要)一个可用于 EEPROM emulation的块。由于只有一个块可用,EEPROM emulation软件必须使用不同的块来做Block Swap。当单个块用完可用空间时,软件会在继续擦除过程之前将活动的有效Record复制到 RAM 中。在块被擦除和验证后,软件将Record写回闪存。

仅使用单个Flash Block进行 EEPROM emulation会带来很大的数据丢失风险。在Block Swap过程中,如果发生严重错误或在软件将每条Record写回Flash之前设备断电,这些Record中的数据将丢失。对于大多数应用程序,建议至少使用两个Flash Block,以便数据的非易失性副本始终可用以从此类问题中恢复。

(4)CRC

除了硬件 ECC,EEPROM emulation软件还可以用CRC来检测Record错误。下次访问此数据时,将重新计算校验值并与之前的值进行比较。如果两个检查值不匹配,则已知数据已更改。存在许多 CRC 规范,不同的规范提供不同级别的保护。

例如可以让 EEPROM emulation软件使用 CRC-32-IEEE 标准。软件每次写入Record时,软件都会使用RecordID、大小和数据来计算一个32位的校验值。然后,软件会在Record之后立即将此校验值写入Flash(同时正确处理 ECC checkbase大小),从而有效地将校验值附加到Record中。每当软件读取Record时,它都会重新计算校验值。如果重新计算的校验值与先前的校验值不匹配,则软件知道Record ID、大小、数据或校验值已更改。

4. 擦写寿命(Program-Erase Endurance)

可模拟的 EEPROM 数量取决于Flash Block大小和预期的数据访问次数。由于使用大量Flash来实现一定数量的模拟 EEPROM,Flash看到的program/erase (PE) cycles 减少了。这允许以比原生Flash规范更高的 PE 耐久性来模拟EEPROM。

例如,假设设备上的 16 KB Flash块被指定为至少 100,000 个program/erase (PE) cycles  。这意味着在编程然后擦除 100,000 次后不能保证Block工作。但是,这并不意味着只能进行 100,000 次记录操作。

如果 EEPROM 模拟数据只有一个 256 字节的Record(包括Record Status、ID 和Size字段等开销),则该Record可以在 16 KB 块中更新 63 次,然后才需要擦除该块(16 KB Byte/ 256 Byte = 64,但块Status字段也消耗了一些内存)。如果系统使用两个 16 KB 块来保存 EEPROM 模拟数据,那么在块达到 100,000 个 PE cycles之前,这个 256 Byte的记录可以更新 12,600,000 次。使用为 100,000 个 PE cycles指定的两个 64 KB 块可以维持四倍的记录更新。

随着所需模拟 EEPROM 数据量的增加,所需Block Swap操作的频率迅速增加。最终用户必须根据诸如Record更新频率和Flash的 PE 耐用性规范等输入来估计模拟 EEPROM 的最大数量。

通过使用尽可能多的Flash Block进行 EEPROM 模拟,应用程序可以进一步延长Flash寿命。如下图所示,通过循环方式遍历多个块,进一步减少了每个块上的擦除。

 

本文参考:

《EEPROM Emulation with Qorivva MPC55xx, MPC56xx, and MPC57xx Microcontrollers》


END

来源:嵌入式软件实战派

版权归原作者所有,如有侵权,请联系删除。

推荐阅读
从STM32转到嵌入式Linux驱动开发
让嵌入式工程师欲罢不能的7个小网站(资源篇)
ChatGPT实现51、STM32、树莓派等各种点灯程序

→点关注,不迷路←

嵌入式ARM 关注这个时代最火的嵌入式ARM,你想知道的都在这里。
评论
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 61浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 175浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 94浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 59浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 59浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 53浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 59浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 171浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 68浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 63浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 166浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 37浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦