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 寄存器中。 |