eMMC命令详解

本文主要对eMMC的command进行详细介绍,主要包含如下内容:

  1. command类型
  2. command格式

命令类型:

命令类型 说明
bc 不带response的广播命令
bcr 带有response的广播命令
ac 点对点无数据传输
adtc 点对点数据传输

命令格式:

如上图所示,eMMC Command由48Bits组成,各个Bits的解析如下所示:

  • 总长度48bits;
  • 固定以0开始,以1结束;
  • transmiter bit表示数据的传输方向,1代表从host to device;
  • command index用6个bits指示了command的索引,取值范围0~63;
  • argument有些command需要发送参数,是否需要发送参数依赖于具体的命令;
  • CRC7是包含Start Bit、Transmission Bit、Command Index和Argument内容的CRC校验值。通过CRC7保护,device端在接收到CMD时同样会计算一个CRC值,如果与host发送的CRC不一致,则被认为是传输错误;

注1:eMMC可能不会支持0~63的所有命令,有些命令可能会不支持;
注2:CRC校验简单来说,是发送方将需要传输的数据"除于"(模2除)一个约定的数,并将得到的余数附在数据上一并发送出去。接收方收到数据后,再做同样的“除法”,然后校验得到余数是否与接收的余数相同。如果不相同,那么意味着数据在传输过程中发生了改变。更多的细节不在本文展开描述,感兴趣的读者可以参考CRC wiki中的介绍。

命令分类:

eMMC将command index(0~56)分成12个class,每个class代表一类功能,包含所有commands的一个子集。具体某一个设备支持哪些class的命令,可以通过CSD寄存器的CCC[95:84]feilds来查询,如bit84为1则表示支持class0。

命令分来 描述 note
class 0 basic 基本命令
class 1 obsolete 废弃
class 2 block read 块数据读相关命令,包括设置块长度、读取单块、读取多块
class 3 obsolete 废弃
class 4 block write 块数据写相关命令,包括设置块个数、写入单块、写入多块、修改设备id寄存器、修改CSD、设置RTC
class 5 erase 设置擦除组开始地址、设置擦除组结束地址、擦除操作
class 6 write protection 设置写保护、清除写保护、获取device的写保护状态、获取写保护类型
class 7 lock device lock/unlock device
class 8 application-specific 指示下一个命令是一个特定应用命令而非标准命令
class 9 I/O mode 写寄存器、设置系统进入中断模式
class 10 security protocols 连续传输数据块从device to host或从host to device
class 11 command queuing 执行队列里的任务

上述内容转自:https://www.cnblogs.com/smartjourneys/p/6657397.html

CMD0

eMMC命令详解_第1张图片

CMD1

CMD2

CMD3

CMD4

CMD5

CMD6

CMD7

CMD8

CMD9

CMD10

CMD12

CMD13

eMMC命令详解_第2张图片

CMD14

CMD15

CMD19

NOTE 1- CMD7, R1 while selecting from Stand-By State to Transfer State; R1b while selecting from Disconnected State to Programming State.
NOTE 2 - CMD12, RCA in CMD12 is used only if HPI bit is set. The argument does not imply any RCA check on the device side.
NOTE 3 - CMD12, R1 for read cases and R1b for write cases.

Block-oriented read commands (class 2):

CMD16

CMD17

CMD18

eMMC命令详解_第3张图片

CMD21

NOTE 1 - CMD17 & CMD18, Data address for media =<2 32="" gb="" is="" a="" bit="" byte="" address="" and="" data="" for="" media=""> 2GB is a 32 bit sector (512 B) address.
NOTE 2 - CMD17, The transferred data must not cross a physical block boundary, unless READ_BLK_MISALIGN is set in the CSD register.

Block-oriented write commands (class 4):

CMD23 (default)

CMD23 (packed)

CMD24

CMD25

CMD26

CMD27

CMD49

NOTE 1 - CMD24 & CMD25, Data address for media =<2 32="" gb="" is="" a="" bit="" byte="" address="" and="" data="" for="" media=""> 2GB is a 32 bit sector (512 B) address.
NOTE 2 - CMD24, The transferred data must not cross a physical block boundary, unless READ_BLK_MISALIGN is set in the CSD register.

Block-oriented write protection commands (class 6)
Erase commands (class 5)
I/O mode commands (class 9)
Lock Device commands (class 7)
Application-specific commands (class 8)
Security Protocols (class 10)
Command Queue (Class 11)

本文转自:蜗窝科技

你可能感兴趣的:(Linux驱动)