许多嵌入式系统利用非易失性存储器来存储引导代码、配置参数和其他在系统断电时仍然存在的数据。今天,闪存在大多数嵌入式系统中都扮演着这个角色。鉴于需要 Flash 的应用程序范围广泛,因此有多种架构和功能集可以满足应用程序的不同要求。
常见的闪存技术包括并行或 SPI NOR 闪存、SLC NAND 和 eMMC 设备。最近,通用闪存 (UFS) 也成为了一种选择。本文探讨了这些不同类型闪存在嵌入式系统引导环境中的优缺点。
嵌入式系统启动的复杂性
从外部的角度来看,启动嵌入式系统可能看起来很容易。但是,启动涉及许多步骤,如果需要快速可靠的启动,则需要仔细考虑设计。
图 1:嵌入式系统启动序列的各个阶段。
通常,嵌入式系统启动序列(参见图 1)包括以下步骤:
上电或硬件复位:这是启动嵌入式系统的第一步。它可以打开系统电源或触发系统的硬件重置。从此时开始,系统开始执行代码。
Boot ROM 或 Bootstrapped:内核跳转到复位向量并尝试执行第一个代码。一些处理器有一个小的内部引导 ROM,可以在制造时进行编程。Boot ROM 代码可以执行处理器的一些基本初始化,例如设置时钟、堆栈、中断等。boot ROM 还可以检测引导加载程序的存储位置;例如,在外部 NOR 或 NAND 闪存设备中。
某些处理器可以引导以直接执行来自外部闪存设备的代码。这通常需要处理器的硬件本身支持与外部闪存设备通信的特定总线接口,因为尚未完成软件初始化。
Bootloader XIP 或 Shadowing:为了让处理器执行代码,随机访问代码存储空间是必要的。如果使用 NOR Flash 设备存储引导加载程序,处理器可以直接从 Flash 设备运行。这种方法通常称为就地执行 (XIP)。如果使用 NAND 或 eMMC 设备,首先需要将引导代码复制到系统的 RAM。然后处理器可以跳转到RAM空间并执行。这种方法称为阴影或存储和下载 (SnD)。
此阶段的引导加载程序有时称为第二阶段引导加载程序(例如,用于 Linux 应用程序的 U-boot)。它用于设置系统并加载剩余的软件,例如 *** 作系统和文件系统。它还可以通过引导 ROM 或硬件尚未原生支持的外围设备执行系统初始化并继续引导过程。
引导加载程序初始化后,系统可以开始处理基本的中断和简单的 *** 作任务。
内核 *** 作系统和/或文件系统:这是一个可选步骤,具体取决于系统。如果嵌入式系统使用 *** 作系统或文件系统,这些软件组件也需要加载到 RAM 内存中。由于 *** 作系统和文件系统的软件体积较大,系统完成此步骤并在完全运行模式下运行需要更长的时间。
加载所有软件组件后,用户应用程序可以开始运行:一个常见用例是使用 Flash 存储第二阶段引导加载程序以及 *** 作系统和文件系统软件。引导加载程序启动后,系统功能有限,并继续引导过程以加载 *** 作系统和文件系统。
不同目标应用程序的优先级
在决定用于启动嵌入式系统的闪存类型之前,请考虑目标应用程序要求和用户期望。表 1 总结了不同细分市场的首要任务。
表 1. 应用优先级因细分市场而异。
对于汽车和工业应用,首要任务如下:
功能安全:功能安全是关于消除由于电子系统故障行为引起的危险而导致的不合理风险。这是设计汽车或工业应用时的主要考虑因素。选择以功能安全为设计理念的设备有助于实现所需的汽车或工业安全标准,例如 ISO 26262。在需要高级功能安全的情况下,使用专为功能安全而设计的设备至关重要。
可靠性:当使用闪存设备存储引导代码时,在产品的整个生命周期内,每次上电时都必须可靠地读取正确的数据。Flash 的数据保留时间对于通常是静态的引导加载程序代码很重要。对于手机等消费产品,预期寿命很短。但是,对于汽车和工业应用,闪存设备必须使用 15 年以上,并且需要在系统的整个生命周期内保持数据完整性。
安全性:随着设备的不断互联,数据安全变得越来越重要。采用强大安全技术的数据存储可以保护专有信息和商业机密等关键内容。较新的闪存设备提供不同级别的安全性,以防止数据被覆盖、无意擦除和复制到克隆设备。通过加密和其他加密技术,闪存设备可以用于可信引导链。
性能:启动设备的性能直接影响系统启动时间和 *** 作,尤其是在必须保证系统在上电后一定时间内正常运行的应用中。对于用于启动的闪存设备,性能因素不仅与从设备中读取数据的速度有关,还与系统电源对设备本身的初始化速度有关。
耐用性:闪存设备中的耐用性定义了存储器可以被编程和擦除多少次,同时仍保持其指定的保留时间。对于许多嵌入式系统,数据必须可靠多年,即使 Flash 被反复读取、擦除和编程。
虽然 NOR 闪存和 SLC NAND 通常具有 10K 到 100K 范围内的耐用周期,但 MLC NAND 可能只有 5K 或更少的周期。TLC NAND 甚至只能提供数百个周期。通常,闪存单元越密集,在永久单元故障之前可以执行的擦除和写入 *** 作就越少。
NOR Flash、SLC NAND、eMMC、UFS的比较
根据其底层技术的性质,每种类型的闪存设备都具有可能适用于一种应用而不适用于另一种应用的特性。表 2 提供了与嵌入式系统设计相关的特性比较。
表 2. 嵌入式系统中使用的不同 Flash 类型的比较。
表中提到的一些因素通常是众所周知的,例如密度、支持的温度范围和读取带宽。根据特定的引导加载程序,设计人员可以选择合适的引导设备。例如,如果引导加载程序的大小非常大,则需要更大的设备来存储这样的引导加载程序。然而,大多数引导加载程序,例如 u-boot,都在兆字节的数量级,并且在 NOR 闪存的密度范围内。这意味着用户可能有很多选择需要考虑。
其他需要考虑的重要因素包括设备初始化时间、XIP 功能和数据可靠性。
设备初始化:这是从设备上电到能够可靠输出数据的时间。如果系统需要非常快的启动时间,那么初始化时间可能是一个重要因素。如果系统需要直接从 Flash 执行代码(即,而不是映射到 RAM),则在 NOR Flash 上运行是唯一合适的选择,如下所示。
eXecute In Place XIP:XIP 功能允许系统减少昂贵的 RAM 大小。处理器可以直接从 NOR 闪存设备执行,而不是将代码映射到 RAM。这种方法可以减少处理器支持 DRAM 设备所需的引脚数量,从而显着降低 PCB 和整体系统成本。
引导要求
不同的应用程序对启动有不同的要求。在这里,我们从汽车应用中选择一个示例来讨论特定的启动要求。
图 2 显示了一个典型的汽车系统。所有子系统都通过 CAN 总线或其他网络协议连接。
图 2:汽车系统框图。
在汽车应用中,CAN 总线的启动要求为 100 ms。这意味着子系统 ECU(电子控制器单元)必须能够在 POR 后 100 毫秒内回复 CAN 消息。如果子系统无法在 100 毫秒内启动,它可能会错过关键的 CAN 消息,这是不可接受的结果。在设计汽车子系统时,除了汽车应用的所有常见要求(如功能安全、温度范围等)之外,快速启动时间是一个重要要求。
对于需要非常快的启动时间的应用,例如上述汽车案例,需要快速存储器作为启动设备。可能犯的一个错误是将快速读取带宽与快速启动时间联系起来,因为这只关注将代码和数据从启动闪存移动到 RAM 所需的时间。但是,如果考虑到设备初始化时间和引导加载程序大小,很明显,从引导闪存读取时间并不是引导序列中的主要瓶颈。
现代 NOR 闪存设备,例如赛普拉斯的 Semper NOR 闪存,提供快速的初始化时间和高带宽,以最大限度地减少启动。当 Semper NOR 与八通道或 HyperBus 总线协议中的 JEDEC xSPI 接口一起使用时,其带宽可高达 400 MB/s。考虑到典型的 U-boot 大小在 1 MB 到 2 MB 之间,400 MB/s 的读取带宽转换为 5 ms 的读取时间,加上 Semper NOR Flash 的最大 300 µs 设备初始化时间。将此与大约 100 ms 的 eMMC 初始化时间和 50 ms 的 UFS 初始化时间进行比较。使用 Semper NOR 闪存的总系统启动明显低于汽车 100 毫秒启动要求。NOR 闪存器件还符合 ISO 26262 标准,并符合 ASIL-B。
在工业或物联网等某些应用中,希望直接在闪存设备 (XIP) 上执行,而不是将引导加载程序复制到 RAM。将此与使用 eMMC 进行存储并使用 LPDDR2 RAM 进行代码执行的存储和下载启动方案进行比较。DRAM 的宽数据总线需要多层 PCB 设计才能适应。如果处理器使用例如 x8 Octal SPI Flash 直接在 NOR Flash 上运行 XIP,则引脚数会显着减少(参见图 3)。结果是节省了多达 2 到 4 层 PCB 设计,从而降低了整体系统成本。
图 3. 使用 NOR Flash 作为 XIP 设备。
如前所述,汽车和工业应用要求闪存设备能够可靠运行 15 年以上并保持存储数据的完整性。通常,SLC NAND 和 MLC NAND 的误码率比 NOR 设备差。位错误可能发生在写入存储器阵列时,或由于读取干扰或其他因素引起的电子泄漏。为了弥补丢失数据的风险,NAND 设备需要高度的 ECC 校正方案。原始 SLC NAND 设备甚至可能需要主机端的 ECC 功能。eMMC 有自己的控制器来处理这些功能。SLC NAND 和 eMMC 设备中对纠错和坏块管理的需求增加了整体系统的复杂性和成本。这也是满足功能安全和数据可靠性要求的重要考虑因素。
NOR Flash 可以提供这些类型的应用所需的耐用性。例如,在 Semper NOR 闪存中实施的 EnduraFlex 技术在 512 Mb 密度设备中提供超过 100 万次的耐久性循环,在 1 Gb 设备中提供超过 250 万次循环的耐久性。这些设备还可以进行分区和配置以具有高耐用性和长保留时间区域,从而保证 25 年的数据完整性。因此,单个 NOR 闪存设备能够灵活地在单个设备上存储引导加载程序代码和文件系统代码,同时满足保留和耐用性要求;即,开发人员可以为引导加载程序代码提供长保留区域,同时将其他内存区域保留为文件系统的高耐久性区域。
总之,虽然 SLC NAND、eMMC 和 UFS 的每比特成本较低,但 NOR 闪存器件仍然是嵌入式系统启动设备的最佳选择,尤其是在需要非常快的系统启动时间的应用中。凭借 NOR 闪存技术提供重要的可靠性特性,例如快速初始化时间、XIP 功能以及配置长保留和高耐久性区域的灵活性,它正迅速成为需要快速可靠启动的系统的首选非易失性存储器。
审核编辑:郭婷
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)