<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux MMC子系統-eMMC常用命令說明(1)

嵌入式那些事 ? 來源:嵌入式那些事 ? 2024-01-18 13:46 ? 次閱讀

概述

本文對eMMC 5.1協議定義的命令做一個簡單的說明,以便在使用具體的命令時有個參考。

eMMC 5.1協議定義的命令可以分為11類,具體分類描述如下:

? Basic commands (class 0 and class 1),基本命令;

? Block-oriented read commands (class 2),面向塊的讀命令;

? Class 3 commands,Class 3命令;

? Block-oriented write commands (class 4),面向塊的寫命令;

? Block-oriented write protection commands (class 6),面向塊的寫保護命令;

? Erase commands (class 5),擦除命令;

? I/O mode commands (class 9),I/O模式命令;

? Lock Device commands (class 7),設備鎖定命令;

? Application-specific commands (class 8),特定應用命令;

? Security Protocols (class 10),安全協議命令;

? Command Queue (Class 11),命令隊列命令;

本文主要對常用的6類命令進行說明,其他不常用的命令遇到時查看手冊即可:

? Basic commands (class 0 and class 1),基本命令;

? Block-oriented read commands (class 2),面向塊的讀命令;

? Block-oriented write commands (class 4),面向塊的寫命令;

? Erase commands (class 5),擦除命令;

? Lock Device commands (class 7),設備鎖定命令;

? Application-specific commands (class 8),特定應用命令;

基本命令(class 0 and class 1)

CMD0

CMD0的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
bc [31:0] 00000000 None GO_IDLE_STATE Resets the Device to idle state
bc [31:0] F0F0F0F0 None GO_PRE_IDLE_STATE Resets the Device to pre-idle state
--- [31:0]FFFFFFFA None BOOT_INITIATION Initiate alternative boot operation

CMD0帶參數0x00000000時,命令的類型為bc,此時CMD0的命令縮寫為GO_IDLE_STATE,命令無響應,命令功能為復位設備,讓設備進入idle狀態。

CMD0帶參數0xF0F0F0F0時,命令的類型為bc,此時CMD0的命令縮寫為GO_PRE_IDLE_STATE,命令無響應,命令功能為復位設備,讓設備進入pre-idle狀態。

CMD0帶參數0xFFFFFFFA時,命令無類型,此時CMD0的命令縮寫為BOOT_INITIATION,命令無響應,命令功能為讓設備進入boot operation模式。

考慮到CMD0的兼容性,如果eMMC設備收到CMD0命令,并且參數是除了0xFFFFFFFA或者0xF0F0F0F0以外的其他值,eMMC設備在除了Inactive狀態的其他任何狀態下,eMMC設備會將CMD0命令視為設備復位命令,并讓eMMC設備進入idle狀態。

CMD1

CMD1的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
bcr [31:0] OCR with-out busy R3 SEND_OP_COND Asks Device, in idle state, to send its Operating
Conditions Register contents in the response on the
CMD line.

CMD1的參數可以根據OCR寄存器的位定義來填寫,命令的類型為bcr,此時CMD1的命令縮寫為SEND_OP_COND,命令響應為R3,命令功能為在idle狀態下要求eMMC設備通過R3響應返回它的OCR寄存器的值。

如果eMMC設備不支持boot operation模式,或者eMMC設備僅僅支持eMMC 4.2或者更早的版本,或者BOOT_PARTITION_ENABLE位被清除,在power-on之后eMMC設備會自動進入idle狀態。處于idle狀態的eMMC設備,除非收到CMD1,否則會忽略所有的總線事務。

CMD1是一個特殊的同步命令,用來協商操作電壓范圍以及查看設備是否仍處在power-up序列。CMD1的響應除了包含eMMC設備的操作電壓profile,還包含一個busy標志,用于指示eMMC設備仍處于power-up過程,并且沒有準備好去identification。當R3中的busy位為0時,告訴Host當前的eMMC設備并沒有準備好,Host需要重復發送CMD1和接收R3,直到eMMC設備準備好。當Host發送CMD1給eMMC設備,并且CMD1的參數帶有有效電壓范圍,那么eMMC設備必須在1秒以內完成它的初始化。

如果Host發送的CMD1的參數為0,那么就表示Host在詢問eMMC卡的電壓范圍和busy狀態。

CMD2

CMD2的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
bcr [31:0] stuff bits R2 ALL_SEND_CID Asks Device to send its CID number on the CMD line

