存储介质

← 返回 Cortex-M4内核原理 | ← 主页

各种存储介质按「成本 / 擦写粒度 / 寿命」横向对比,重点 Flash 及典型用法。


对比表(9 行)

介质成本擦写范围擦写速度擦写次数适用方式
Register(寄存器)极高无擦除,字直接读写最快(单周期)无限CPU 内部运算/暂存
RAM(SRAM)无擦除,字节/字写快(ns 级)无限运行时变量/栈/堆,掉电丢
ROM极低(量产)不能擦写0出厂固化程序/字库
EPROM整片紫外擦除极慢(分钟级)千次级早期可擦写,需 UV 灯
EEPROM中高字节级慢(ms/字节)10 万~100 万存小参数/校准数据
NorFlash扇区(4KB~64KB)中(擦除慢)1 万~10 万存代码,XIP 直接执行
NandFlash极低块(64KB~MB)页级读写快10 万左右存大文件:Linux 系统/相片
eMMC控制器管理(内为 NAND)快(块设备接口)控制器均衡焊死板上的系统盘:Android / 嵌入式 Linux 根文件系统
SD 卡控制器管理(内为 NAND)中(SD/SPI 接口限速)控制器均衡可插拔存储:相片 / 日志 / 固件升级包

eMMC 与 SD(带控制器的 NAND)

裸 NAND 要自己管坏块、ECC、磨损均衡;eMMC / SD 把这些都塞进一颗内置控制器,对外只暴露块设备接口。

eMMCSD 卡
形态焊死在板上(不可拆)可插拔卡座
接口eMMC 总线(8 线并行)SD / SPI
典型用途嵌入式 Linux 根文件系统、Android 系统盘相片、日志、固件升级包
  • 两者内部本质都是 NAND Flash,区别只在「封装形态 + 对外接口」。
  • 控制器替你做了坏块管理、磨损均衡、ECC,所以「寿命」这个维度对外被抽象掉了。

Flash 模拟 EEPROM

EEPROM 能字节级擦写但贵、容量小;Flash 便宜但只能整扇区擦。用 Flash 模拟 EEPROM:把一小块 Flash 当 EEPROM 用。

  • 原理:整页读进 RAM → 改那 1 字节 → 整页擦除 → 写回(读-改-写)。
  • 效果:模拟出单字节修改,且批量写比 EEPROM 快(Flash 写比 EEPROM 快)。
  • 例:STM32 用最后几个 Flash 页存参数,改一个参数就整页「读-改-写」。

磨损均衡(Wear Leveling)

Flash 每个扇区擦写次数有限(万次),总盯着同一个扇区擦会先坏。磨损均衡算法把擦写分散到多个扇区,让所有扇区寿命均匀。

  • 简单做法:轮转(Round-Robin)——每次写到下一个扇区,写满一圈再绕回。
  • 代价:要一块「写指针」记录当前写到哪、判断哪个扇区是最新的。

纽扣电池保持 SRAM

SRAM 掉电数据就丢;给它挂一个纽扣电池(VBAT 电池供电域),断电后由电池维持 SRAM,数据就能保留。

  • 用途:断电不丢的少量关键数据(如 RTC 时间、状态机快照、上次运行现场)。
  • 比 Flash 的优势:无擦写次数限制、写快;缺点是容量小、靠电池。