eMMC響應
eMMC響應有兩種長度的數據包,分別為48 Bits和136 Bits,eMMC響應的格式如下圖所示:
Snipaste_2023-10-12_21-32-24
eMMC的響應由48 bits或者136 bits組成,所有的eMMC響應都以00開始,以1結尾。所有的eMMC響應都是在CMD線上進行傳輸的,eMMC設備發(fā)送響應時先發(fā)送響應的起始位(Start bit),最后發(fā)送響應的結束位(End bit)。
Start Bit:起始位,固定為0,在沒有響應傳輸的情況下,CMD線上的信號保持高電平,當eMMC設備將Start Bit發(fā)送到總線上時,Host可以很方便檢測到響應的Start Bit(CMD線上的信號由高電平變?yōu)榈碗娖剑?,并開始接收響應。
Transmission Bit:傳輸位,固定為0,該位指示CMD線上數據的傳輸方向,該位為0,表示CMD線上數據的傳輸方向為從eMMC設備到Host。
Content:響應的具體內容,不同的響應Content不同。
CRC:CRC校驗值,包含Start Bit、Transmission Bit和Content內容的CRC校驗值。
End Bit:結束位,固定為1。
eMMC有5種類型的響應,包括:R1,R2,R3,R4和R5。
R1
R1響應的數據長度為48 bits,其中[45:40]數據位域表示的是該響應對應命令的編號。[39:8]是一個32位大小的位域,主要用于反應設備的狀態(tài)信息,具體的設備狀態(tài)信息內容可以參考eMMC 5.1 spec的6.13 Device status章節(jié)。
Snipaste_2023-10-12_21-49-14
R1b和R1完全相同,只是R1b會在數據線DAT0上傳輸一個可選的busy信號。基于eMMC設備在接收命令之前的狀態(tài),eMMC設備在接收到一些命令之后可能會變得繁忙。
R2
R2響應的數據長度為136 bits。[127:1]是一個127位大小的位域,該位域將CID寄存器的值作為CMD2和CMD10的響應內容。[127:1]位域也可以將CSD寄存器的值作為CMD9的響應內容。CID和CSD寄存器的[127:1]位作為R2響應內容被傳輸,CID和CSD寄存器的保留位[0]由于該位的值總是1,因此保留位[0]被R2響應的End bit替換。
Snipaste_2023-10-13_19-50-41
R3
R3響應的數據長度為48 bits。[39:8]是一個32位大小的位域,該位域將OCR寄存器的值作為CMD1的響應內容。
Snipaste_2023-10-13_20-14-36
R4
R4響應的數據長度為48 bits。[39:8]是參數域,該位域包含尋址設備的RCA,要進行讀寫操作的寄存器地址以及寄存器內容。如果操作成功,參數域中的狀態(tài)位將被置1。R4響應只作為對CMD39的響應。
Snipaste_2023-10-13_20-23-39
R5
R5響應的數據長度為48 bits。如果該響應由Host產生,那么RCA[31:16]位域的值應該為0。R5響應只作為對CMD40的響應。
Snipaste_2023-10-13_20-26-42
eMMC數據塊
eMMC數據塊由Start bit、Data、CRC和End bit組成。下面對不同總線寬度和數據速率(Date Rate)下,各個數據塊的格式進行一個簡單的說明。
1位總線寬度 SDR模式
Snipaste_2023-10-13_21-07-10
CRC為Data的16 bitCRC校驗值,不包含起始位。
4位總線寬度 SDR模式
Snipaste_2023-10-13_21-17-13
各個數據線上的CRC為對應數據線的Data的16 bit CRC校驗值。
8位總線寬度 SDR模式
Snipaste_2023-10-13_21-21-31
各個數據線上的CRC為對應數據線的Data的16 bit CRC校驗值。
4位總線寬度 DDR模式
Snipaste_2023-10-13_21-23-47
DDR模式下,在時鐘的上升沿和下降沿數據線都會傳輸數據。在時鐘的上升沿傳輸數據的奇數字節(jié)(字節(jié)1,3,5 ...),在時鐘的下降沿傳輸數據的偶數字節(jié)(字節(jié)2,4,6 ...)。
在DDR模式下,每個數據線上有兩個相互交織的CRC16,時鐘上升沿的CRC比特組成odd CRC16,時鐘下降沿的CRC比特組成even CRC16。odd CRC16用于校驗該數據線上所有上升沿比特組成的數據,even CRC16用于校驗該數據線上所有下降沿比特組成的數據。
8位總線寬度 DDR模式
Snipaste_2023-10-13_21-25-27
eMMC CRC status token
在Host向eMMC設備寫數據過程中,eMMC設備接收到Host發(fā)送的一個數據塊之后,會進行CRC校驗,如果校驗成功,eMMC設備會在對應的數據線上向Host回復一個Positive CRC status token("010"),如果校驗失敗,eMMC設備會在對應的數據線上向Host回復一個Negative CRC status token("101")。
在Host從eMMC設備讀取數據的過程中,Host接收到eMMC設備發(fā)送的一個數據塊之后,也會進行CRC校驗,但是不論校驗成功還是校驗失敗,Host都不會向eMMC設備回復CRC status token。
Positive CRC status token
Snipaste_2023-10-13_21-56-11
Negative CRC status token
Snipaste_2023-10-13_21-57-10
eMMC寄存器
eMMC 5.1協(xié)議定義了7個寄存器:OCR,CID,CSD,EXT_CSD,RCA,DSR和QSR,下面簡單的列舉常用的6個寄存器。
名稱 | 寬度(字節(jié)) | 說明 | 實現 |
---|---|---|---|
OCR | 4 | 操作條件寄存器(Operation conditions register)。通過廣播命令獲取寄存器信息,包含設備的供電類型和尋址模式。 | 必須 |
CID | 16 | 卡識別寄存器(Card IDentification)。包含識別設備的唯一碼。 | 必須 |
CSD | 16 | 卡特定數據寄存器(Card Specific Data)。包含卡操作狀態(tài)的具體信息。 | 必須 |
Extended CSD | 512 | 擴展卡特定數據寄存器(Extended Card Specific Data)。包含設備的容量和當前模式信息。 | 必須 |
RCA | 2 | 相對地址寄存器(Relative card address)。在初始化過程中,由主機控制器動態(tài)分配的地址。 | 必須 |
DSR | 2 | 驅動等級寄存器(Driver Stage Register)。配置設備的輸出驅動。 | 可選 |
eMMC總線測試過程
在SDR模式下,Host通過發(fā)送CMD19和CMD14可以進行eMMC總線測試過程(Bus testing procedure),測試eMMC接口的硬件引腳連接性。在DDR模式下,不支持總線測試,CMD19和CMD14被認為是非法命令。
在SDR模式下進行eMMC總線測試時,首先Host發(fā)送CMD19給eMMC設備,接著Host在每根數據線上發(fā)送特定格式的數據給eMMC。然后,Host發(fā)送CMD14給eMMC設備,請求eMMC設備回復翻轉的數據。Host可以通過對接收到的翻轉數據進行比較,就能知道eMMC接口的引腳引腳連接情況。
1bit總線寬度時,eMMC總線測試的數據格式如下圖所示:
Snipaste_2023-10-13_22-22-42
4bit總線寬度時,eMMC總線測試的數據格式如下圖所示:
Snipaste_2023-10-13_22-23-58
8bit總線寬度時,eMMC總線測試的數據格式如下圖所示:
-
Linux
+關注
關注
87文章
11207瀏覽量
208712 -
數據包
+關注
關注
0文章
248瀏覽量
24344 -
總線協(xié)議
+關注
關注
0文章
115瀏覽量
14834 -
emmc
+關注
關注
7文章
197瀏覽量
52550
原文標題:Linux MMC子系統(tǒng) - 3.eMMC 5.1總線協(xié)議淺析(2)
文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論