☰
嵌入式存储选型完全指南:DDR、NOR、NAND、eMMC、UFS到底怎么选?
2026/9/28 20:22:21 网站建设 项目流程

做嵌入式硬件设计,存储选型是绕不开的话题。

但很多人对各种存储的认知是模糊的:DDR和Flash有什么区别?NOR和NAND哪个好?eMMC和UFS差在哪?SPI NAND能不能替代eMMC?为什么有的产品用DDR+eMMC,有的用DDR+SPI NAND,还有的直接用MCU内置Flash?

这篇文章把嵌入式系统里常见的存储类型全部梳理一遍,从原理、参数、成本、适用场景四个维度讲清楚,最后给出选型决策方法。

一、先搞清楚:易失性 vs 非易失性

所有存储可以分成两大类,这是最基本的分类:

易失性存储(Volatile Memory): 断电数据就没了,速度快,用来做运行内存。代表是DRAM(DDR/LPDDR)。

非易失性存储(Non-Volatile Memory): 断电数据还在,速度相对慢,用来做代码和数据存储。

代表是Flash(NOR/NAND/eMMC/UFS)。

一个典型的嵌入式系统,两者都要有:

DRAM:程序运行时的内存,变量、栈、堆都在这里

Flash:程序代码、文件系统、用户数据存在这里

很多新手会问:能不能不用DRAM,直接在Flash上跑程序?答案是:可以,但只有NOR Flash支持XIP(Execute In Place,就地执行),NAND Flash和eMMC都不支持,必须把代码读到DRAM里才能运行。这也是为什么NOR Flash在某些低功耗、小容量场景下仍然不可替代。

二、DRAM:运行内存的选择

DRAM就是我们常说的"内存",嵌入式系统里常见的有这几种:

2.1 DDR3/DDR4:标准DIMM或颗粒

DDR3和DDR4是台式机/笔记本用的标准内存,嵌入式系统里也会用,尤其是x86架构的工业计算机。

DDR3:最高速率1600Mbps,电压1.5V(DDR3L是1.35V),目前主流是DDR3L

DDR4:最高速率3200Mbps,电压1.2V,比DDR3功耗低、速度快

适用场景:x86工业PC、高端边缘计算、需要大内存(8GB以上)的场景

封装:可以用DIMM插槽(方便更换),也可以直接焊颗粒(BOM成本低、更可靠)

2.2 LPDDR3/LPDDR4X/LPDDR5:低功耗移动内存

LPDDR是Low Power DDR,专为移动设备和嵌入式系统设计,功耗比标准DDR低很多。

LPDDR3:最高速率1600Mbps,电压1.2V,目前基本被淘汰

LPDDR4X:最高速率4266Mbps,电压0.6V(VDDQ),目前的主流选择

LPDDR5/5X:最高速率6400Mbps(LPDDR5X可达8533Mbps),电压0.5V,新一代产品

适用场景:ARM架构嵌入式设备、工业网关、边缘计算、手持设备、汽车电子

封装:FBGA封装,直接焊在PCB上,不能更换

2.3 怎么选DRAM?

选型原则:

x86平台:优先DDR4,兼容性好、成本低、容量大

ARM平台(瑞芯微、全志、NXP等):优先LPDDR4X,成熟稳定、性价比高

高端AI/视频处理:考虑LPDDR5,带宽更高,但要确认SoC是否支持

不要盲目追新:LPDDR5虽然快,但很多SoC还不支持,而且成本高、供货不稳定

三、Flash:代码和数据存储的选择

Flash是非易失性存储,嵌入式系统里用来存代码、文件系统、用户数据。常见的Flash类型很多,逐个讲。

3.1 NOR Flash:小容量、XIP、高可靠性

NOR Flash是最早的Flash类型,特点是:

XIP支持:可以直接在Flash上执行代码,不需要读到DRAM

随机读快:读延迟低,适合存代码

擦写慢:按块擦除,擦除时间长(几十毫秒到几百毫秒)

容量小:常见1MB~256MB,很少有1GB以上的

成本高:每GB成本比NAND高很多

寿命长:擦写次数10万次以上(SLC NOR)

适用场景:

MCU的代码存储(SPI NOR,几MB到几十MB)

低功耗设备,需要快速启动、不需要大内存

高可靠性场景,代码不能出错

存储启动代码(Bootloader),即使NAND坏了也能启动

常见型号: W25Q系列(华邦)、MX25系列(旺宏)、GD25系列(兆易创新),都是SPI接口的NOR Flash。

3.2 NAND Flash:大容量、低成本、需要控制器