CMD2的參數[31:0]位域可以是任意值(默認填寫0),默認將參數設置為0即可,命令的類型為bcr,CMD2的命令縮寫為ALL_SEND_CID,命令響應為R2,命令功能為獲取eMMC設備的CID寄存器內容,CID寄存器內容通過R2返回給Host。

CMD3

CMD3的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:16] RCA
[15:0] stuff bits
R1 SET_RELATIVE_ADDR Assigns relative address to the Device

CMD3的參數[31:16]位域填寫設置給eMMC設備的RCA,[15:0]位域可以是任意值(默認填寫0),命令的類型為ac,CMD3的命令縮寫為SET_RELATIVE_ADDR,命令響應為R1,命令功能為給eMMC設備分配RCA。

一旦eMMC設備接收到CMD3,并且修改自身的RCA寄存器內容值為Host設置的RCA值之后,eMMC的設備狀態將從Identification狀態切換為Stand-by狀態,并且eMMC設備不會再響應任何identification。此外,eMMC設備將把它的輸出驅動方式從開漏輸出(open-drain )切換為推挽輸出(open-drain )。

CMD4

CMD4的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
bc [31:16] DSR
[15:0] stuff bits
None SET_DSR Programs the DSR of the Device

CMD4的參數[31:16]位域填寫設置給eMMC設備的DSR,[15:0]位域可以是任意值(默認填寫0),命令的類型為bc,CMD4的命令縮寫為SET_DSR,命令無響應,命令功能為設置eMMC設備的DSR(driver stage register)寄存器。

CMD5

CMD5的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:16] RCA
[15]Sleep/Awake
[14:0] stuff bits
R1b SLEEP_AWAKE Toggles the Device between Sleep state and Standby
state.

CMD5的參數[31:16]位域填寫RCA,[15]位的值表示該命令是Sleep還是Awake命令,[14:0]位域可以是任意值(默認填寫0),命令的類型為ac,CMD5的命令縮寫為SLEEP_AWAKE,命令響應為R1b,命令功能為將eMMC設備的狀態設置為Sleep狀態或者Awake狀態。

eMMC設備在Sleep狀態下的電源消耗是最小的,在Sleep狀態下eMMC設備僅僅響應復位命令(參數為0x00000000或者0xF0F0F0F0的CMD0或者硬件復位)和SLEEP_AWAKE命令(CMD5),所有其他命令都會被eMMC設備忽略。

CMD5的參數[15]位為1時表示該命令為Sleep命令。

CMD5的參數[15]位為0時表示該命令為Awake命令。

CMD6

CMD6的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:26] Set to 0
[25:24] Access
[23:16] Index
[15:8] Value
[7:3] Set to 0
[2:0] Cmd Set
R1b SWITCH Switches the mode of operation of the selected Device
or modifies the EXT_CSD registers.

CMD6的參數[31:26]位域填寫0,[25:24]位域設置訪問模式,[23:16]位域填寫EXT_CSD寄存器的索引,[15:8]位域填寫Value值,[7:3]位域填寫0,[2:0]位域填寫要切換的命令集,命令的類型為ac,CMD6的命令縮寫為SWITCH,命令響應為R1b,命令功能為切換eMMC設備的操作模式或者修改eMMC設備的EXT_CSD寄存器。

訪問模式及其說明如下圖所示:

ab5f8d58-b5b9-11ee-8b88-92fbcf53809c.png

Snipaste_2023-10-19_20-16-57

索引域([23:16]位域 Index)的取值范圍為0-255,但是僅僅0-191范圍內的值是有效的。如果索引域的值在192-255范圍內,那么eMMC設備將不會執行任何的修改操作,并且SWITCH_ERROR狀態位將被設置。

CMD7

CMD7的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:16] RCA
[15:0] stuff bits
R1/R1b SELECT/DESELECT_CARD Command toggles a device between the standby and
transfer states or between the programming and
disconnect states.
NOTE In both cases the Device is selected by its own
relative address and gets deselected by any other address;
address 0 deselects the Device.

CMD7的參數[31:16]位域填寫RCA,[15:0]位域可以是任意值(默認填寫0),命令的類型為ac,CMD7的命令縮寫為SELECT/DESELECT_CARD,命令響應為R1/R1b,命令功能為切換eMMC設備的狀態,在standby狀態和transfer狀態之間切換或者在programming狀態和disconnect狀態之間切換。

