EMMC协议精讲

EMMC协议速览

EMMCV4.5 亦或V5.1,协议可以说洋洋洒洒一大堆,刚接触的人容易抓不住重点,或者分析不到位,这里主要总结一些重要并且常用的EMMC协议。

1. EMMC基本了解

1.1 物理线路:

Card Concept(eMMC)

image-20220215110840519

物理接口

接口含义

CLK

时钟线,此信号的每一周期控制命令线上的 1 bit 传输,以及所有数据线上 1 bit(1x) 或 2 bit(2x)传输。

CMD

命令线,此信号是双向命令通道,用于设备初始化和命令传输。CMD信号有两种工 作模式:用于初始化模式开漏模式和快速命令传输推拉模式。

DAT0-7

这些是双向的数据通道。DAT 信号以推拉模式工作。缺省状态,只有DAT0处于推拉模式,DAT1-7处于上拉(内含上拉),进入4bit后,DAT0-3处于推拉

1.2 EMMC相关寄存器了解

image-20220215111031546

1.3 其他特性了解

  • 读写模式:单块读写,多块读写
  • 寻址方式:字节寻址和扇区寻址,字节寻址允许最大2GB,容量超过2GB的,使用扇区(512B)寻址
  • 电压模式:支持高电压和双电压模式
  • 支持增强分区模式等

2、总线协议

2.1 基础了解

  • 命令:启动一种操作的Token,命令从主机发往设备,在CMD线路上串行传输。
  • 应答:从设备发往主机作为对上一命令的回答的Token,在CMD线路上串行传输。
  • 数据:在主从机之间双向传输,总线宽度可以是1-bit(缺省)、4-bit 和 8-bit

2.2 命令格式

image-20220215112109330

每一个Token,都是由一个起始位(’0’)前导,以一个停止位(’1’)终止。总长度是 48 比特。每一个 Token 都用CRC保护,因此可以检测到传输错误,可重复操作。

在这里插入图片描述

命令格式可以分为4种模式:

① 无应答广播命令(bc)
② 有应答广播命令(bcr)
③ 点对点寻址命令(ac),无DAT数据
④ 寻址数据传输命令(adtc),有DAT数据

image-20220215114113034

命令索引:也就是前面CMDX的0,1,2,3等命令编号。

命令参数:有些命令需要参数,例如地址信息等。

2.3 应答格式

所有的应答均通过命令线CMD发送,编码的长度取决于应答类型,应答Token类型有有 5 种编码方案,分别为R1、R2、R3、R4、R5。Token 长度是 48 或 136 比特。

① R1(正常应答类型)

image-20220221104224360

编码长度48bitbits 45:40 表示应答相对的命令索引,bit 8:39表示欲发送设备的状态信息。

② R2(CID CSD寄存器)

image-20220221104552038

编码长度136bitCID寄存器的内容,作为对CMD2CMD10的应答发送。CSD寄存器内容作为对CMD9应答发送。并且CIDCSD寄存器只有bit 127:1被发送。

③ R3(OCR寄存器)

image-20220221104728934

编码长度48bitOCR寄存器作为对CMD1的应答发送。

④ R4(快速I/O)

image-20220221104846382

编码长度48bit,参数域包含了被寻址设备的RCA、要读写的寄存器地址和内容。

⑤ R5(中断请求)

image-20220221105026759

编码长度48bit,如果应答是主机生成的,参数的RCA应为0。

3、工作模式

主机和设备之间的通信,都由主机控制发起,主机发送命令,引起设备的应答。

EMMC工作模式也定义了5种:

  • 引导模式:使设备处于引导状态
  • 设备识别模式:引导模式结束,设备再次模式下,接受SET_RCA命令,进行识别设备。
  • 数据传输模式:分配RCA后,设备进入数据传输模式,准备数据通信
  • 中断模式:主机与设备同时进入,无数据传输,只允许消息来自主机或从机的中断请求
  • 非活动模式:如果设备工作电压范围和访问模式无效,则进入非活动模式。

image-20220222105852603

每一种模式,都有其各自的特点,我们主要来了解一下设备识别过程和数据传输过程。

3.1 设备识别模式

image-20220222110331024

乍一看图,肯定大家都一脸懵逼,不仔细分析协议,单看图还是有一定理解难度的。

总体来说,设备识别模式下,主机要想识别到卡,主要步骤有如下几步:

  • 复位设备
  • 验证工作电压及访问模式
  • 识别设备并分配相对设备地址RCA
  • 使设备进入数据传输模式
3.1.1 复位

EMMC控制器通过发送CMD0,参数为0x00000000,使设备进入Idle状态。

同时,为了向后兼容,在除Inactive的任何状态,接收 非0XFFFFFFFA0XF0F0F0F0的参数,都作为CMD0

3.1.2 验证工作电压及访问模式

EMMC控制器通过发送CMD1,参数为OCR寄存器,该寄存器种包含了2bit的存储器访问模式。

image-20220222111543626

如上,bit[30:29]表示访问模式,通过CMD1发送该数据目的是向存储器同步寻址类型。

EMMC设备同时也应以固定模式0x00FF80800x40FF8080(如果设备忙)、0x80FF8080(容量小于等于 2GB)或 0xC0FF8080(容量大于 2GB)应答。

