当前位置:首页 > 技术学院 > 技术前线
[导读]很多刚入门嵌入式开发的工程师,在拿到一款新的主控芯片手册时,都会被里面五花八门的存储名词绕晕:片内SRAM、片外DRAM、Nor Flash、NAND Flash、SPI Flash、eMMC……这些不同的存储介质,看起来都能存数据,却有着完全不同的底层特性、成本区间和适用场景。很多新手做项目时,随便选了一款存储芯片就往上焊,等到量产阶段才发现擦写寿命不够、启动速度不达标、数据可靠性出问题,导致整个项目延期返工。嵌入式系统的存储选型从来不是“选容量最大的就好”,不同的存储介质从设计根源上就面向不同的使用场景,把它们的特性、边界和选型逻辑理清楚,是做出稳定可靠嵌入式产品的核心前提。

很多刚入门嵌入式开发的工程师,在拿到一款新的主控芯片手册时,都会被里面五花八门的存储名词绕晕:片内SRAM、片外DRAM、Nor Flash、NAND Flash、SPI Flash、eMMC……这些不同的存储介质,看起来都能存数据,却有着完全不同的底层特性、成本区间和适用场景。很多新手做项目时,随便选了一款存储芯片就往上焊,等到量产阶段才发现擦写寿命不够、启动速度不达标、数据可靠性出问题,导致整个项目延期返工。嵌入式系统的存储选型从来不是“选容量最大的就好”,不同的存储介质从设计根源上就面向不同的使用场景,把它们的特性、边界和选型逻辑理清楚,是做出稳定可靠嵌入式产品的核心前提。

一、嵌入式存储的分层体系:速度、容量、成本的三角平衡

嵌入式系统的存储架构,本质上是一个典型的金字塔分层体系。越靠近金字塔顶端的存储介质,访问速度越快、单位容量的成本越高、容量上限越小;越往金字塔底端走,访问速度越慢、单位成本越低、能做到的容量上限越大。整个嵌入式系统的存储设计,本质上就是在速度、容量、成本这三个核心维度之间,找到最适配产品需求的平衡点。

最顶端的存储,就是CPU内核里的寄存器和高速缓存。这类存储完全集成在CPU内核芯片内部,访问延迟只有几个时钟周期,速度是全系统里最快的,但是容量极其有限,通常只有几十KB到几MB的规模,单位成本极其昂贵,专门用来存放CPU当前正在运算的指令和临时变量,普通开发者几乎不需要直接干预它的使用,全部由编译器和硬件自动调度。

往下一层,就是我们非常熟悉的RAM随机存取存储器。它的核心特性是易失性,断电之后所有数据都会完全消失,但是读写速度极快,几乎和CPU的运算速度匹配,没有任何擦写次数的限制,是嵌入式系统运行时的临时工作区,专门用来存放运行中的程序变量、堆栈和临时缓冲数据。

再往下的非易失性存储层,是整个嵌入式系统的固件和数据持久化载体,也是类型最多、选型最复杂的部分。从早期的Mask ROM、EPROM,到现在广泛使用的Nor Flash、SPI NAND、并行NAND,再到现在智能设备里几乎标配的eMMC,不同的非易失性存储介质,分别适配了从8位单片机到高端智能SOC的全场景嵌入式产品需求。

二、RAM家族:嵌入式系统的动态运行核心

嵌入式领域的RAM主要分为两大分支,分别是SRAM静态随机存储器和DRAM动态随机存储器,两者的底层原理和适用场景完全不同。

SRAM的核心原理是用6个晶体管组成的双稳态触发器来存储一位数据,不需要额外的刷新操作,只要不断电数据就会一直保持。它的访问延迟是纳秒级,速度极快,稳定性极强,但是因为每个bit都要占用6个晶体管,芯片的面积占用非常大,成本很高,很难做到大容量。所以SRAM几乎都用在低功耗、实时性要求极高的场景里:比如8位、16位的传统单片机,片内集成的几KB到几百KB的RAM几乎都是SRAM,用来跑RTOS实时系统,完全不需要额外的刷新控制电路,系统设计极其简单。很多高端MCU的内部缓存,也都是用SRAM实现的。

DRAM动态随机存储器,用一个晶体管加一个电容来存储一位数据,芯片的密度极高,单位容量的成本比SRAM低很多,很容易做到几百MB甚至几GB的大容量。它的核心缺点是电容会漏电,必须每隔一段时间就执行一次刷新操作,否则存储的数据就会丢失。嵌入式系统里最常用的DRAM类型就是DDR系列,从早期的DDR2、DDR3,到现在低功耗设备广泛使用的LPDDR4、LPDDR5,是高端嵌入式Linux设备的主内存首选。比如工业控制板、智能网关、车载娱乐系统这类需要跑完整Linux系统的设备,几乎全部用DDR作为系统主内存,用极低的成本就能获得几百MB的运行内存,完全满足多进程、图形界面的运行需求。

