1.前言

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

(1)command类型

(2)command格式

2.command类型

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

表 command类型

3. command格式

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

表 command格式

  • 总长度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 中的介绍。

4. command分类

eMMC将command index(0~56)分成12个class,每个class代表一类功能,包含所有commands的一个子集。
具体某一个设备支持哪些class的命令,可以通过CSD寄存器的CCC[95:84] feilds来查询,如bit84为1则表示支持class0
 
device command class class description  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 执行队列里的任务
class 12 reserved \

表 command分类

5.参考文档

[1] http://www.jedec.org/sites/default/files/docs/JESD84-B51.pdf

最新文章

  1. 虚拟机+apache+php+mysql 环境安装配置
  2. 【BZOJ-2342】双倍回文 Manacher + 并查集
  3. Java并发编程核心方法与框架-CountDownLatch的使用
  4. SharePoint 2013 网站应用程序、网站集、网站知识整理
  5. Spark Streaming源码解读之生成全生命周期彻底研究与思考
  6. 使用Spring整合Hibernate,并实现对数据表的增、删、改、查的功能
  7. android 项目学习随笔十四(WebView)
  8. (原创)fedora 17安装KVM虚拟机
  9. adb server is out of date. killing... 解决方案
  10. 浙大 pat 1038 题解
  11. label 不同颜色
  12. 【前端】:jQuery实例
  13. VSTO在幻灯片里面添加按钮对象
  14. 201521123008《Java程序设计》第七周实验总结
  15. Java 对二值化图片识别连通域
  16. SpringBoot注册Windows服务和启动报错的原因
  17. phpstorm开启xdebug断点调试,断点调试不成功来这里
  18. 【Codeforces 17E】Palisection
  19. iOS-Core Animation: 变换
  20. Spring/Spring MVC/Spring Boot的区别

热门文章

  1. NorFlash 学习
  2. thinkpad yoga 12 / thinkpad s1 yoga / WS860
  3. go build 和 go run区别
  4. maven构建myeclipse 工程
  5. cmd命令对java程序进行编译时出现:编码GBK的不可映射字符
  6. [leetcode-117]填充每个节点的下一个右侧节点指针 II
  7. UVA - 1401 | LA 3942 - Remember the Word(dp+trie)
  8. HTML第二耍 列表标签
  9. 905. Sort Array By Parity
  10. 如何使用Cygwin在Windows上运行OpenSSH SSHD服务器