0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Zhi Feng 2022-12-01 13:45 次阅读

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

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

嵌入式系统引导的复杂性

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

通常,嵌入式系统启动顺序涉及以下步骤:

上电或硬件重置:这是启动嵌入式系统的第一步。它可以打开系统电源或触发系统的硬件重置。从这一点开始,系统开始执行其代码。

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

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

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

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

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

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

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

不同目标应用中的优先级

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

poYBAGOIP4WAQ3U3AADZm9Z1jx0672.png

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

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

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

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

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

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

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

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

NOR 闪存、SLC NAND、eMMC 和 UFS 的比较

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

poYBAGOIP4qAKYVSAAEy0sEz9ms845.png

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

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

要考虑的其他重要因素包括设备初始化时间、XIP 能力和数据可靠性。

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

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

引导要求

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

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

poYBAGOIP5CACYixAAEJQz6bTLo704.png

图 2:汽车系统框图。

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

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

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

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

pYYBAGOIP5eASjBeAACoT-du4y4573.png

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

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

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

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

审核编辑:郭婷

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

    关注

    0

    文章

    25

    浏览量

    14581
  • 闪存
    +关注

    关注

    16

    文章

    1782

    浏览量

    114892
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304786
  • 存储器
    +关注

    关注

    38

    文章

    7484

    浏览量

    163759
  • ROM
    ROM
    +关注

    关注

    4

    文章

    563

    浏览量

    85731
收藏 人收藏

    评论

    相关推荐

    嵌入式系统引导程序移植

    嵌入式系统引导程序移植
    发表于 08-20 18:44

    嵌入式Linux的引导过程是怎样的?

    欢迎关注公众号,文章会同步发布在嵌入式客栈引言:本文简明扼要的介绍了嵌入式Linux的引导过程,X86体系的引导过程以及几种常见嵌入式处理器
    发表于 12-17 07:25

    嵌入式系统闪存设备I/O 软件的设计与实现

    闪存作为最常用的嵌入式存储设备,其管理和访问技术对整个系统的性能有着较大 的影响。目前嵌入式
    发表于 06-09 09:14 10次下载

    基于ARM-μCLinux嵌入式系统启动引导的实现

    基于ARM-μCLinux嵌入式系统启动引导的实现:介绍了 ARM-μCLinux 嵌入式系统的结构组成,重点分析了 ARM--μCLinu
    发表于 06-25 08:14 36次下载

    嵌入式系统引导技术研究

    以POWERPC8XX系列处理器为例! 通过对此类处理器的引导模式" 引导代码的编写和调试!以及如何引导操作系统执行等问题的研究!探索嵌入式
    发表于 07-02 15:09 34次下载

    嵌入式系统中实现从RAM快速引导技术

    摘    要: 本文以ARM7TDMI为例,对嵌入式系统从ROM和RAM引导的特点及技术实现进行了比较,对异常和中断概念给出了详细的辨析,介绍了如何实现
    发表于 03-11 12:24 1171次阅读
    在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>中实现从RAM快速<b class='flag-5'>引导</b>技术

    嵌入式引导加载技术

    嵌入式引导加载技术
    发表于 02-08 01:37 10次下载

    嵌入式系统内核引导启动过程浅析

    嵌入式系统内核引导启动过程浅析
    发表于 10-30 10:26 6次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>内核<b class='flag-5'>引导</b>启动过程浅析

    嵌入式系统

    嵌入式系统学习总结嵌入式系统的理解嵌入式系统的历史嵌入式
    发表于 11-03 20:36 11次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>

    用于嵌入式设备的JavaScript

      这些开发系统中的每一个都是在嵌入式设备上开始 JavaScript 开发的好工具。尽管 JavaScript 在近 20 年前首次引入,但它才刚刚开始用于
    的头像 发表于 06-29 09:39 3557次阅读
    <b class='flag-5'>用于</b><b class='flag-5'>嵌入式</b><b class='flag-5'>设备</b>的JavaScript

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

      如前所述,汽车和工业应用要求闪存设备能够可靠运行 15 年以上并保持存储数据的完整性。通常,SLC NAND 和 MLC NAND 的误码率比 NOR 设备差。
    发表于 06-30 10:23 905次阅读
    <b class='flag-5'>用于</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>引导</b>的<b class='flag-5'>闪存</b><b class='flag-5'>设备</b><b class='flag-5'>比较</b>

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

      总之,虽然 SLC NAND、eMMC 和 UFS 的每比特成本较低,但 NOR 闪存器件仍然是嵌入式系统启动设备的最佳选择,尤其是在需要非常快的
    发表于 08-17 11:57 647次阅读
    <b class='flag-5'>用于</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>引导</b>的<b class='flag-5'>闪存</b><b class='flag-5'>设备</b><b class='flag-5'>比较</b>

    使用外部闪存的安全嵌入式系统

    在本系列的第 1 部分中,我们介绍了安全性在连接的嵌入式系统中的重要性,以及强制使用外部闪存闪存的去集成。在本系列的第 2 部分中,我们介绍了下一代智能内存安全
    的头像 发表于 10-21 09:23 647次阅读
    使用外部<b class='flag-5'>闪存</b>的安全<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>

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

    许多嵌入式系统利用非易失性存储器来存储引导代码、配置参数以及系统断电时持续存在的其他数据。如今,闪存在大多数
    的头像 发表于 10-24 11:55 821次阅读
    <b class='flag-5'>用于</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>引导</b>的<b class='flag-5'>闪存</b><b class='flag-5'>设备</b><b class='flag-5'>比较</b>

    什么是嵌入式系统嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 2478次阅读