eMMC之分区管理、总线协议和工作模式
JDEDC EMMC 协议中文
SD卡协议中文2.0 3.0
EMMC4.4 非Boot模式读流程
- 等待74个时钟
- CMD0 复位emmc至idle状态
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD0 |
bc |
00000000 |
- |
GO_IDLE_STATE |
复位设备至idle状态 |
CMD0 |
bc |
f0f0f0f0 |
- |
GO_PRE_IDLE_STATE |
复位设备至pre-idle状态 |
CMD0 |
- |
fffffffa |
- |
GO_INITIATION |
启动替换的引导操作 |
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD1 |
bc |
[31:0] OCR |
R3 |
SEND_OP_COND |
请求idle状态设备发送在CMD线发送其OCR结构 |
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD2 |
bc |
[31:0] 填充位 |
R2 |
ALL_SEND_CID |
请求设备在CMD线发送其CID编号 |
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD3 |
ac |
[31:16] RCA [15:0] 填充位 |
R1 |
SET_RELATIVE_ADDR |
分配相对地址到设备 |
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD9 |
ac |
[31:16] RCA [15:0] 填充位 |
R2 |
SEND_CSD |
SEND_CSD寻址的设备在CMD线上发送其设备专有数据(CSD) |
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD7 |
ac |
[31:16] RCA [15:0] 填充位 |
R2 |
SELECT/DESELECT_C ARD |
在stand-by和transfer状态之间或program- ming和disconnect状态之间切换设备的命令。两种情况下,设备以其自己的相对地址被选定并以其他地址被取消选定;地址0取消所有设备的选定。 |
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD13 |
ac |
[31:16] RCA [15:0] 填充位 |
R1 |
SEND_STATUS |
寻址的设备发送其状态寄存器 |
- 根据ECSD switch不同的位宽。(可选) CMD8, CMD13, CMD6
- CMD18读数据
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD18 |
adtc |
[31:0] 数据地址1 |
R1 |
READ_MULTIPLE_ BLOCK |
从设备向主机连续传输数据块,直至被停止命令中断,或所要求传输的块数。 |
SD1.0 初始化流程
- 等待74个时钟
- CMD0 复位SD卡至idle状态
- CMD8 发送SD 卡接口条件,包含了主机支持的电压信息,并询问卡是否支持。保留位应该设置为0。
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD8 |
bcr |
[31:12]保留位,[11:8]VHS,[7:0]检查模式 |
R7 |
SEND_IF_COND |
发送SD 卡接口条件,包含了主机支持的电压信息,并询问卡是否支持。保留位应该设置为0。 |
- ACMD41 发送卡的支持信息(HCS)。发送ACMD需要先发送CMD55。
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
CMD55 |
ac |
[31:16]RCA [15:0]填充位 |
R1 |
APP_CMD |
告诉卡,下个命令是特定应用命令,而不是标准命令。 |
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
ACMD41 |
bcr |
[31]保留位 [30]HCS(OCR30) [29:24]保留位 [23:0]VddVdd 电压(OCR[23:0]) |
R3 |
SD_SEND_OP_COND |
发送卡的支持信息(HCS),并要求卡通过命令线返回OCR 寄存器内容。当卡收到SEND_IF_COND 时,HCS 是有效的。保留位设为0。CCS 位对应OCR[30] |
- 接下来SD卡初始化就是CMD2和CMD3,大致是和MMC卡流程是一样的。后面有一些命令SD和MMC还是不同的,比如switch的命令就不同,SD卡使用的是ACMD6来定义数据的宽度等等,而MMC是使用CMD8来switch。
命令索引 |
类型 |
参数 |
应答 |
缩写 |
命令说明 |
ACMD6 |
ac |
[31:2]填充位 [1:0]总线宽度 |
R1 |
SET_BUS_WIDTH |
定义数据总线的宽度(‘00’=1bit,‘10’=4bit)。接受的数据总线定义在SCR 寄存器中。 |