0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

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

概述

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

eMMC 5.1協(xié)議定義的命令可以分為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),設(shè)備鎖定命令;

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

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

? 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),設(shè)備鎖定命令;

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

基本命令(class 0 and class 1)

CMD0

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

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帶參數(shù)0x00000000時,命令的類型為bc,此時CMD0的命令縮寫為GO_IDLE_STATE,命令無響應,命令功能為復位設(shè)備,讓設(shè)備進入idle狀態(tài)。

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

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

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

CMD1

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

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的參數(shù)可以根據(jù)OCR寄存器的位定義來填寫,命令的類型為bcr,此時CMD1的命令縮寫為SEND_OP_COND,命令響應為R3,命令功能為在idle狀態(tài)下要求eMMC設(shè)備通過R3響應返回它的OCR寄存器的值。

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

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

如果Host發(fā)送的CMD1的參數(shù)為0,那么就表示Host在詢問eMMC卡的電壓范圍和busy狀態(tài)。

CMD2

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

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

CMD3

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

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

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

CMD4

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

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

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

CMD5

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

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

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

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

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

CMD6

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

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

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

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

Snipaste_2023-10-19_20-16-57

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

CMD7

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

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

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

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

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

R1b while selecting from Disconnected State to Programming State.

CMD8

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

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的參數(shù)[31:0]位域可以是任意值(默認填寫0),命令的類型為adtc,CMD8的命令縮寫為SEND_EXT_CSD,命令響應為R1,命令功能為請求eMMC設(shè)備通過數(shù)據(jù)塊的方式將它的EXT_CSD寄存器內(nèi)容發(fā)送給Host。

CMD9

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

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

CMD10

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

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

CMD11

該命令已被廢棄。

CMD12

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

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

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

在任意時刻,所有的數(shù)據(jù)寫命令都可以被STOP_TRANSMISSION命令(CMD12)終止。停止寫命令的STOP_TRANSMISSION命令(CMD12)要在CMD7取消選擇設(shè)備之前發(fā)送。寫命令包括: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的命令類型,參數(shù),響應類型,命令縮寫和描述如下表所示:

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

CMD14

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

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的參數(shù)[31:0]位域可以是任意值(默認填寫0),命令的類型為adtc,CMD14的命令縮寫為BUSTEST_R,命令響應為R1,命令功能為從eMMC設(shè)備讀取翻轉(zhuǎn)的總線測試數(shù)據(jù)。

CMD15

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

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的參數(shù)[31:16]位域填寫RCA,[15:0]位域可以是任意值(默認填寫0),命令的類型為ac,CMD15的命令縮寫為GO_INACTIVE_STATE,命令無響應,命令功能為將eMMC設(shè)備切換到inactive狀態(tài)。

CMD19

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

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的參數(shù)[31:0]位域可以是任意值(默認填寫0),命令的類型為adtc,CMD19的命令縮寫為BUSTEST_W,命令響應為R1,命令功能為Host發(fā)送總線測試數(shù)據(jù)給eMMC設(shè)備。








審核編輯:劉清

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

    關(guān)注

    31

    文章

    5268

    瀏覽量

    119640
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    588

    瀏覽量

    27262
  • emmc
    +關(guān)注

    關(guān)注

    7

    文章

    195

    瀏覽量

    52475
  • OCR
    OCR
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    16293

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    linux系統(tǒng)常用命令總結(jié)

    linux系統(tǒng)常用命令
    發(fā)表于 10-08 09:37

    掌握Linux常用命令

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

    linux常用命令

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

    嵌入式Linux常用命令

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

    Linux終端常用命令大全

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

    vim常用命令

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

    Linux教程之Linux常用命令大全

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

    Linux環(huán)境下U-boot常用命令講解的詳細資料說明

    本文檔的主要內(nèi)容詳細介紹的是Linux環(huán)境下U-boot常用命令講解的資料說明
    發(fā)表于 06-21 08:00 ?1次下載
    <b class='flag-5'>Linux</b>環(huán)境下U-boot<b class='flag-5'>常用命令</b>講解的詳細資料<b class='flag-5'>說明</b>

    Linux常用命令大全詳細說明

    Linux常用命令大全(非常全?。。。?最近都在和Linux打交道,感覺還不錯。我覺得Linux相比windows比較麻煩的就是很多東西都要用命令
    發(fā)表于 09-24 08:00 ?5次下載
    <b class='flag-5'>Linux</b>的<b class='flag-5'>常用命令</b>大全詳細<b class='flag-5'>說明</b>

    linux常用命令手冊

    linux常用命令手冊免費下載。
    發(fā)表于 06-01 14:59 ?63次下載

    Memcache系統(tǒng)常用命令講解

    Memcache系統(tǒng)常用命令講解(無線電源技術(shù)商業(yè)計劃書)-該文檔為Memcache系統(tǒng)常用命令講解文檔,是一份還算不錯的參考文檔,感興趣的可以下載看看,,,,,,,,,,,,,,,,
    發(fā)表于 09-28 11:27 ?5次下載
    Memcache<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>常用命令</b>講解

    linux常用命令大全

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

    Linux常用命令

    Linux常用命令
    的頭像 發(fā)表于 01-12 11:19 ?1070次閱讀

    Linux常用命令手冊分享

    linux常用命令合集
    發(fā)表于 04-26 11:46 ?1次下載

    linux常用命令及用法

    Linux是一種開源的操作系統(tǒng),它以穩(wěn)定、高效和安全的特點受到廣大用戶的喜愛。掌握Linux常用命令及其用法對于操作系統(tǒng)的管理和開發(fā)都至關(guān)
    的頭像 發(fā)表于 11-17 09:47 ?588次閱讀