硬件面试八股(1)-存储专题
资料整理方向:结合 公开资料中的常见讲法,并用 Micron、Winbond、SD Association 等厂商/标准资料校正关键概念。本文适合硬件开发工程师面试前复习,重点放在分类、接口协议、器件特性、选型逻辑和常见问答。
1. 一句话总览
硬件里的“存储”可以按两条主线理解:
- 按是否掉电保存:易失性存储 RAM,非易失性存储 ROM / EEPROM / Flash / FRAM / MRAM 等。
- 按系统位置和用途:片内 SRAM / Cache、外部 DDR 运行内存、启动 Flash、参数存储 EEPROM / FRAM、大容量数据存储 NAND / eMMC / UFS / SD 卡 / SSD。
面试中不要只背“RAM 掉电丢失、ROM 掉电不丢失”,还要说明:
- 用在哪里;
- 为什么选它;
- 接口是什么;
- 读写/擦除粒度是什么;
- 是否需要 ECC、坏块管理、磨损均衡;
- 对启动、成本、容量、可靠性的影响。
2. 存储器分类
2.1 按掉电是否保存
| 类型 | 是否掉电保存 | 常见器件 | 典型用途 |
|---|---|---|---|
| 易失性存储 | 否 | SRAM、DRAM、SDRAM、DDR、LPDDR | 程序运行、缓存、帧缓存、堆栈 |
| 非易失性存储 | 是 | ROM、OTP、EEPROM、NOR Flash、NAND Flash、eMMC、UFS、FRAM、MRAM | 启动代码、固件、参数、文件系统、日志 |
2.2 按访问方式
| 类型 | 说明 | 例子 |
|---|---|---|
| 随机访问 | 可以按地址较灵活访问,适合代码执行或内存映射 | SRAM、DRAM、NOR Flash |
| 页/块访问 | 通常按页读写、按块擦除,适合大容量数据 | NAND Flash |
| 串行访问/命令访问 | 通过命令帧、地址、数据阶段访问 | SPI Flash、I2C EEPROM、SD 卡 |
| 托管块设备 | 内部带控制器,主机看到的是逻辑块地址 | eMMC、UFS、SD 卡、SSD |
2.3 按系统层级
| 层级 | 速度 | 容量 | 成本 | 例子 |
|---|---|---|---|---|
| CPU 寄存器 | 最高 | 最小 | 最高 | 通用寄存器、特殊功能寄存器 |
| Cache | 很高 | 小 | 高 | L1/L2/L3 Cache,通常为 SRAM |
| 片内 SRAM | 高 | 小到中 | 较高 | MCU 内部 SRAM |
| 外部 DRAM/DDR | 中高 | 中到大 | 中 | DDR3/DDR4/LPDDR |
| 非易失 Flash | 中低 | 中到大 | 低到中 | NOR、NAND、eMMC、UFS |
| 外部大容量存储 | 较低到中 | 大 | 低 | SD 卡、SSD、U 盘 |
3. 常见存储类型
3.1 SRAM
特点
- 静态随机存取存储器,不需要周期性刷新。
- 速度快,常用于 Cache、MCU 片内 RAM、FIFO、DMA 缓冲。
- 容量较小,单位面积成本高,掉电数据丢失。
面试表达
SRAM 速度快、不需要刷新,适合做片内运行内存、缓存和实时数据缓冲;缺点是面积大、成本高、容量通常不大,掉电后数据丢失。
3.2 DRAM / SDRAM / DDR / LPDDR
特点
- DRAM 用电容存储电荷,需要刷新。
- SDRAM 是同步 DRAM,读写和系统时钟同步。
- DDR 在时钟上升沿和下降沿都传输数据。
- LPDDR 偏低功耗,常见于移动设备、嵌入式 Linux 产品。
硬件关注点
- 数据线位宽:x8 / x16 / x32。
- 地址线、Bank、行列地址复用。
- 时钟、DQS、阻抗匹配、走线等长、端接。
- 初始化时序、刷新周期、频率裕量。
面试表达
DDR 主要作为系统运行内存,容量大、带宽高,但设计复杂,需要控制器初始化、刷新管理和严格的 PCB 时序设计。
3.3 ROM / PROM / EPROM / EEPROM / OTP
| 类型 | 特点 | 常见用途 |
|---|---|---|
| Mask ROM | 出厂时固化,后续不可改 | 大批量固定程序 |
| PROM | 一次可编程 | 固定配置 |
| OTP | One-Time Programmable,一次烧录 | 芯片 ID、密钥、校准值 |
| EPROM | 可紫外擦除,较老 | 早期设备 |
| EEPROM | 电擦写,字节/页级更新 | 参数、校准值、设备地址 |
EEPROM 面试重点
- 掉电保存;
- 容量小;
- 擦写寿命有限;
- 常见接口为 I2C / SPI;
- 适合低频更新的配置参数,不适合频繁日志。
3.4 Flash 总览
Flash 本质上属于可电擦写的非易失性存储,常见分为:
- NOR Flash:适合代码存储、启动、XIP。
- NAND Flash:适合大容量数据、文件系统、日志。
- SPI NOR / QSPI NOR / Octal SPI NOR:常见启动 Flash。
- SPI NAND / Raw NAND:外部 NAND,需要 ECC / 坏块管理。
- Managed NAND:内部集成控制器,如 eMMC、UFS、SD NAND、SD 卡、SSD。
4. NOR Flash
4.1 典型使用场景
- Bootloader;
- MCU 外部程序存储;
- SoC 启动镜像;
- BIOS / 固件;
- 小容量配置数据;
- 支持 XIP 的代码执行场景。
4.2 特点
| 维度 | NOR Flash |
|---|---|
| 访问方式 | 随机读取能力强 |
| 代码执行 | 可支持 XIP |
| 容量 | 通常小于 NAND |
| 成本 | 单位容量成本高 |
| 可靠性 | 较高,坏块问题少 |
| 写入/擦除 | 擦除较慢,通常扇区/块擦除 |
| 接口 | 并行 NOR、SPI NOR、QSPI NOR、Octal SPI NOR |
4.3 常见操作
- Read:读数据;
- Page Program:页编程,常见页大小如 256 Byte;
- Sector Erase:扇区擦除,常见 4 KB;
- Block Erase:块擦除,常见 32 KB / 64 KB;
- Chip Erase:整片擦除;
- Write Enable:写/擦前通常要先置位写使能;
- Status Register:查询 WIP/WEL、保护位等状态。
4.4 面试表达
我用 NOR Flash 主要是做启动和固件存储,比如 SPI NOR / QSPI NOR 存 Bootloader 或 MCU 外部程序。NOR 的优势是随机读取快、可靠性高、可以支持 XIP;缺点是容量相对小、单位容量成本高、擦写速度和大容量存储能力不如 NAND。
5. NAND Flash
5.1 典型使用场景
- Linux 文件系统;
- 系统镜像;
- 日志、图片、音视频;
- 大容量数据缓存;
- U 盘、SD 卡、eMMC、UFS、SSD 的底层存储介质。
5.2 特点
| 维度 | NAND Flash |
|---|---|
| 访问方式 | 页读写、块擦除 |
| 容量 | 大 |
| 成本 | 单位容量低 |
| 写入/擦除 | 适合连续大数据写入 |
| 可靠性 | 有坏块、位翻转,需要管理 |
| 必要机制 | ECC、坏块管理、磨损均衡、垃圾回收 |
| 接口 | Raw NAND、SPI NAND、ONFI、Toggle、eMMC、UFS、SD |
5.3 SLC / MLC / TLC / QLC
| 类型 | 每单元存储 bit | 寿命/可靠性 | 容量/成本 | 应用 |
|---|---|---|---|---|
| SLC | 1 | 最高 | 容量低、成本高 | 工业、车载、关键数据 |
| MLC | 2 | 中 | 中 | 消费电子、嵌入式 |
| TLC | 3 | 较低 | 容量大、成本低 | 手机、SSD、存储卡 |
| QLC | 4 | 更低 | 容量更大、成本更低 | 大容量读多写少场景 |
5.4 Raw NAND 与 Managed NAND
| 类型 | 主机需要做什么 | 例子 |
|---|---|---|
| Raw NAND | 主机/驱动负责 ECC、坏块管理、磨损均衡、文件系统适配 | 并行 NAND、SPI NAND |
| Managed NAND | 芯片内部控制器负责大部分 Flash 管理,主机按块设备访问 | eMMC、UFS、SD 卡、SSD |
5.5 面试表达
NAND Flash 更适合大容量数据存储,例如文件系统、日志和系统镜像。它的优势是容量大、成本低、写入和擦除效率高;缺点是不能像 NOR 一样直接随机执行代码,存在坏块和位翻转,通常需要 ECC、坏块管理、磨损均衡和文件系统配合。
6. NOR Flash 和 NAND Flash 对比
| 对比项 | NOR Flash | NAND Flash |
|---|---|---|
| 主要定位 | 代码存储、启动 | 大容量数据存储 |
| 读取方式 | 随机读能力强 | 页/块方式更典型 |
| 是否适合 XIP | 适合 | 通常不适合 |
| 容量 | 小到中 | 大 |
| 单位容量成本 | 高 | 低 |
| 写入速度 | 一般 | 较好 |
| 擦除速度 | 相对慢 | 较快 |
| 坏块 | 少,通常不强调 | 常见,需要管理 |
| ECC | 简单场景可不需要强 ECC | 通常需要 |
| 典型接口 | SPI/QSPI/OSPI、并行 NOR | Raw NAND、SPI NAND、ONFI、eMMC、UFS |
| 典型应用 | Bootloader、BIOS、固件 | 文件系统、日志、图片、音视频、SSD |
最常用总结
NOR 偏“启动和代码”,NAND 偏“大容量数据”。
NOR 适合直接读代码,NAND 适合低成本大容量存储。
7. 常见存储接口与协议
7.1 I2C EEPROM / I2C FRAM
特点
- 两线接口:SCL、SDA;
- 地址简单,硬件资源占用少;
- 速率相对较低;
- 适合存设备参数、序列号、校准值;
- EEPROM 写入有页写和写周期等待,FRAM 写入更快、寿命更高。
面试点
I2C EEPROM 适合少量参数保存,不适合高频写日志;如果参数频繁更新,可以考虑 FRAM 或做磨损均衡。
7.2 SPI NOR
信号
- CS;
- CLK;
- MOSI / MISO;
- WP / HOLD,或复用为 IO2 / IO3。
特点
- 引脚少、驱动简单;
- 常见于 MCU 外挂 Flash;
- 支持标准 SPI、Dual SPI、Quad SPI;
- QSPI 可提高读取带宽,常用于 XIP 或代码搬运到 RAM。
7.3 QSPI / OSPI / xSPI
| 接口 | 数据线 | 特点 |
|---|---|---|
| SPI | 1 bit | 简单,速度较低 |
| Dual SPI | 2 bit | 速度提升 |
| QSPI | 4 bit | 常见 MCU/SoC 启动 Flash |
| Octal SPI / OSPI | 8 bit | 更高吞吐,部分支持 DTR |
| xSPI | 标准化高速串行 Flash 接口方向 | 面向高性能 NOR / PSRAM 等 |
面试点
QSPI 不是一种新的存储介质,而是 SPI Flash 的一种高速访问接口。它通过 4 根 IO 线并行传输数据,常用于外部 NOR Flash 启动和 XIP。
7.4 并行 NOR / 并行 NAND
并行 NOR
- 地址线、数据线较多;
- 可类似内存总线访问;
- 早期嵌入式系统常见;
- PCB 引脚资源占用大。
并行 NAND
- 以命令、地址、数据方式访问;
- 常见信号包括 CLE、ALE、CE、RE、WE、R/B;
- 主控需要 NAND 控制器、ECC、坏块管理支持。
7.5 SD / SDIO / TF 卡
SD 卡模式
- 支持 SD 模式和 SPI 模式;
- SD 模式常见 1-bit / 4-bit 数据线;
- SPI 模式接线简单,但性能和功能受限;
- TF 卡即 microSD,更多是物理尺寸差异。
SDIO
- SDIO 更偏外设扩展协议;
- 常用于 Wi-Fi、蓝牙、GPS 等模块;
- 不等同于普通 SD 存储卡,但电气和总线思想相近。
7.6 eMMC
定义
eMMC = NAND Flash + 控制器 + 标准 MMC 接口 + 标准封装。
特点
- 主机不直接管理 NAND 物理细节;
- 内部控制器处理 ECC、坏块管理、磨损均衡;
- 接口一般为 CLK、CMD、DAT0-DAT7;
- 常见于嵌入式 Linux、网关、工业板卡、消费电子。
面试表达
eMMC 本质上是托管 NAND。相比 Raw NAND,它降低了软件和硬件开发难度;相比 SD 卡,它是板载焊接器件,可靠性和一致性通常更适合量产产品。
7.7 UFS
特点
- Universal Flash Storage;
- 相比 eMMC,UFS 更接近高速串行全双工架构;
- 带宽高、命令队列能力强;
- 常用于手机、车载、高性能嵌入式设备。
面试点
eMMC 更像传统并行 MMC 总线的嵌入式存储,UFS 更像高速串行存储,性能和并发能力更强,但成本、设计复杂度也更高。
7.8 SATA / PCIe NVMe / USB
| 接口 | 常见设备 | 特点 |
|---|---|---|
| SATA | SATA SSD、硬盘 | 成熟,吞吐中等 |
| PCIe NVMe | 高速 SSD | 低延迟、高带宽 |
| USB MSC | U 盘、移动存储 | 即插即用,协议栈复杂 |
8. 文件系统与 Flash 管理
8.1 为什么 Flash 需要特殊文件系统
Flash 的几个特性决定了它不能完全像普通 RAM 一样用:
- 擦除前才能重新写;
- 擦除粒度大于写入粒度;
- 擦写寿命有限;
- NAND 有坏块;
- 掉电可能导致写入中断。
8.2 常见文件系统/管理层
| 名称 | 常见场景 |
|---|---|
| FAT/exFAT | SD 卡、U 盘,跨平台 |
| LittleFS | MCU 小型 Flash,掉电保护较好 |
| JFFS2 | Raw Flash,较老的嵌入式 Linux 场景 |
| YAFFS2 | NAND Flash |
| UBIFS + UBI | Raw NAND 较常见,UBI 管理坏块和磨损 |
| ext4 | eMMC、UFS、SSD 等块设备 |
8.3 ECC、坏块管理、磨损均衡
ECC
- 用于发现并纠正 bit error;
- NAND 通常必须考虑;
- 可以由 NAND 控制器、eMMC/UFS 内部控制器或软件实现。
坏块管理
- NAND 出厂可能已有坏块;
- 使用中也可能产生新坏块;
- 系统需要识别、跳过、替换坏块。
磨损均衡
- 避免频繁擦写同一物理块;
- 延长 Flash 寿命;
- 托管 NAND 内部通常自带,Raw NAND 需要主机侧处理。
9. 硬件设计关注点
9.1 原理图关注
- 电源电压是否匹配:1.8 V / 3.3 V;
- IO 电平是否兼容;
- 上拉/下拉、WP/HOLD/RESET 管脚状态;
- 启动模式绑带与 BootROM 支持;
- 片选数量和地址冲突;
- 是否需要电源时序控制;
- 是否需要写保护、防误擦保护。
9.2 PCB 关注
- SPI/QSPI 走线尽量短;
- 高速 DDR、UFS、PCIe 需要阻抗控制和等长;
- 时钟线注意串扰和参考地;
- BGA 封装关注扇出、过孔、焊盘可靠性;
- 存储器靠近主控,尤其是 DDR 和高速 Flash;
- 注意 ESD、热设计和量产可测试性。
9.3 软件/调试关注
- JEDEC ID / 设备 ID 是否读对;
- 读写擦命令是否匹配;
- 页大小、扇区大小、块大小是否配置正确;
- 写前是否执行 Write Enable;
- 擦写后是否轮询 WIP/Busy;
- 地址模式是 3 Byte 还是 4 Byte;
- QSPI dummy cycle 是否配置正确;
- NAND ECC 强度是否满足;
- 文件系统是否支持掉电保护。
10. 面试常用问题与参考回答
Q1:你用过哪些存储类型?
回答模板
我用过片内 SRAM、外部 DDR、I2C EEPROM、SPI NOR Flash、NAND/eMMC、SD 卡等。SRAM 主要用于运行时变量和 DMA 缓冲;DDR 用作系统运行内存;EEPROM 保存设备参数和校准值;SPI NOR 常用于 Bootloader 或固件存储;eMMC/SD 卡用于文件系统、日志和大容量数据。
Q2:RAM 和 ROM 区别?
RAM 是易失性存储,掉电数据丢失,主要用于程序运行;ROM 或更广义的 NVM 是非易失性存储,掉电保存,主要用于存放程序、固件、配置和数据。工程上还要区分 SRAM、DRAM、EEPROM、Flash 等具体类型。
Q3:SRAM 和 DRAM 区别?
SRAM 不需要刷新,速度快、成本高、容量小,常用于 Cache 和片内 RAM。DRAM 需要刷新,容量大、单位成本低,常用于系统主存,如 DDR/LPDDR。
Q4:EEPROM 和 Flash 区别?
EEPROM 通常支持较小粒度的擦写,适合少量参数频繁但低速地更新;Flash 容量更大,通常按页写、按块或扇区擦,适合固件和数据存储。EEPROM 常见 I2C/SPI 接口,Flash 常见 SPI/QSPI、NAND、eMMC 等接口。
Q5:NOR Flash 和 NAND Flash 区别?
NOR 适合代码存储和启动,随机读能力强,可支持 XIP,可靠性较高,但容量小、成本高。NAND 适合大容量数据存储,容量大、成本低、写擦效率高,但存在坏块和位错误,需要 ECC、坏块管理和磨损均衡。
Q6:什么是 XIP?
XIP 是 Execute In Place,指 CPU 可以直接从非易失存储器中取指执行代码,不必先整体搬运到 RAM。NOR Flash,尤其是并行 NOR 或 QSPI NOR,常用于 XIP。NAND 通常不适合 XIP。
Q7:为什么 NAND 需要 ECC?
NAND 存储密度高,容易出现 bit error,并且随着擦写次数增加错误概率会上升。ECC 用来检测并纠正错误位,保证数据可靠性。Raw NAND 通常需要主控或软件提供 ECC,eMMC/UFS 内部控制器通常已集成。
Q8:什么是坏块管理?
NAND Flash 可能出厂就有坏块,使用中也会产生新坏块。坏块管理就是识别坏块、记录坏块、避免写入坏块,并使用备用块替换,保证上层看到的逻辑地址连续可靠。
Q9:什么是磨损均衡?
Flash 擦写寿命有限,如果一直擦写同一块,会很快损坏。磨损均衡通过把写入分散到不同物理块,让各块擦写次数更均匀,从而延长寿命。
Q10:eMMC 和 NAND Flash 有什么关系?
eMMC 底层通常是 NAND Flash,但它内部集成了控制器,对外提供标准 MMC 接口。主机不用直接处理 NAND 的 ECC、坏块和磨损均衡。可以理解为 eMMC 是“托管 NAND”。
Q11:eMMC 和 SD 卡区别?
二者都可以基于 NAND,并且协议有历史关联。eMMC 是板载焊接器件,适合量产嵌入式产品;SD/TF 卡是可插拔存储,适合扩展、升级包、日志导出。eMMC 的一致性和可靠性通常更好,SD 卡更方便更换。
Q12:eMMC 和 UFS 区别?
eMMC 是基于 MMC 思路的嵌入式存储,接口相对传统;UFS 使用高速串行链路,支持更高吞吐和更好的并发能力。UFS 性能更强,但成本和硬件设计复杂度更高。
Q13:SPI、QSPI、OSPI 区别?
SPI 通常单线输入输出,QSPI 使用 4 根 IO 线提高吞吐,OSPI 使用 8 根 IO 线,部分器件还支持 DTR。它们更多是接口宽度和时序能力的差异,不代表存储介质本身不同。
Q14:Flash 为什么写之前要擦除?
Flash 编程通常只能把某些 bit 从擦除态改为编程态,不能随意把 bit 改回去。要恢复到擦除态必须执行擦除操作,而擦除粒度通常是扇区或块。
Q15:SPI Flash 写入为什么要分页?
SPI NOR 通常有页编程限制,比如一页 256 Byte。跨页写入时需要拆成多次 Page Program,否则可能回卷或写入失败。写入前还要 Write Enable,并在写入后轮询 Busy 状态。
Q16:存储器选型看哪些参数?
我会看容量、接口、带宽、读写延迟、擦写寿命、数据保持时间、工作温度、电压、封装、成本、供货周期、启动支持、ECC/坏块管理需求、文件系统支持和量产烧录方式。
Q17:Bootloader 一般放在哪里?
小型 MCU 或 SoC 常把 Bootloader 放在片内 Flash 或外部 SPI/QSPI NOR。复杂 Linux 系统也可能从 NOR、NAND、eMMC、SD 卡、UFS 启动,具体取决于芯片 BootROM 支持的启动源和产品可靠性要求。
Q18:参数保存用 EEPROM、Flash 还是 FRAM?
如果参数少、更新不频繁,用 EEPROM 或 Flash 都可以;如果更新频繁,FRAM 更合适,因为写入快、寿命高。用 Flash 保存参数时要考虑擦除粒度、掉电保护和磨损均衡。
Q19:为什么日志不要随便写到同一个 Flash 扇区?
Flash 擦写寿命有限,频繁写同一扇区会导致局部磨损。日志系统应该循环写、分区写,或者使用带磨损均衡的文件系统/块设备。
Q20:为什么有的系统同时用 NOR 和 NAND/eMMC?
NOR 用来放启动代码,保证启动可靠、读取简单;NAND/eMMC 用来放大容量系统镜像和用户数据。这样可以兼顾可靠启动和低成本大容量存储。
Q21:什么是 MTD?
MTD 是 Linux 中面向 Memory Technology Device 的子系统,常用于管理 Raw Flash,如 NOR、NAND。它和普通块设备不同,会暴露擦除块、坏块等 Flash 特性。
Q22:UBI/UBIFS 是做什么的?
UBI 是 Raw NAND 上的管理层,负责坏块管理、磨损均衡等;UBIFS 是运行在 UBI 之上的文件系统。它们常用于 Linux 直接使用 Raw NAND 的场景。
Q23:如何排查 SPI Flash 读写失败?
先读 JEDEC ID 确认通信正常,再检查 SPI 模式、频率、CS 时序、电源电压、WP/HOLD 状态。写入问题重点看是否 Write Enable、是否等待 Busy 结束、是否跨页处理、地址模式和擦除粒度是否正确。
Q24:如何排查 eMMC 不识别?
先检查电源、时钟、CMD/DAT 上拉、电压切换和复位时序,再看主控是否支持该 eMMC 版本和总线模式。软件上看初始化命令响应、分区配置、EXT_CSD、总线宽度和时钟切换。
Q25:如何讲一个完整的存储选型案例?
回答模板
在某项目中,系统需要可靠启动和保存日志。我选择 QSPI NOR 存 Bootloader,因为 BootROM 支持 QSPI 启动,NOR 随机读快、可靠性高;同时选择 eMMC 存 Linux 文件系统和日志,因为容量大、成本合适,内部控制器能处理 ECC、坏块和磨损均衡。硬件上重点检查 1.8/3.3 V 电平、QSPI 线长和 eMMC CMD/DAT 上拉;软件上重点验证启动时序、分区、文件系统和掉电恢复。
11. 高频对比表
11.1 EEPROM / NOR / NAND / eMMC / SD 卡
| 项目 | EEPROM | NOR Flash | Raw NAND | eMMC | SD/TF 卡 |
|---|---|---|---|---|---|
| 容量 | 小 | 小到中 | 大 | 大 | 大 |
| 掉电保存 | 是 | 是 | 是 | 是 | 是 |
| 典型接口 | I2C/SPI | SPI/QSPI/并行 | 并行/SPI/ONFI | MMC | SD/SPI |
| 适合用途 | 参数 | 启动/固件 | 文件系统/数据 | 系统/数据 | 可插拔数据 |
| 是否需主机管坏块 | 否 | 通常否 | 是 | 否 | 否 |
| 是否适合 XIP | 否 | 是 | 否 | 否 | 否 |
| 开发难度 | 低 | 中 | 高 | 中 | 中 |
11.2 Raw NAND / eMMC / UFS
| 项目 | Raw NAND | eMMC | UFS |
|---|---|---|---|
| 控制器位置 | 主机侧 | 芯片内部 | 芯片内部 |
| 主机复杂度 | 高 | 中 | 中高 |
| 性能 | 取决于主控和算法 | 中 | 高 |
| 成本 | 低 | 中 | 高 |
| 典型应用 | 成本敏感嵌入式 | 工控、网关、消费电子 | 手机、车载、高性能设备 |
12. 面试回答结构建议
回答存储问题时建议按这个顺序:
- 先分类:易失/非易失,RAM/ROM/Flash。
- 再说用途:运行内存、启动、参数、大容量数据。
- 讲接口:I2C、SPI/QSPI、SDIO、eMMC、UFS、DDR。
- 讲关键机制:ECC、坏块、磨损均衡、XIP、文件系统。
- 结合项目:我在哪个项目里为什么这么选。
通用表达:
存储选型不是只看容量,还要看启动方式、接口资源、带宽、擦写寿命、数据可靠性、掉电保护、成本和量产维护。比如启动代码优先选 NOR,系统和数据优先考虑 eMMC/UFS/SD 或 NAND,少量参数可以用 EEPROM/FRAM。
13. 可直接背诵的精简版
13.1 用过的存储类型
我用过 SRAM、DDR、EEPROM、SPI NOR Flash、NAND/eMMC、SD 卡等。SRAM/DDR 主要用于运行时数据和系统内存;EEPROM 用于保存少量参数;NOR Flash 常用于 Bootloader、固件和启动代码;NAND/eMMC/SD 卡用于文件系统、日志和大容量数据。
13.2 NOR 和 NAND 的场合与特性
NOR Flash 我一般用于启动和固件存储,比如 MCU 外部 SPI NOR 或 SoC 的 QSPI NOR 启动。它的特点是随机读取好、可靠性高、可支持 XIP,但容量相对小、单位容量成本高。
NAND Flash 我一般用于大容量数据,比如 Linux 文件系统、系统镜像、日志和用户数据。它容量大、成本低、写擦效率高,但有坏块和 bit error,需要 ECC、坏块管理和磨损均衡。
14. 参考资料
以下资料用于交叉整理和校正概念,正文未逐字摘录:
- Micron, NOR NAND Flash Guide
- Micron, Choosing the right NAND
- Micron, Bad Block Management in NAND Flash Memory
- Winbond, QSPI NOR - Code Storage Flash
- Winbond, W25Q64PW Datasheet
- SD Association, Simplified Specifications
- Analog Devices, Interfacing an SD Card Through SPI
- CSDN, 嵌入式开发之 Nand-Flash 和 Nor-Flash 的区别
- CSDN, 第3章:存储接口 SDIO / eMMC / QSPI
- CSDN, NVM, PROM, OTP, eFuse 傻傻分不清楚
- CSDN, 嵌入式系统中的 EEPROM 和 FRAM
- CSDN/openvela, 嵌入式软件工程师面试题及答案
- 抖音, 存储芯片设计相关短视频条目
