一、基础概念
1. NOR Flash
- 命名来源:采用“非或门”(NOR Gate)电路结构。
- 特点:地址线与数据线直接映射,支持随机访问。
- 用途:适用于需要频繁读取的固件、代码存储,如Bootloader、BIOS等。
2. NAND Flash
- 命名来源:采用“非与门”(NAND Gate)电路结构。
- 特点:基于块和页的访问方式,顺序访问效率高。
- 用途:适合数据量大、写入频繁的存储,如SSD、eMMC、UFS、USB盘等。
二、技术原理与结构对比
| 特性 |
NOR Flash |
NAND Flash |
| 存储结构 |
每个bit有独立的地址线,接近SRAM |
以页(Page)为最小读单位、块(Block)为擦除单位 |
| 寻址方式 |
直接地址映射(随机访问) |
基于控制器管理的逻辑寻址(页/块访问) |
| 读取方式 |
字节/字随机读取 |
页为单位顺序读取(一般2048~16384字节) |
| 写入方式 |
字节/字节写入 |
页写入,不能在页内覆盖写,必须先擦除整个块 |
| 擦除方式 |
大多以扇区(Sector)为单位(如64KB) |
以块为单位(一般128KB~2MB) |
| 读写速度 |
快速随机读取,写入慢 |
写入快、顺序读快,随机访问较慢 |
| 擦写寿命 |
一般10万次/扇区 |
一般3000~10000次/块(MLC),SLC更高 |
| 容量 |
通常小(几MB~百MB) |
容量大(数百MB~数TB) |
| 成本 |
单位成本高 |
单位成本低 |
| 可靠性 |
高,适合关键代码存储 |
依赖ECC和Wear Leveling机制维护可靠性 |
三、典型产品和接口标准
| 类型 |
典型接口 |
举例芯片 |
特点 |
| SPI NOR Flash |
SPI/QSPI |
Winbond W25Q系列、MXIC MX25系列 |
常用于嵌入式MCU代码存储,容量小、可靠性高 |
| Parallel NOR Flash |
平行总线 |
Cypress S29GLxxx系列 |
传统使用在高端MCU或DSP系统 |
| Raw NAND |
ONFI接口 |
Micron MT29F、Toshiba TC58NVG系列 |
需要外部控制器或NAND驱动 |
| eMMC(嵌入式多媒体卡) |
JEDEC标准接口 |
Samsung eMMC, SanDisk iNAND |
内部集成控制器,兼容性强,容量高 |
| UFS(通用闪存存储) |
MIPI M-PHY + UniPro |
Samsung UFS, Kioxia |
高速、低功耗,替代eMMC的新主流 |
| SPI NAND Flash |
SPI |
GigaDevice GD5F、MXIC MX35 |
面向中低速MCU,介于NOR与Raw NAND之间 |
四、应用场景对比分析
| 应用场景 |
推荐存储类型 |
原因 |
| 启动存储(Boot ROM/Loader) |
NOR Flash(尤其是SPI NOR) |
支持字节随机读取,掉电保持,可靠性高 |
| 嵌入式固件存储(MCU Firmware) |
SPI NOR Flash / SPI NAND(容量大时) |
依赖频繁读取,代码执行(XIP)需要随机读取 |
| 数据记录(日志、传感器数据) |
NAND Flash(Raw NAND / SPI NAND) |
擅长大容量顺序写入,成本低 |
| 操作系统 / 应用存储(Linux文件系统) |
eMMC / UFS / Raw NAND(配FTL) |
容量大、访问频繁,需要支持文件系统管理 |
| 消费电子 / 手机存储 |
UFS / eMMC |
高速、高密度、低功耗需求 |
五、设计选型建议(工程视角)
✅ 使用 NOR Flash 的考虑:
- 固件小于几十MB;
- 系统需支持 XIP(Execute In Place);
- 启动时间和启动稳定性非常关键;
- 总线简单(如SPI),MCU带有BootROM支持;
例子:STM32 启动代码存储在 W25Q128 SPI NOR Flash 中;FPGA配置文件加载。
✅ 使用 NAND Flash 的考虑:
- 数据存储为主,容量要求大;
- 成本敏感;
- MCU/MPU配有NAND控制器和FTL支持(如Linux+MTD);
例子:智能摄像头中将录像保存在 SPI NAND / Raw NAND 中;工业网关设备的文件系统。
✅ 使用 eMMC/UFS 的考虑:
- 应用层运行完整操作系统(Linux、Android);
- 高IO性能要求(多线程访问、数据库);
- 成本允许,集成控制器节省开发成本;
例子:智能手机、智能音箱、车载IVI系统使用UFS;单板机如 Raspberry Pi 使用 eMMC。
六、寿命与可靠性管理机制(NAND 专属)
- ECC(错误校验码):NAND容易发生bit翻转,ECC用于数据恢复;
- Wear-Leveling:平均擦写次数,防止局部块损坏;
- Bad Block Management:每片NAND出厂自带坏块表,需软件绕过;
- FTL(Flash Translation Layer):在eMMC/UFS等封装内实现逻辑地址映射,屏蔽物理特性。
七、总结表格(关键差异一图掌握)
| 特性 |
NOR Flash |
NAND Flash |
| 随机访问 |
快 |
慢 |
| 顺序访问 |
一般 |
快 |
| 写入 |
字节写入 |
页写入(需先擦除块) |
| 擦除单位 |
扇区(小) |
块(大) |
| 容量 |
小(<1Gb) |
大(GB~TB) |
| 成本 |
高 |
低 |
| 使用场景 |
启动、代码存储 |
数据、系统、文件存储 |