嵌入式系统中的非易失性存储设备

在嵌入式系统中,主要有这几类非易失性存储设备(断电不丢数据):

特性 NOR Flash NAND Flash eMMC SD卡 SPI Flash EEPROM
XIP支持 ✅ 支持 ❌ 不支持 ❌ 不支持 ❌ 不支持 ⚠️ 部分支持 ❌ 不支持
访问方式 随机 块(页) 随机/块 随机
典型容量 1MB-256MB 128MB-1TB 4GB-512GB 1GB-1TB 1KB-128MB 1KB-1MB
价格/容量 昂贵 便宜 中等 便宜 中等 昂贵
接口 并行 原始NAND MMC SDIO SPI I²C/SPI
是否需要 坏块管理 不需要 需要 内部处理 内部处理 不需要 不需要
擦除单位 块/扇区 块(页) 扇区 字节
主要用途 启动/代码 数据存储 系统存储 可移动存储 小数据/配置 配置数据

1. NOR Flash(贵族,支持XIP)

特点

  • 随机访问:可以像 RAM 一样直接读取任意地址

  • 支持 XIP :代码可以直接在NOR上运行,无需先拷贝到RAM

  • 可靠性高:寿命长,稳定性好

  • 价格贵:比 NAND 贵很多

  • 容量小:通常几MB到几十MB

物理接口

  • 并行接口:有很多数据线(如16位、32位),速度快

  • i.MX 上通常通过 EIM(外部接口模块) 连接

典型用途

  • 启动设备:存储 bootloader(如 U-Boot)

  • 关键固件:存储必须可靠、快速启动的代码

  • 工业设备:对可靠性要求高的场合

比喻 :像一个图书馆的书架,你可以直接走到任意书架前拿书(直接读取任意地址)。


2. NAND Flash(平民,大容量)

特点

  • 串行访问:必须按"块"读写(如4KB一块)

  • 不支持 XIP :代码必须先拷贝到RAM才能执行

  • 容量大:几百MB到几百GB

  • 价格便宜:单位容量成本低

  • 需要坏块管理:有坏块,需要特殊管理

  • 需要ECC:需要纠错码保障数据正确

物理接口

  • 并行或串行:有原始NAND接口(很多控制线)

  • i.MX 上通过 GPMI(通用NAND接口) 连接

典型用途

  • 大容量存储:文件系统、用户数据

  • 消费电子产品:手机、平板、数码相机

  • 替代硬盘:SSD固态硬盘的核心就是NAND

比喻 :像一盒盒密封的巧克力,你必须打开整个盒子(读一个块),不能只拿一颗(读一个字节)。


3. eMMC(智能NAND)

特点

  • NAND + 控制器:内部集成了NAND芯片和管理控制器

  • 简化设计:对主机来说就像访问SD卡一样简单

  • 标准接口:MMC接口标准

  • 无需坏块管理:控制器内部处理了所有复杂问题

典型用途

  • 智能手机:主要存储设备

  • 平板电脑:系统存储

  • 嵌入式系统:简化设计的首选大容量存储


4. SD/TF卡(可移动存储)

特点

  • 可插拔:方便更换

  • 标准接口:SDIO接口

  • 容量范围广:从几MB到几TB

  • 速度分类:有Class 2/4/6/10,UHS-I/II等速度等级

与eMMC的关系

  • 类似原理:都是基于NAND Flash

  • eMMC是焊死的SD卡是可插拔的

  • eMMC通常更可靠(工业级)

典型用途

  • 相机存储:照片、视频

  • 开发板启动:嵌入式开发常用启动方式

  • 扩展存储:为设备增加存储空间


5. SPI Flash(简单接口)

特点

  • 串行接口:只需要4根线(CLK, MOSI, MISO, CS)

  • 小容量:通常几KB到几十MB

  • 接口简单:占用引脚少

  • 速度较慢:串行传输

物理接口

  • SPI总线:串行外围接口

  • 多个SPI设备可以共享总线(通过片选CS区分)

典型用途

  • 存储配置参数:网络设备的MAC地址、校准数据

  • 小型固件:简单设备的程序存储

  • 替代EEPROM:需要较大容量时


6. EEPROM(可字节擦写)

特点

  • 字节级擦写:可以单独修改一个字节

  • 寿命有限:通常10万-100万次擦写

  • 容量很小:通常几KB到几百KB

  • 接口多样:I²C、SPI等

与Flash的区别

  • Flash按块擦除(如4KB一块)

  • EEPROM按字节擦除

典型用途

  • 配置存储:需要频繁修改的小数据

  • 校准数据:传感器校准参数

  • 设备信息:序列号、生产日期等

相关推荐
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件1 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号1 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行3 天前
Linux和window共享文件夹
linux
木心月转码ing3 天前
WSL+Cpp开发环境配置
linux
崔小汤呀4 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应4 天前
vi编辑器使用
linux·后端·操作系统