资讯详情

eMMC5.1协议中文学习讲(5)

📅 2026/10/31 2:08:56 | 华诺云谱 👁 阅读
eMMC5.1协议中文学习讲(5)
事先声明本文不用于任何商业行为仅用于本人学习与记录。所有截图版权均属于《Embedded Multi-Media Card (e•MMC) Electrical Standard (5.1)》欢迎点赞、收藏、转发分享给朋友禁止未经书面授权的复制、搬运、二次剪辑。如有引用请注明出处。标准规范仍然以《Embedded Multi-Media Card (e•MMC) Electrical Standard (5.1)》为准写在最前往后个人见解部分均用实线框出来。5 e•MMC Device and System e・MMC 器件与系统5.1 e•MMC System Overview e・MMC 系统概述本 e・MMC 规范定义了接口以及器件控制器的行为。规范中默认存在主机控制器和存储阵列但不对这两部分的具体工作方式做完整规定。5.2 Memory Addressing 存储器寻址早期 e・MMC 规范v4.1 及更早版本采用 32 位字段实现字节寻址。该寻址方式支持的 e・MMC 容量最大为 2GB含 2GB。为支持更大容量寻址机制更新为扇区寻址扇区大小 512 字节。容量大于 2GB 的所有器件都必须使用扇区地址。 主机需要读取 OCR 寄存器的 [30:29] 位来判断当前器件的寻址模式。字节寻址老版本 ≤2GB早期 eMMC v4.1 及更早32 位地址 字节地址 之后规范改用扇区地址1 扇区 512 字节为什么 32 位字节寻址最大只能到 2GB32 位地址能表示的地址总数4294967296个地址 字节寻址1 个地址 1 字节理论上限是 4GB这里规范里限制到2GB是 eMMC 老规范的特殊约定OCR 寄存器的寻址模式位定义老模式只使用其中一半地址空间扇区寻址新版本 2GB地址不再代表字节而是扇区编号规定1 扇区 512 字节同样 32 位地址现在能访问的容量 (2^32*512B 2TB) 这就一下子支持大容量了大于 2GB 的 eMMC 必须用这个模式OCR [30:29] 这两位是干嘛的eMMC 上电初始化阶段主机不知道这个芯片是老 2GB 以内、还是大于 2GB 的大容量芯片。OCR 寄存器的 bit30、bit29就是芯片告诉主机我现在用哪一套寻址规则这两位的值用来区分字节寻址 / 扇区寻址主机读这两个 bit然后切换自己的地址解析逻辑如果是字节寻址发命令时填的地址 字节偏移如果是扇区寻址发命令时填的地址 扇区号硬件 / 固件要按 ×512 换算5.3 e•MMC Device Overview e・MMC 器件概述e・MMC 器件通过可配置数量的数据总线信号传输数据。通信信号如下CLK该信号的每个时钟周期驱动命令线上 1bit 传输同时在所有数据线上执行 1bit1 倍速或者 2bit2 倍速传输。时钟频率范围为 0 至最大时钟频率。Data Strobe该信号由器件产生在 HS400 模式下用于数据输出。该信号频率跟随 CLK 频率。数据输出时该信号每个周期在数据线上传输 2bit2 倍速上升沿传输 1bit下降沿传输另 1bit。 对于 CRC 状态应答输出以及 CMD 应答输出仅在 HS400 增强选通模式下启用CRC 状态与命令应答仅在上升沿采样锁存下降沿无效。CMD该信号为双向命令通道用于器件初始化以及命令传输。CMD 信号包含两种工作模式初始化阶段使用开漏模式高速命令传输阶段使用推挽模式。命令由 e・MMC 主机控制器发送至 e・MMC 器件应答由器件发回主机。DAT0-DAT7双向数据通道。DAT 信号工作在推挽模式。同一时刻只能由器件或者主机驱动该信号。上电或复位后默认仅使用 DAT0 进行数据传输。e・MMC 主机控制器可配置更宽的数据总线使用 DAT0-DAT3 或者 DAT0-DAT7 进行数据传输。 e・MMC 器件在 DAT1~DAT7 数据线上内置上拉电阻。进入 4bit 模式后器件立即断开 DAT1、DAT2、DAT3 的内部上拉电阻对应的进入 8bit 模式后器件立即断开 DAT1~DAT7 的内部上拉电阻。e・MMC 接口上的信号定义见表 2。个器件都拥有一组信息寄存器另见第 7 章 器件寄存器名称宽度字节描述是否必须实现CID16器件识别号用于器件的唯一标识必选RCA2相对器件地址是器件的系统地址由主机在初始化阶段动态分配必选DSR2驱动级寄存器用于配置器件的输出驱动器可选CSD16器件特定数据存放器件工作条件相关信息必选OCR4工作条件寄存器通过一条专用广播命令识别器件支持的电压类型必选EXT_CSD512扩展器件特定数据包含器件能力以及已选定模式的相关信息自 v4.0 版本标准引入必选主机可通过以下方式对器件执行复位断开电源后重新上电。器件自带上电检测电路上电后将器件置为确定状态。复位信号发送一条专用命令5.3.1 Bus Protocol 总线协议上电复位之后主机必须通过一套基于消息的 e・MMC 总线专用协议完成器件初始化。每条消息由下面其中一种令牌构成命令命令是用于启动一次操作的令牌。命令由主机发往器件在 CMD 线上串行传输。应答应答是器件发给主机的令牌用于回复之前收到的命令。应答在 CMD 线上串行传输。数据数据可由器件发往主机也可反向传输。数据通过数据线传输传输可用数据线数量可以是 1 根DAT0、4 根DAT0-DAT3或者 8 根DAT0-DAT7。对于每一根数据线每个时钟周期可以传输 1bit单数据速率或者 2bit双倍数据速率。器件寻址采用会话地址该地址由总线控制器在初始化阶段分配给连接的器件。器件依靠 CID 编号识别。该方式要求每个器件拥有唯一的 CID 编号。为保证 CID 的唯一性CID 寄存器包含 24 位MID 和 OID 字段见 7.2 节由 JEDEC/MMCA 定义。所有器件厂商必须申请唯一的 MIDOID 可选编号。e・MMC 总线传输由命令、应答、数据块结构令牌组成。一次数据传输称为一次总线操作。操作一定包含命令令牌和应答令牌部分操作还额外携带数据令牌。e・MMC 命令是面向块的命令这类命令传输一个数据块数据块后紧跟 CRC 校验位。读、写操作均支持单块传输或者多块传输。多块传输依靠 CMD 线上后续发送的停止命令来结束和顺序读操作的方式类似。块写操作会在 DAT0 数据线上使用简单的忙信号用来标识写操作持续的时间见图 3。这边CMD和response在干什么。host下发cmd这个很合乎常理我要发命令做事情了。这个时候device要回1、好的我这就去或是2、稍等我在忙。注意他绝对不会回我做完了这么短的时间是不可能的。所以device的response有一种我还在我还活着的作用。并不是说回我做完了。那么主机怎么知道我的数据写已经写下去了可以发下一笔写了主机同样可以发一个命令询问你写好了没这时候device回一个1、我空闲2、我在忙就ok了。绝大部分命令都有responseresponse与cmd之间的时间有规定超过规定时间视作无相应这在后文中有介绍。命令令牌采用如下编码方案每一个命令令牌以起始位0开头以结束位1结尾总长度为 48 比特。每个令牌带有 CRC 校验位用于检测传输错误出错后可以重传操作。应答令牌根据内容分为五种编码格式令牌长度为 48 比特或者 136 比特。命令与应答的详细定义见 6.10 节和 6.12 节。命令格式在后文中有介绍命令格式对我们来时前期还是算比较重要的需要花心思掌握。尤其是response可以极大程度区分eMMC从业者对协议的敏感度和熟练度。从图中也可以看出cmd是带crc的噢。CRC的功能不必多少这是确保数据传输正确性的高效手段。任何数据的传输都离不开校验CRC算是非常常用的一种我挺想写一篇关于数据传输的文谈谈自己的看法这以后再说。由于连续数据流传输没有预先定义结束边界这类传输不携带 CRC 保护。块数据使用的 CRC 保护算法为 16 位 CCITT 多项式。所有用到的 CRC 类型都在8.1章节说明。那么上面就是说1线制4线制8线制数据如何传输从而合成最终数据不做硬件得话不必深究。还有就是讲了一个SDR和DDR模式由于有同步时钟那么采集信号就是以时钟来可以一个跳变采集一位(上升沿或下降沿规定好就用其中一个)这就是SDRDDR顾名思义就是上升沿和下降沿都用上咯~5.3.2 Bus Speed Modes 总线速率模式e・MMC 定义了多种总线速率模式表 4 汇总了各类模式。规定五种速率模式名字如上表所说然后有寄存器会提供自己支持什么模式反馈给hosthost获取到支持的模式会选择当下最适合的。这里说一个概念我们当然追求速度但是同步时钟有一道坎速率越高误码率越高想要更高的速度硬件很难做的再加上如果你焊到设备上你与设备还需要进行tuning也就是较准也就是对准相位那么对设备的要求也高。所以为了确保数据传输准确这是最重要的如果在高速时数据容易出现错误不如降速~另外频率越低功耗也越低不是。那么为了解决同步时钟的这个问题我们可以采用异步时钟啊为了减少信号被干扰我们可以采用差分信号啊~所以你看到的那些高速率的传输基本上具备这两个特征。那么在移动存储上更高的速度就是UFS就完全不走你同步时钟这一套。5.3.3 HS200 Bus Speed Mode HS200 总线速率模式HS200 模式具备以下特性SDR 数据采样方式时钟频率最高 200MHz数据速率最高 200MB/s支持 4 位或 8 位总线位宽单端信号提供 4 档驱动强度信号电平支持 1.8V 与 1.2V读操作支持调谐机制5.3.4 HS200 System Block Diagram HS200 系统框图图 12 为典型的 HS200 主机与器件系统。主机内部包含时钟发生器向器件提供 CLK 时钟信号。 写操作时时钟与数据传输方向一致写数据可以和 CLK 同步传输不受传输线延时影响。 读操作时时钟与数据传输方向相反主机收到的读数据会受到往返延时、输出延时以及主机、器件本身的时延影响。因此在读操作场景下主机需要具备可调节采样点保证可靠接收输入数据。5.3.5 HS200 Adjustable Sampling Host HS200 可调采样主机侧主机可以采用可调采样机制来确定正确的采样点。器件内部预先存放了调谐块主机可借助它找到最优数据采样点。主机可以使用 CMD21 调谐命令读取该调谐块。5.3.6 HS400 Bus Speed Mode HS400 总线速率模式HS400 模式具备以下特性DDR 数据采样方式时钟频率最高 200MHz数据速率最高 400MB/s仅支持 8 位总线位宽信号电平支持 1.8V 和 1.2V最多支持 5 档驱动强度数据选通信号仅在数据输出、CRC 应答、命令应答时翻转5.3.7 HS400 System Block Diagram HS400 系统框图图 13 是典型的 HS400 主机与器件系统。主机内置时钟发生器向器件提供 CLK 时钟信号。 在读操作时数据选通信号由器件输出电路产生。主机接收的数据、CRC 状态以及开启增强选通模式时的命令应答都与数据选通信号边沿对齐。这里可以讲一个Data Strobe数据选通他是干什么的比方说一个时钟一个发送发一个接收方如果两个人都能卡在节拍上收发数据那自然是最好的但是有时接收方回数据并不在节拍上速度越高越容易不在节拍上(eMMC里HS400模式才需要数据选通)。那怎么办发送发就说没事我给你一个Data Strobe信号线我接受你的消息用Data Strobe当作时钟采样这样双方收发数据即使不在一个节拍上也没问题了。另外Flash上也有一个DS pin,其作用也是增强数据采样增强稳定性的作用我没有细细研究原理应该比较类似。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