同时,bit31用来判忙,如果为1,说明EMMC设备仍然处于复位过程中,主机也同时重复发送CMD1来确保该忙位清除。

3.1.3 识别设备分配RCA

通过CMD1进行检查后,不符合的设备就进入了Inactive状态。而符合的设备就进入了Ready状态。

进而,EMMC控制器发送CMD2,请求符合要求的设备发送唯一设备标识CID号。CID号对于每一张卡,都是唯一的。

发送CID成功的设备,就进入到了Identification状态。

进而,EMMC控制器发送CMD3,赋予设备一个相对设备地址RCA,从设备一旦接收到RCA,设备就变为Stand-by状态,即数据传输状态

3.2 数据传输过程

image-20220222113633761

分配完RCA后,从设备接收到RCA,立即处于stand-by状态时,CMDDAT线路,均变为推拉模式。

3.2.1 获取CSD寄存器信息

CMD9:主机发送该命令,以获取设备专用寄存器CSD的数据,如块长度,存储容量,最大时钟速率等。

3.2.2 获取CID寄存器信息

CMD10:主机发送该命令,以获取设备专用寄存器CID的数据,获取设备识别号。

3.2.3 切换为Transfer状态

CMD7:主机发送该命令,选定该设备,使其切换到发送数据状态。

3.2.4 查看EXT_CSD扩展寄存器

CMD8:主机发送该命令,设备作为数据块发送其 EXT_CSD寄存器的数据,设备将数据作为一个512字节的数据块发送。

3.2.5 修改EXT_CSD扩展寄存器的值

CMD6:主机发送该命令,用于切换工作模式,或者修改EXT_CSD寄存器。

CMD6,这个命令,参数的设置有很大讲究呢!

[31:26]:正如手册所写,直接设置为0

[25:24]:访问模式选择,那么访问模式有哪几种呢?

image-20220224133752283

如果 SWITCH 命令用于更换命令集([25:24]为00),,Index 和 Value 域被忽略([23:16]、[15:8]忽略),且 EXT_CSD 不会被写。

如果 SWITCH命令用于写 EXT_CSD寄存器,Cmd Set 域被忽略[2:0] 忽略,命令集保持不变。

[23:16]:索引,指的是EXT_CSD寄存器中,所要修改字节的索引。

[15:8]:要写入的值

[2:0]:命令集选择,命令集有如下几种类别,相关手册可以查阅。

image-20220224134753515

举个栗子

如果我们想要操作总线长度,我们该怎么修改呢?

CMD6命令,发送args=03B70200,即可修改。

03:代表访问模式为写字节

B7:转换为十进制183,对应EXT_CSD总线宽度模式的字节。

image-20220224135045096

02:设置该字节的值为02,即8位数据总线

image-20220224135119903

00:写字节访问模式下,该位无效。

3.2.6 读数据
  • 单块读

CMD17:直接发送读命令,参数为要写入的数据地址信息,只读一个块。

  • 多块读

CMD18:直接发送读命令,参数为要写入的数据地址信息,并且一直读下去。

CMD12:停止命令,停止传输。

image-20220224140703465

3.2.7 写数据

确保设备处于发送状态,即主机发送CMD7命令

  • 单块写

CMD24:直接发送写命令,参数为要写入的数据地址信息,只写一个块。

  • 多块写

多块写的模式有两种:

① 一种是:设置要传输的数据块的个数,达到个数后,自动停止

CMD16:设置要传输的块长度

CMD25:开始发送CMD16指定长度的数据块,直到达到设置的数据块写入完成。

②另一种是:一直传输数据,直到接收停止数据的命令

CMD25:开始发送数据块,一直等待数据发送完全

CMD12:停止命令,停止传输。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CSDN是一个大型技术社区,提供各种技术资源和知识分享。其中,有一份名为 "emmc协议.pdf" 的文档,主要介绍了emmc(嵌入式多媒体卡)的协议规范。 emmc是一种在嵌入式系统中使用的闪存存储解决方案,它集成了闪存存储芯片和控制器,并遵循特定的协议进行数据传输和管理。这个文件详细介绍了emmc协议的各个方面。 首先,该文档概述了emmc协议的背景和基本原理。它解释了emmc的结构和功能,包括闪存存储芯片、协议控制器和主机设备之间的通信方式。此外,该文档还介绍了emmc的主要特性,如数据传输速率、可靠性和电源管理等。 其次,该文档详细描述了emmc的物理层和逻辑层协议。物理层协议包括数据线、时钟线和电源线的定义和规范,以及信号电平和时序要求。逻辑层协议定义了emmc与主机设备之间的通信接口和命令格式。 此外,该文档还介绍了emmc的数据管理和错误处理机制。它涵盖了数据读取、写入和擦除操作的细节,以及数据完整性校验和错误纠正的方法。此外,文档还介绍了如何处理各种类型的错误情况,如数据传输错误和设备故障。 最后,该文档提供了一些使用emmc的实例和最佳实践。它介绍了如何在嵌入式系统中使用emmc进行数据存储和访问,以及注意事项和性能优化建议。 总的来说,"emmc协议.pdf" 是一份全面介绍emmc协议的文档,可以帮助开发人员理解和应用emmc技术。对于需要深入了解emmc协议和使用emmc存储的人来说,这份文档是非常有价值的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

探索者我有我路向

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值