很多工程师在做低功耗嵌入式设备的时候,会特意选用自带大容量SRAM的MCU,省去外接DRAM的成本和控制电路复杂度,整体系统的待机功耗可以降到微安级别,非常适合电池供电的物联网节点产品。

三、非易失性存储家族:固件与持久数据的载体

非易失性存储是嵌入式产品里差异最大、坑最多的部分,不同类型的Flash存储,直接决定了产品的固件启动方式、数据可靠性和使用寿命。

Nor Flash是最早普及的可擦写非易失性存储,它的核心特性是支持字节级的随机读取,总线可以直接连接到CPU的地址总线上,CPU可以直接在Nor Flash上执行代码,不需要把代码拷贝到RAM里再运行,也就是行业里常说的XIP原地执行特性。它的天然可靠性极高,几乎不会出现位翻转的问题,不需要复杂的ECC纠错机制,启动代码存放在里面非常安全。但是它的擦写速度很慢,擦写次数通常在1万次到10万次之间,而且容量很难做大,单位容量的成本很高。所以Nor Flash几乎都用在低端单片机、工业控制设备里,用来存放Bootloader和固件程序,容量通常从几百KB到几十MB不等,是对启动可靠性要求极高场景的首选。

SPI NAND Flash是近几年嵌入式领域快速普及的存储类型,它基于串行SPI总线接口,成本极低,容量可以轻松做到几百MB到几GB,擦写次数普遍在几千次到几万次,比同容量的Nor Flash成本低一半以上。它的缺点是不支持XIP原地执行,CPU不能直接在上面运行代码,必须先把Bootloader拷贝到RAM里,再把后续的系统内核加载起来运行。现在大量的物联网WiFi模组、低功耗智能设备,都用SPI NAND替代传统的Nor Flash,在大幅降低物料成本的同时,还能获得大得多的存储空间,用来存放更多的资源文件和固件。

并行NAND Flash的容量可以做到几GB甚至几十GB,顺序读写速度比SPI NAND快很多,单位成本进一步下探,但是它的裸片天生需要配套ECC纠错、坏块管理、磨损均衡这些复杂的软件算法,对主控的驱动开发能力要求很高。早期的嵌入式Linux设备很多直接用裸NAND Flash接主控,工程师需要自己在驱动层实现整套闪存管理算法,开发难度很大,稍有不慎就会出现数据损坏的问题。

四、eMMC:高端嵌入式设备的标准化存储方案

为了解决裸NAND Flash开发难度大、不同厂商芯片兼容性差的问题,行业里推出了eMMC这种高度集成的标准化存储方案。它把NAND Flash裸片、闪存控制芯片、ECC纠错模块、磨损均衡算法、坏块管理机制全部封装在一个BGA芯片里面,对外只露出标准的eMMC总线接口。开发者完全不需要关心底层NAND的管理细节,只需要通过标准的总线命令就能完成读写操作,驱动开发的复杂度直接降到最低。

现在所有的智能手机、平板、智能车载系统、高端工业平板,几乎全部用eMMC作为主存储。它的容量可以轻松做到几十GB甚至上百GB,顺序读写速度可以达到几百MB每秒,完全可以流畅运行图形界面、高清视频播放这类重负载场景。而且eMMC的工业级版本可以在宽温环境下稳定运行,擦写寿命经过了厂商的优化,完全可以支撑工业设备5到10年的使用寿命,是高端嵌入式产品的首选大容量存储方案。

五、生产环境选型的核心原则与避坑指南

嵌入式存储选型绝对不是盲目追求大容量和高性能,而是要结合产品的实际场景需求来做决策。

如果你的产品是低功耗8位单片机物联网节点,代码量很小,对启动可靠性要求极高,优先选择片内集成大容量SRAM的MCU,搭配几MB的SPI Nor Flash,系统设计极其简单,稳定性极强。如果你的产品是中端物联网网关,需要跑嵌入式Linux系统,不需要太大的存储容量,优先选择SPI NAND Flash,在控制成本的同时获得足够的固件空间。如果你的产品是高端智能设备、车载系统,需要运行图形界面、存放大量多媒体资源,直接选择工业级eMMC,省去复杂的闪存管理开发,直接获得稳定可靠的大容量存储。

最关键的避坑点,就是绝对不要在工业级长寿命产品里使用消费级的TLC NAND,它的擦写寿命只有几百次,用不了一两年就会出现大量坏块,直接导致产品固件损坏变砖。一定要根据产品的设计使用寿命,选择对应擦写寿命等级的存储介质,同时在文件系统层面开启ECC纠错和掉电保护机制,避免意外断电导致的文件系统损坏。

嵌入式存储的选型逻辑,本质上就是在速度、容量、成本、可靠性四个维度之间,找到最适配产品场景的最优解。选对了存储方案,你的嵌入式产品才能在全生命周期里稳定运行,不会出现莫名其妙的存储类故障。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