EMMC命令詳解

2021-09-25 04:42:56 字數 4918 閱讀 6615

cmd0帶引數0xf0f0f0f0,go_pre_idle_state是軟體reset命令,使得裝置進入pre_idle狀態

cmd0帶引數0xfffffffa,該命令使得device進入boot operation mode,device將主動傳送資料到匯流排上,資料區域和大小由ecsd暫存器控制。

cmd0帶引數0x00000000, go_idle_state,reset 裝置,使得裝置進入idle狀態。

為了相容,如果裝置收到cmd0,並且引數不是0xfffffffa或者0xf0f0f0f0,那麼該命令會被看做reset命令

cmd1 如果裝置不支援boot mode,或者boot_partition_enable位被清除,power up後裝置會立刻進入idle狀態。在idle狀態,除非收到cmd1,裝置會忽略所有傳輸。對於emmc4.2之前的版本,device在上電後會立刻進入idle狀態。

cmd1是乙個特定的同步命令,用來協商操作電壓範圍以及檢視裝置是否仍處在power-up序列。cmd1的響應除了包含操作電壓profile,還包含乙個busy標記,用來指明裝置是否仍然處在power-up序列,沒有準備號identification

裝置應該在收到cmd1 1s內完成初始化,

cmd1 帶引數0x00ff8000或者0x00000800,表示host要使用的電壓值。

host傳送cmd1後,會從device收到r3,如果r3中busy bit為0,表示device還沒準備好。host重**送cmd1,接收r3這個過程。

cmd2 all_send_cid 用來從device獲取cid,r2用來用來返回device's cid。

cmd3 set_relative_addr 用來給設定裝置的relative device address(rca),裝置收到cmd3後,會立刻從identification mode進入stand-by state,並且不會再響應任何identification。

cmd4 用來設定device的dsr(device stage register)暫存器

cmd5 sleep/awake

用來切換裝置到sleep state或者standby state。裝置在sleep state的電源消耗是最小的,在這個狀態下裝置僅響應reset命令(cmd0 引數為0x00000000或者0xf0f0f0f0)和sleep/awake命令(cmd5),其他命令都會被忽略。

sleep command: cmd5 引數bit15為1; awake command: cmd引數bit15為0

cmd6 switch

切換裝置的操作模式或者修改ext_csd暫存器,switch命令可以用來寫ext_csd或者改變命令集。如果switch命令用來改變命令集,那麼index和value被忽略不會修改ext_csd; 如果switch用來寫ext_csd暫存器,cmd set被忽略。

cmd6引數

[31:26] set to 0 

[25:24] access, 00 切換command set; 01 設定value中指定的位; 10 清除value中指定的位; 11 寫入value指定的值。 

[23:16] index, ext_csd的索引值,index值為0~255,但是僅僅0~191為有效索引值。

[15:8] value,

[7:3] set to 0 

[2:0] cmd set ,要切換的command set

cmd7 select/deselect_card

當裝置處在stand-by狀態,cmd7把裝置從stand-by state切換到transfer state;也可以把裝置從transfer state切換回stand-by state.

當裝置處在disconnect狀態,cmd7把裝置從disconnect state切換到programming state

在以上兩種情況下,使用當前的rca會選擇裝置,任何其他rca 位址都會取消選擇。使用rca 0x0000表示取消選擇。

cmd8 send_ext_csd

請求裝置傳送它的ext_csd暫存器,通過資料塊的方式傳送。

cmd9 send_csd

引數指定裝置的rca [31:16] rca

請求裝置傳送它的device-specific data(csd)到cmd line上。

cmd10 send_cid

引數指定裝置的rca [31:16] rca

請求裝置傳送它的device identification(cid)到cmd line上

cmd12 stop_transmission

引數指定裝置的rca [31:16]

所有的read commands: cmd17 cmd18 cmd21 cmd30,都可以在任意時刻被cmd12打斷。裝置會返回到transfer state

所有的write commands: cmd24 cmd25 cmd26 cmd27,都可以被cmd12中止,但是要求在傳送cmd7之前傳送。

cmd13 send_status

引數 [31:16] 裝置的rca, [0] hpi flags。

請求裝置傳送它的狀態暫存器,如果設定了hpi flag,那麼裝置會在乙個定義良好的時間內中斷。

cmd14 bustest_r

主機從裝置端讀取測試模式資料

cmd15 go_inactive_state

引數[31:16]指定裝置的rca

設定裝置狀態為inactive

cmd19 bustest_w

host傳送匯流排測試模式資料到device

