用于嵌入式系统引导的闪存设备比较

描述

本文探讨了嵌入式系统引导环境中不同类型的闪存的优缺点。

许多嵌入式系统利用非易失性存储器来存储引导代码、配置参数以及系统断电时持续存在的其他数据。如今,闪存在大多数嵌入式系统中都扮演着这一角色。鉴于需要闪存的应用范围很广,有多种架构和功能集可以满足应用的不同要求。

常见的闪存技术包括并行或 SPI NOR 闪存、SLC NAND 和 eMMC 器件。最近,通用闪存存储(UFS)也已成为一种选择。本文探讨了嵌入式系统引导环境中这些不同类型的闪存的优缺点。

嵌入式系统引导的复杂性

从外部角度来看,启动嵌入式系统可能看起来很容易。但是,启动涉及许多步骤,如果需要快速可靠的启动,则需要仔细考虑设计。

CAN总线

图 1:嵌入式系统启动序列的阶段。

通常,嵌入式系统启动顺序(参见图 1)涉及以下步骤:

通电或硬件重置:这是引导嵌入式系统的第一步。它可以是打开系统电源,也可以是触发系统的硬件重置。从此时起,系统开始执行其代码。

引导ROM或引导:内核跳转到复位向量并尝试执行第一个代码。一些处理器具有小型内部引导ROM,可以在制造时进行编程。引导ROM代码可以执行处理器的一些基本初始化,例如设置时钟,堆栈,中断等。引导ROM还可以检测引导加载程序的存储位置;例如,在外部诺或 NAND 闪存设备中。

某些处理器可以引导以直接从外部闪存设备执行代码。这通常需要处理器的硬件本身支持与外部闪存设备通信的特定总线接口,因为尚未完成软件初始化。

引导加载程序 XIP 或重影:对于要执行代码的处理器,必须随机访问代码存储。如果使用 NOR 闪存设备来存储引导加载程序,则处理器可以直接从闪存设备运行。此方法通常称为原位计算 (XIP)。如果使用 NAND 或 eMMC 设备,首先需要将引导代码复制到系统的 RAM。然后处理器可以跳转到RAM空间并执行。此方法称为重影或存储和下载 (SnD)。

此阶段的引导加载程序有时称为第二阶段引导加载程序(例如,Linux 应用程序的 U-boot)。它用于设置系统和加载其余软件,如操作系统和文件系统。它还可以执行系统初始化,并通过引导 ROM 或硬件尚未本机支持的外围设备继续引导过程。

引导加载程序初始化后,系统可以开始处理基本中断和简单的操作任务。

内核操作系统和/或文件系统:这是一个可选步骤,具体取决于系统。如果嵌入式系统使用操作系统或文件系统,则还需要将这些软件组件加载到 RAM 内存中。由于操作系统和文件系统的软件尺寸较大,因此系统完成此步骤并在完全操作模式下运行需要更长的时间。

加载完所有软件组件后,用户应用程序可以开始运行:一个常见的用例是使用 Flash 存储第二阶段引导加载程序以及操作系统和文件系统软件。引导加载程序启动后,系统功能有限,并继续引导过程以加载操作系统和文件系统。

不同目标应用中的优先级

在决定用于启动嵌入式系统的闪存类型之前,请考虑目标应用程序要求和用户期望。表1总结了不同细分市场的首要任务。

CAN总线

表 1.应用程序优先级因细分市场而异。

对于汽车和工业应用,首要任务如下:

功能安全:功能安全是关于消除由于电子系统故障行为引起的危害而导致的不合理风险。这是设计汽车或工业应用时的主要考虑因素。选择在设计时充分考虑功能安全的设备有助于实现所需的汽车或工业安全标准,如 ISO 26262。在需要高级功能安全的情况下,使用专为功能安全而设计的设备至关重要。

可靠性:当使用闪存设备存储启动代码时,必须在产品使用寿命内的每次上电时可靠地读取正确的数据。Flash 的数据保留时间对于通常静态的引导加载程序代码非常重要。对于手机等消费类产品,预期的寿命较短。但是,对于汽车和工业应用,闪存设备必须持续使用15年以上,并且需要在系统的整个生命周期内保持数据完整性。

安全性:随着设备继续互连,数据安全性变得越来越重要。具有强大安全技术的数据存储可以保护关键内容,例如专有信息和商业机密。较新的闪存设备提供不同级别的安全性,以保护数据不被覆盖、意外擦除和复制到克隆设备。通过加密和其他加密技术,Flash 设备可用于受信任的引导链。

性能:引导设备的性能直接影响系统启动时间和操作,特别是在必须保证系统在通电后的一定时间内启动和运行的应用中。对于用于启动的闪存设备,性能因素不仅与从设备中读取数据的速度有关,还与设备本身通过系统电源初始化的速度有关。

耐用性:闪存器件中的耐久性定义了存储器在保持其指定保留时间的同时可以编程和擦除的次数。对于许多嵌入式系统,数据必须可靠多年,即使闪存被反复读取、擦除和编程。

虽然 NOR 闪存和 SLC NAND 通常具有 10K 至 100K 范围的耐久周期,但 MLC NAND 可能只有 5K 周期或更少。TLC NAND甚至可以提供数百个周期。通常,闪存单元密度越大,在永久单元故障之前可以执行的擦除和写入就越少。

非专利闪存、固态混合固态显示器、电子微处理器和超压离子的比较

根据其基础技术的性质,每种类型的Flash设备都具有可能适合一种应用而不适用于另一种应用的特性。表2提供了与嵌入式系统设计相关的特性的比较。