當eMMC設備處于Stand-by狀態時,CMD7(命令參數中RCA域為設備的RCA)能夠將eMMC設備狀態切換到Transfer狀態。當eMMC設備處于Transfer狀態并且eMMC設備之前被選中時,CMD7(命令參數中RCA域為除設備RCA外的其他值)能夠將eMMC設備狀態切換到Stand-by狀態并且釋放eMMC設備與Host之間的連接狀態。當Host發送CMD7(命令參數中RCA域為0x0000)給eMMC設備時,eMMC設備將切換到Stand-by狀態。當eMMC設備處于Transfer狀態時,如果接收到了來自Host的CMD7(命令參數中RCA域為設備的RCA),那么eMMC設備將忽略該命令,或許該命令會被視為非法命令。

當eMMC設備處于Disconnect狀態時,CMD7(命令參數中RCA域為設備的RCA)能夠將eMMC設備狀態切換到Programming狀態。當eMMC設備處于Programming狀態并且eMMC設備之前被選中時,CMD7(命令參數中RCA域為除設備RCA外的其他值)能夠將eMMC設備狀態切換到Disconnect狀態并且釋放eMMC設備與Host之間的連接狀態。當eMMC設備處于Programming狀態時,如果接收到了來自Host的CMD7(命令參數中RCA域為設備的RCA),那么eMMC設備將忽略該命令,或許該命令會被視為非法命令。

R1 while selecting from Stand-By State to Transfer State;

R1b while selecting from Disconnected State to Programming State.

CMD8

CMD8的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
adtc [31:0] stuff bits R1 SEND_EXT_CSD Device sends its EXT_CSD register as a block of data.

CMD8的參數[31:0]位域可以是任意值(默認填寫0),命令的類型為adtc,CMD8的命令縮寫為SEND_EXT_CSD,命令響應為R1,命令功能為請求eMMC設備通過數據塊的方式將它的EXT_CSD寄存器內容發送給Host。

CMD9

CMD9的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:16] RCA
[15:0] stuff bits
R2 SEND_CSD Addressed Device sends its Device-specific data
(CSD) on the CMD line.

CMD9的參數[31:16]位域填寫RCA,[15:0]位域可以是任意值(默認填寫0),命令的類型為ac,CMD9的命令縮寫為SEND_CSD,命令響應為R2,命令功能為獲取eMMC設備的CSD寄存器內容,CSD寄存器內容通過R2返回給Host。

CMD10

CMD10的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:16] RCA
[15:0] stuff bits
R2 SEND_CID Addressed Device sends its Device identification
(CID) on CMD the line.

CMD10的參數[31:16]位域填寫RCA,[15:0]位域可以是任意值(默認填寫0),命令的類型為ac,CMD10的命令縮寫為SEND_CID,命令響應為R2,命令功能為獲取eMMC設備的CID寄存器內容,CID寄存器內容通過R2返回給Host。

CMD11

該命令已被廢棄。

CMD12

CMD12的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:16] RCA
[15:1] stuff bits
[0] HPI
R1/R1b STOP_TRANSMISSION Forces the Device to stop transmission. If HPI flag is
set the device shall interrupt its internal operations in a
well-defined timing.

CMD12的參數[31:16]位域填寫RCA,[15:1]位域可以是任意值(默認填寫0),[0]位填寫HPI,命令的類型為ac,CMD12的命令縮寫為STOP_TRANSMISSION,命令響應為R1/R1b,命令功能為強制eMMC設備停止傳輸,如果HPI標志被置位,那么eMMC設備會在一個合適的時機打斷它的內部操作。

在任意時刻,所有的數據讀命令都可以被STOP_TRANSMISSION命令(CMD12)終止。數據傳輸將會結束并且eMMC設備將返回到Transfer狀態。讀命令包括:READ_SINGLE_BLOCK(CMD17),READ_MULTIPLE_BLOCK(CMD18),SEND_TUNING_BLOCK(CMD21),SEND_WRITE_PROT(CMD30)。

在任意時刻,所有的數據寫命令都可以被STOP_TRANSMISSION命令(CMD12)終止。停止寫命令的STOP_TRANSMISSION命令(CMD12)要在CMD7取消選擇設備之前發送。寫命令包括:WRITE_BLOCK(CMD24),WRITE_MULTIPLE_BLOCK(CMD25),PROGRAM_CID(CMD26),PROGRAM_CSD(CMD27)。

RCA in CMD12 is used only if HPI bit is set. The argument does not imply any RCA check on the device side.

R1 for read cases and R1b for write cases.

CMD13