NAND Flash是目前大容量存储的主流,特点是:

不支持XIP:必须把代码读到DRAM才能运行

顺序读快:连续读取速度快,随机读慢

擦写快:按块擦除,比NOR快

容量大:常见1GB~256GB,甚至更大

成本低:每GB成本远低于NOR

有坏块:出厂就有坏块,使用过程中也会产生坏块,需要坏块管理

需要ECC:必须做错误校验和纠正,否则数据会出错

NAND Flash按存储单元类型分:

SLC:1bit/cell,寿命长(10万次)、速度快、可靠性高、成本高

MLC:2bit/cell,寿命中等(3000~1万次)、成本中等

TLC:3bit/cell,寿命较短(1000~3000次)、成本低、目前主流

QLC:4bit/cell,寿命短(100~1000次)、成本最低、大容量产品用

适用场景:

大容量数据存储(文件系统、用户数据、固件)

配合DRAM使用,代码从NAND读到DRAM运行

消费电子、工业设备、汽车电子的主存储

注意: 原始NAND Flash颗粒不能直接用,必须配合控制器(做ECC、坏块管理、磨损均衡),或者用集成了控制器的eMMC/UFS。直接用原始NAND的门槛很高,一般只有大厂才做。

3.3 eMMC:NAND+控制器,标准化接口

eMMC(embedded MultiMediaCard)是把NAND Flash颗粒和控制器封装在一颗芯片里,提供标准化的MMC接口。

集成控制器:内置ECC、坏块管理、磨损均衡,用户不用管

标准化接口:MMC接口,8位数据总线,最高速率HS400(400MB/s)

容量:常见4GB~256GB

成本:比原始NAND高,但比自己做控制器划算

可靠性:比原始NAND高,因为控制器做了管理

供货:标准化产品,多家供应商可选

适用场景:

中高端嵌入式设备的主存储

运行Linux/Android系统,需要文件系统

不想自己做NAND控制器的团队

常见型号: 三星、金士顿、西部数据、江波龙、佰维等都有eMMC产品。工业级eMMC会用SLC或pSLC模式,寿命更长、温度范围更宽。

3.4 UFS:eMMC的升级版,高速串行

UFS(Universal Flash Storage)是eMMC的替代标准,用高速串行接口,性能比eMMC高很多。

高速串行接口:UFS 2.1最高1166MB/s,UFS 3.1最高2332MB/s,UFS 4.0更高

全双工:读写可以同时进行,eMMC是半双工

命令队列:支持多个命令排队,随机性能好

容量:常见16GB~512GB

成本:比eMMC高

功耗:比eMMC低(高速串行,电压低)

适用场景:

高端手机、平板(目前主流)

高端嵌入式设备、汽车电子(正在普及)

需要高随机读写性能的场景(数据库、AI推理)

注意: UFS需要SoC支持UFS接口,很多中低端SoC还不支持。而且UFS的PCB Layout要求更高(高速串行信号),设计难度比eMMC大。

3.5 SPI NAND:SPI接口的NAND,低成本方案

SPI NAND是用SPI接口的NAND Flash,介于SPI NOR和eMMC之间。

SPI接口:和SPI NOR一样的接口,引脚少、布线简单

容量大:常见128MB~4GB,比SPI NOR大很多

成本低:比同容量SPI NOR便宜很多

需要ECC:部分SPI NAND内置ECC,部分需要SoC做ECC

有坏块:需要坏块管理,比NOR麻烦

速度慢:SPI接口速度有限,比eMMC慢

适用场景:

成本敏感的中低端设备

容量需求比SPI NOR大,但不需要eMMC那么大

简单的文件系统或数据存储

配合小容量DRAM使用

常见型号: 兆易创新GD5F系列、华邦W25N系列、旺宏MX35系列。

3.6 各种Flash对比

四、典型组合方案

实际产品中,DRAM和Flash是组合使用的。几种典型的组合:

方案1:MCU内置Flash + 外置SPI NOR

DRAM:MCU内置SRAM(几十KB到几MB)

Flash:MCU内置Flash + 外置SPI NOR(扩展存储)

适用:简单MCU应用,不需要跑操作系统

成本:最低

例子:STM32 + W25Q128(16MB SPI NOR)

方案2:小容量DRAM + SPI NAND

DRAM:LPDDR3或DDR3,64MB~256MB

Flash:SPI NAND,128MB~2GB

适用:成本敏感的中低端设备,跑简单Linux

成本:低

例子:全志F1C100S(内置DDR)+ GD5F1GQ4(128MB SPI NAND)