CAN总线

表 2.嵌入式系统中使用的不同闪存类型的比较。

表中提到的一些因素通常是众所周知的,例如密度、支持的温度范围和读取带宽。根据特定的引导加载程序,设计人员可以选择合适的引导设备。例如,如果引导加载程序大小非常大,则需要更大的设备来存储这样的引导加载程序。然而,大多数引导加载程序,如u-boot,都是以兆字节为单位的,并且完全在NOR闪存的密度范围内。这意味着用户可能有许多选择需要考虑。

其他需要考虑的重要因素包括器件初始化时间、XIP 功能和数据可靠性。

设备初始化:这是设备通电和它可以可靠地输出数据之间的时间。如果系统需要非常快的启动时间,则初始化时间可能是一个重要因素。如果系统需要直接从闪存执行代码(即,而不是重影到RAM),则在NOR闪存上运行是唯一合适的选择,如下所示。

原位 XIP:XIP 功能使系统能够减少昂贵的 RAM 大小。处理器可以直接从 NOR 闪存设备执行,而不是将代码重影到 RAM。这种方法可以减少处理器支持DRAM器件所需的引脚数量,从而显著降低PCB和整体系统成本。

引导要求

不同的应用程序对引导有不同的要求。在这里,我们从汽车应用中选择一个示例来讨论特定的启动要求。

图2所示为典型的汽车系统。所有子系统都通过CAN总线或其他网络协议连接。

CAN总线

图 2:汽车系统的框图。

在汽车应用中,CAN总线的启动要求为100 ms。这意味着子系统ECU(电子控制器单元)必须能够在POR之后的100 ms内回复CAN消息。如果子系统无法在 100 ms 内启动,则可能会错过关键的 CAN 报文,这是不可接受的结果。在设计汽车子系统时,除了汽车应用的所有常见要求(如功能安全、温度范围等)之外,快速启动时间是一项重要要求。

对于需要非常快的启动时间的应用,例如上图所示的汽车外壳,需要快速存储器作为启动设备。可能犯的一个错误是将快速读取带宽与快速启动时间相关联,因为这只关注将代码和数据从启动闪存移动到RAM所需的时间。但是,如果考虑到设备初始化时间和引导加载程序大小,很明显,从引导闪存读取时间不是引导序列中的主要瓶颈。

现代 NOR 闪存设备(如赛普拉斯的森珀 NOR 闪存)提供快速初始化时间和高带宽,以最大限度地减少启动。当森帕 NOR 在八进制或超总线总线协议中与 JEDEC xSPI 接口一起使用时,其带宽可能高达 400 MB/s。考虑到典型的 U 型引导大小介于 1 MB 到 2 MB 之间,400 MB/s 的读取带宽转换为 5 ms 读取时间,再加上 Semper NOR 闪存的最大 300 μs 器件初始化时间。与此相比,eMMC 初始化时间约为 100 毫秒,UFS 初始化时间为 50 毫秒。使用森帕 NOR 闪存的整个系统启动明显低于汽车 100 ms 启动要求。NOR 闪存设备也符合 ISO 26262 标准,并且符合 ASIL-B 标准。

在某些应用中,例如工业或物联网,希望直接在闪存设备(XIP)上执行,而不是将引导加载程序复制到RAM。将其与使用 eMMC 进行存储并使用 LPDDR2 RAM 执行代码的存储和下载启动方案进行比较。DRAM的宽数据总线需要多层PCB设计才能适应。如果处理器直接在 NOR 闪存上运行 XIP,例如使用 x8 八通道 SPI 闪存,则针脚数量会显著减少(参见图 3)。结果是节省了多达2至4层的PCB设计,从而降低了整体系统成本。

CAN总线

图 3.使用诺睿闪存作为 XIP 设备。

如前所述,汽车和工业应用要求闪存设备能够可靠地运行超过 15 年,并保持存储数据的完整性。通常,单线互连器件和 MLC NAND 的误码率比 NOR 器件差。位错误可能发生在写入存储器阵列时,或由读取干扰或其他因素引起的电子泄漏。为了补偿丢失数据的风险,NAND器件中需要高度的ECC校正方案。原始 SLC NAND 设备甚至可能需要在主机端使用 ECC 功能。eMMC有自己的控制器来处理这些功能。SLC NAND 和 eMMC 器件中对纠错和坏块管理的需求增加了整体系统的复杂性和成本。这也是满足功能安全和数据可靠性要求的重要考虑因素。

NOR闪存可以提供这些类型的应用所需的耐用性。例如,在森佩尔 NOR 闪存中实施的 EnduraFlex 技术可在 512 Mb 密度设备中提供超过 100 万次循环的耐久性,在 1 Gb 设备中提供超过 250 万次循环的耐久性。还可以对这些设备进行分区和预配,使其具有高耐用性和较长的保留时间区域,从而保证 25 年的数据完整性。因此,单个NOR闪存设备能够灵活地将引导加载程序代码和文件系统代码存储在单个设备上,这两者都是保留和耐久性要求的两端;即,开发人员可以为引导加载程序代码配置长保留区域,同时将其他内存区域保留为文件系统的高耐久性区域。

总之,尽管SLC NAND、eMMC和UFS的每比特成本较低,但NOR闪存器件仍然是嵌入式系统引导设备的最佳选择,特别是在需要非常快系统启动时间的应用中。NOR闪存技术提供重要的可靠性特性,如快速初始化时间、XIP功能以及配置长保留期和高耐久性区域的灵活性,正迅速成为需要快速可靠启动的系统的首选非易失性存储器。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分