CMD13的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:16] RCA
[15] SQS
[14:1] stuff bits
[0] HPI
R1 SEND_STATUS In case SQS bit = 0: Addressed Device sends its status
register. If HPI flag is set the device shall interrupt its
internal operations in a well-defined timing.
In case SQS bit = 1: indicate that this is a QSR query.
In response device shall send the QSR (Queue Status
Register). In this case HPI must be set to ‘0’.

CMD13的參數[31:16]位域填寫RCA,[15]位填寫SQS,[14:1]位域可以是任意值(默認填寫0),[0]位填寫HPI,命令的類型為ac,CMD13的命令縮寫為SEND_STATUS,命令響應為R1,命令功能為查詢eMMC設備的狀態或者讀取QSR寄存器值。

CMD14

CMD14的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
adtc [31:0] stuff bits R1 BUSTEST_R A host reads the reversed bus testing data pattern from
a Device.

CMD14的參數[31:0]位域可以是任意值(默認填寫0),命令的類型為adtc,CMD14的命令縮寫為BUSTEST_R,命令響應為R1,命令功能為從eMMC設備讀取翻轉的總線測試數據。

CMD15

CMD15的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
ac [31:16] RCA
[15:0] stuff bits
None GO_INACTIVE_STATE Sets the Device to inactive state

CMD15的參數[31:16]位域填寫RCA,[15:0]位域可以是任意值(默認填寫0),命令的類型為ac,CMD15的命令縮寫為GO_INACTIVE_STATE,命令無響應,命令功能為將eMMC設備切換到inactive狀態。

CMD19

CMD19的命令類型,參數,響應類型,命令縮寫和描述如下表所示:

Type Argument Resp Abbreviation Command Description
adtc [31:0] stuff bits R1 BUSTEST_W A host sends the bus test data pattern to a Device.

CMD19的參數[31:0]位域可以是任意值(默認填寫0),命令的類型為adtc,CMD19的命令縮寫為BUSTEST_W,命令響應為R1,命令功能為Host發送總線測試數據給eMMC設備。








審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    30

    文章

    5109

    瀏覽量

    117987
  • Linux系統
    +關注

    關注

    4

    文章

    573

    瀏覽量

    26959
  • emmc
    +關注

    關注

    6

    文章

    181

    瀏覽量

    52061
  • OCR
    OCR
    +關注

    關注

    0

    文章

    137

    瀏覽量

    16150

原文標題:Linux MMC子系統 - 4.eMMC 5.1常用命令說明(1)

文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    linux常用命令

    linux常用命令
    發表于 08-20 22:53

    linux系統常用命令總結

    linux系統常用命令
    發表于 10-08 09:37

    Linux常用命令

    Linux常用命令
    發表于 05-08 14:39

    掌握Linux常用命令

    一、實驗目的和要求1掌握Linux常用命令2學會如何獲取命令幫助信息3熟練掌握Linux常用命令
    發表于 12-16 06:08

    Linux常用命令全集

    Linux常用命令全集.rar  date 功能說明:顯示或設置系統時間與日期。 語  法:date [-d ][-u][+%H%I%K%l%M%P%r%
    發表于 03-10 13:42 ?45次下載

    linux常用命令

    linux常用命令集 名稱:cal使用權限:所有使用者使用方式:cal [-mjy] [month [year]]說明:顯示日歷。若只有一個參數,則代表年份(1-9999),顯
    發表于 01-18 12:45 ?821次閱讀

    嵌入式Linux常用命令

    嵌入式Linux常用命令,比較基礎,非常實用,適合新手學習。
    發表于 11-24 15:22 ?2次下載

    Linux終端常用命令大全

    Linux終端常用命令大全,通俗易懂,容易上手。包含所有命令,方便查找各個指令功能。
    發表于 04-28 16:30 ?15次下載

    vim常用命令

    vim常用命令
    發表于 01-08 15:59 ?3次下載

    Linux教程之Linux常用命令大全

    Linux教程之Linux常用命令大全
    的頭像 發表于 03-30 10:34 ?5430次閱讀

    linux常用命令手冊

    linux常用命令手冊免費下載。
    發表于 06-01 14:59 ?62次下載

    linux常用命令大全

    linux常用命令大全,一些常用命令都可以找到
    發表于 03-03 09:20 ?0次下載

    DOS系統常用命令

    介紹了DOS系統常用命令。
    發表于 03-21 14:59 ?0次下載

    Linux常用命令

    Linux常用命令
    的頭像 發表于 01-12 11:19 ?903次閱讀

    Linux常用命令手冊分享

    linux常用命令合集
    發表于 04-26 11:46 ?1次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>