方案3:LPDDR4X + eMMC(最主流)

DRAM:LPDDR4X,1GB~8GB

Flash:eMMC,8GB~128GB

适用:中高端嵌入式设备,跑Linux/Android

成本:中

例子:瑞芯微RK3568 + LPDDR4X 4GB + eMMC 32GB

方案4:LPDDR5 + UFS(高端)

DRAM:LPDDR5,4GB~16GB

Flash:UFS 3.1,64GB~256GB

适用:高端边缘计算、AI推理、汽车电子

成本:高

例子:瑞芯微RK3588 + LPDDR5 8GB + UFS 3.1 128GB

方案5:DDR4 + SATA SSD/NVMe(x86)

DRAM:DDR4,4GB~32GB

Flash:SATA SSD或NVMe SSD,128GB~1TB

适用:x86工业PC、高端边缘计算

成本:中高

例子:Intel/AMD x86 + DDR4 8GB + SATA SSD 256GB

五、选型决策方法

面对具体项目,怎么选存储?按这个步骤来:

第一步:确定系统架构

x86还是ARM?→ x86优先DDR4+SSD,ARM优先LPDDR+eMMC/UFS

用什么SoC?→ 看SoC支持哪些存储接口,不要选SoC不支持的

第二步:确定容量需求

DRAM:跑什么系统?Linux最小64MB,Android最小1GB,AI推理建议4GB以上

Flash:固件多大?用户数据多少?系统镜像一般2~8GB,用户数据按需

第三步:确定性能需求

启动时间要求?→ 要求快启动选UFS或eMMC,不要求可以选SPI NAND

随机读写性能?→ 数据库、AI推理选UFS,顺序读写eMMC够用

带宽需求?→ 视频处理、AI选LPDDR5,一般应用LPDDR4X够用

第四步:确定可靠性和温度要求

工业级(-40~85℃)?→ 选工业级颗粒,eMMC选pSLC模式,不要用消费级

车规级(-40~105℃)?→ 选AEC-Q100认证的颗粒,UFS优先

7×24小时运行?→ 选高寿命颗粒(SLC/pSLC),做好磨损均衡

第五步:确定成本预算

成本敏感?→ SPI NAND + 小容量DRAM,或者用内置Flash的MCU

成本不敏感、追求性能?→ LPDDR5 + UFS

性价比最优?→ LPDDR4X + eMMC,目前最均衡的组合

六、常见误区

误区1:容量越大越好

错。DRAM和Flash的容量要匹配需求,太大浪费成本,太小影响性能。比如跑简单Linux,1GB DRAM足够,没必要上4GB。存储也是,固件只有200MB,没必要选64GB eMMC。

误区2:速度越快越好

错。速度越快,成本越高、设计难度越大、功耗越高。如果应用就是个简单的工业网关,eMMC完全够用,没必要上UFS。UFS的高速串行信号对PCB Layout要求很高,设计不好反而出问题。

误区3:NOR Flash过时了

错。NOR Flash在小容量、XIP、高可靠性场景下仍然不可替代。很多产品的Bootloader还是存在SPI NOR里,即使主存储是eMMC。因为NOR Flash的可靠性高,即使eMMC坏了,Bootloader还能运行,可以做恢复。

误区4:eMMC和UFS可以随便换

错。eMMC是并行接口,UFS是串行接口,引脚定义完全不同,不能Pin-to-Pin替换。设计的时候要选好,后期想换就要改PCB。而且UFS需要SoC支持,很多中低端SoC只有eMMC接口,没有UFS。

误区5:工业级就是温度范围宽

不全对。工业级存储不只是温度范围宽,还包括:更严格的筛选、更长的寿命(pSLC模式)、更稳定的供货、更详细的测试报告。只看温度范围是不够的,还要看擦写寿命、数据保持时间、失效率等指标。

七、总结

嵌入式存储选型,核心就三句话:

1. DRAM看架构和带宽:x86用DDR4,ARM用LPDDR4X,高端AI用LPDDR5

2. Flash看容量和成本:小容量代码用SPI NOR,大容量数据用eMMC,高端用UFS,成本敏感用SPI NAND

3. 组合看场景:MCU用内置Flash+SPI NOR,中低端用小DRAM+SPI NAND,主流用LPDDR4X+eMMC,高端用LPDDR5+UFS

存储选型没有"最好",只有"最合适"。根据项目的需求、预算、可靠性要求,选最合适的组合,才是正确的做法。

有存储选型相关的问题,欢迎评论区交流!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询