3. eMMC协议与架构
eMMC(embedded MultiMediaCard)是移动终端、车机、工业网关与嵌入式设备中最常见的板载存储形态。它把 NAND Flash 颗粒、控制器与固件封装在一颗 BGA 芯片内,对外只暴露简化的 MMC 总线接口。理解 eMMC 的协议与架构,是后续做掉电保护、寿命均衡、分区隔离与文件系统可靠性设计的基础。本节从标准演进、总线接口、命令响应、分区管理与硬件拓扑五个维度展开。
一、标准演进:从 MMC 到 eMMC 5.1 的能力跃迁
eMMC 由 JEDEC 主导标准化,版本演进的核心线索是“带宽提升 + 可靠性增强 + 功能扩展”。早期 eMMC 4.4 引入 DDR 模式,eMMC 4.5 引入 HS200 与 Cache、Discard 等机制,eMMC 5.0 引入 HS400,eMMC 5.1 则补齐了命令队列(CQ)、可靠写(Reliable Write)、安全写保护(Secure Write Protection)与增强分区等能力。对可靠性设计而言,5.1 的价值不只是更快,而是提供了可被主机控制的写保护与分区隔离手段。
| 版本 | 关键能力 | 对可靠性的意义 |
|---|---|---|
| eMMC 4.4 | DDR 模式、Boot 分区 | 支持从 eMMC 启动,简化启动链路 |
| eMMC 4.5 | HS200、Cache、Discard、Sanitize | 提升性能,支持安全擦除与垃圾回收提示 |
| eMMC 5.0 | HS400、HS400ES | 高速接口,降低信号完整性设计难度 |
| eMMC 5.1 | CQ、Reliable Write、Secure WP、增强分区 | 可控制写入原子性与分区写保护,提升掉电可靠性 |
二、总线接口:CLK、CMD、DAT 与电源域
eMMC 采用并行同步总线,信号线包括 CLK、CMD、DAT[7:0]、DS(Data Strobe)以及 VCC、VCCQ、VSS 等电源地。CLK 由主机输出,CMD 为双向命令线,DAT 为双向数据线,DS 仅在 HS400 模式下由 eMMC 输出用于数据采样同步。VCC 通常为 3.3V 给 NAND 阵列供电,VCCQ 为 1.8V 或 3.3V 给 IO 供电,二者分离设计有利于功耗与电平匹配。
总线模式决定了实际带宽与信号完整性要求:
- DS 模式:单沿采样,速率最低,兼容性最好。
- HS 模式:单沿 52MHz,DDR 模式下双沿 52MHz。
- HS200:单沿 200MHz,SDR,需调优采样点。
- HS400:双沿 200MHz,需 DS 信号配合,速率最高。
三、命令与响应机制:CMD 线是控制核心
eMMC 的所有控制都通过 CMD 线上的命令与响应完成。命令由主机发起,格式为 48 位(含起始位、传输位、命令索引、参数、CRC 与结束位);响应由设备返回,分为 R1、R1b、R2、R3、R4、R5 等类型。R1 携带状态位与错误标志,R1b 额外带忙信号,R2 为 136 位 CID/CSD 响应,R3 用于 OCR 电压协商,R5 用于中断模式。
典型初始化流程如下:
CMD0 -> 复位设备进入 Idle
CMD1 -> 发送 OCR,协商电压与容量,进入 Ready
CMD2 -> 获取 CID
CMD3 -> 分配 RCA,进入 Standby
CMD9 -> 读取 CSD,获取容量与擦除参数
CMD7 -> 选中设备,进入 Transfer
CMD8 -> 读取 EXT_CSD,获取分区与总线能力
CMD6 -> 切换总线宽度、速度模式、分区配置
ACMD6 -> 设置总线宽度(1/4/8 bit)
CMD13 -> 查询设备状态
CMD17/18/24/25 -> 单块/多块读写
CMD12 -> 停止多块传输
其中 CMD6(SWITCH)是配置总线宽度、速度模式与分区属性的关键命令;CMD8 读取的 EXT_CSD 是 512 字节的能力与配置寄存器,包含 BUS_WIDTH、HS_TIMING、PARTITION_CONFIG、BOOT_BUS_CONDITIONS 等字段。可靠性设计中,PARTITION_CONFIG 决定 Boot 分区、RPMB 与用户分区的访问使能,是必须正确配置的寄存器。
四、分区管理与硬件拓扑
eMMC 内部并非单一存储区,而是由多个硬件分区组成:Boot0、Boot1、RPMB、General Purpose Partition(GPP)与 User Data Area。Boot 分区用于存放引导程序,RPMB 用于存放密钥、计数器等安全数据,GPP 可配置为增强属性分区,User 区承载文件系统。每个分区有独立的容量、属性与写保护能力。
分区属性分为增强(Enhanced)、扩展(Extended)与默认(Default)。增强分区通常映射到 SLC 或高可靠存储区,适合存放元数据、日志与关键配置;默认分区使用 TLC/MLC,容量大但可靠性相对低。合理做法是把文件系统元数据、日志区放入增强分区,把大文件与媒体数据放入默认分区。
五、案例与误区复盘
某车机项目在高温老化中出现偶发启动失败,日志显示 mmc0: error -84 whilst initialising MMC card。排查发现 HS400 模式下 DS 走线未做等长,且 VCCQ 去耦不足。降级到 HS200 并优化电源后问题消失。这说明总线模式不是越高越好,必须与 PCB 能力和电源质量匹配。
另一个常见误区是把 RPMB 当作普通分区读写。RPMB 必须使用认证读写命令(CMD23 + CMD25 的可靠写语义),且写入前需完成 MAC 校验,普通文件系统无法直接挂载。若在 RPMB 上做常规读写,会返回错误甚至触发写保护。
PARTITION_CONFIG 的 Boot 使能位与写保护位。错误配置可能导致设备无法从 eMMC 启动,或在量产后无法更新引导程序。综上,eMMC 的可靠性设计必须建立在协议与架构的准确理解之上:版本决定可用能力,总线决定信号质量,命令响应决定控制路径,分区决定数据隔离,硬件拓扑决定系统边界。只有把这些要素统一纳入设计,后续的掉电保护与文件系统可靠性才有稳固基础。