cmd16 set_blocklen

引數[31:0]  block長度

設定接下來所有block命令(讀和寫)的block尺寸。預設的塊長度在csd中指定。

cmd17 read_single_block

引數[31:0] data block位址

讀取引數指定位址的資料塊,塊長度是cmd16設定的(或者使用預設block size)

cmd18 read_multiple_block

引數[31:0] data block的首位址

連續從裝置讀取資料塊到host,直到被stop命令中斷,或者已經達到請求的資料塊數量

cmd21 send_tuning_block

hs200模式專用,用來優化host取樣點,host傳送cmd21命令,device傳送tuning模式資料塊。host會在不同取樣點採集資料,找到最佳取樣點。

cmd23 set_block_count

引數:[30] '0' non-packed '1' packed

[24] forced programming, 設定為1,強迫資料直接寫入儲存介質,而不是僅寫入cache

[15:0] number of blocks, 

定義讀寫塊數目

cmd24 write_block

引數[31:0] 資料塊位址

協議個資料塊到裝置中,尺寸由之前的cmd16 set_blocklen定義

cmd25 write_multiple_block

引數[31:0] 資料塊起始位址

連續資料塊,直到stop_transmission或者已經寫完了請求的資料塊。

cmd26 program_cid

寫裝置cid暫存器。這個命令只能燒寫一次,正常情況下是製造商使用這個命令。

cmd27 program_csd

更改csd中的可程式設計位

cmd49 set_time

設定device的real time clock,device使用這個時鐘做一些內部維護工作。

這個命令類似cmd24 write_block,會傳送乙個rtc information 資料塊。

cmd28 set_write_prot

引數 [31:0] 資料塊位址

如果裝置支援寫保護功能,這個命令設定指定位址組的寫保護位

cmd29 clr_write_prot

引數[31:0] 資料塊位址

如果裝置提供了寫保護功能,這個命令清除指定位址組的寫保護位

cmd30 send_write_prot

引數 [31:0] 寫保護資料位址

class_6_ctrl=0x00: 如果裝置支援寫保護功能,這個命令請求裝置傳送寫保護位狀態

class_6_ctrl=0x01: 命令用來請求裝置傳送released組狀態,0表示給定的組有效可訪問,1表示給定組被released無法使用。

cmd31 send_write_prot_type

引數[31:0] 寫保護起始位址

class_6_ctrl=0x00: 請求裝置傳送不同寫保護組的寫保護型別,64個寫保護位(代表32個寫保護組),通過資料線傳遞。如果組的有效位址已經在有效範圍之外,那麼被填充為0

class_6_ctrl=0x01: 

cmd35 erase_group_start

引數[31:0] 對於=<2g的介質,表示32bits byte位址,對於》2gb介質,是32bits sector位址,會按照erase group對齊。

該命令設定erase操作的首earse group位址。

cmd36 erase_group_end

引數[31:0]對於=<2g的介質,表示32bits byte位址,對於》2gb介質,是32bits sector位址,會按照erase group對齊。

該命令設定erase操作的最後乙個erase group位址。

cmd38 erase

刪除前面選擇的所有earse block

cmd39 fast_io

引數[31:16] rca, 

[15:15] 暫存器寫標誌

[14:8] 暫存器位址

[7:0] 暫存器值

這個命令用來讀寫8bit暫存器資料,r4響應用來返回讀資料。這個命令訪問應用特定的暫存器(未在emmc標準中定義的)

cmd40 go_irq_state

設定裝置進入中斷模式

eMMC 原理 2 eMMC 簡介

emmc 是 embedded card 的簡稱。card,即 mmc,是一種快閃儲存器卡 flash memory card 標準,它定義了 mmc 的架構以及訪問 flash memory 的介面和協議。而 emmc 則是對 mmc 的乙個拓展,以滿足更高標準的效能 成本 體積 穩定 易用等的需...

eMMC效能分析

emmc embedded multi media card 為mmc協會所訂立的 主要是針對手機產品為主的內嵌式儲存器標準規格。emmc的乙個明顯優勢是在封裝中整合了乙個控制器,它提供標準介面並管理快閃儲存器,使得手機廠商就能專注於產品開發的其它部分,並縮短向市場推出產品的時間。對其效能的評定,主...

eMMC協議概述

原文 emmc協議概述 it利刃出鞘的部落格 csdn部落格 專案 位置備註 速度模式 5.3.2 bus speed modes 裝置狀態與操作模式 6.1 e mmc overview table 5 cmd line modes overview boot id等流程 6.3 boot ope...