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

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

特性 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按字节擦除

典型用途

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

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

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

相关推荐
沐风_ZTL20 分钟前
Ubuntu 22.04中OpenCode 安装与配置完整指南,及常问题解决办法
linux·ai·opencode
实心儿儿20 分钟前
Linux —— Linux进程信号 - 信号保存 和 信号处理
linux
都在酒里32 分钟前
STM32有限状态机(FSM)详解,综合应用总结(二)
stm32·单片机·嵌入式硬件·状态机
网络与设备以及操作系统学习使用者1 小时前
vi与vim在openEuler中的差异及应用
linux·运维·网络·学习·vim
专注VB编程开发20年1 小时前
python运行提速方案全解
java·linux·服务器
相思难忘成疾1 小时前
Ubuntu 入门:安装、网络、软件一站式教程
linux·网络·ubuntu
嵌入式-老费1 小时前
esp开发与应用(继电器的使用)
单片机·嵌入式硬件
CPETW1 小时前
RS-232 Sniffer 嗅探器 ---- UNI-T电子负载通讯协议抓取-A
网络·科技·stm32·单片机·嵌入式硬件·电子
xiangw@GZ1 小时前
倒 F 天线 (IFA/MIFA) 原理深度解析
单片机·嵌入式硬件
m0_377108141 小时前
stm32时钟
stm32·单片机·嵌入式硬件