eMMC基础技术4:eMMC command
2024-08-19 20:51:03
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
最新文章
- 虚拟机+apache+php+mysql 环境安装配置
- 【BZOJ-2342】双倍回文 Manacher + 并查集
- Java并发编程核心方法与框架-CountDownLatch的使用
- SharePoint 2013 网站应用程序、网站集、网站知识整理
- Spark Streaming源码解读之生成全生命周期彻底研究与思考
- 使用Spring整合Hibernate,并实现对数据表的增、删、改、查的功能
- android 项目学习随笔十四(WebView)
- (原创)fedora 17安装KVM虚拟机
- adb server is out of date. killing... 解决方案
- 浙大 pat 1038 题解
- label 不同颜色
- 【前端】:jQuery实例
- VSTO在幻灯片里面添加按钮对象
- 201521123008《Java程序设计》第七周实验总结
- Java 对二值化图片识别连通域
- SpringBoot注册Windows服务和启动报错的原因
- phpstorm开启xdebug断点调试,断点调试不成功来这里
- 【Codeforces 17E】Palisection
- iOS-Core Animation: 变换
- Spring/Spring MVC/Spring Boot的区别
热门文章
- NorFlash 学习
- thinkpad yoga 12 / thinkpad s1 yoga / WS860
- go build 和 go run区别
- maven构建myeclipse 工程
- cmd命令对java程序进行编译时出现:编码GBK的不可映射字符
- [leetcode-117]填充每个节点的下一个右侧节点指针 II
- UVA - 1401 | LA 3942 - Remember the Word(dp+trie)
- HTML第二耍 列表标签
- 905. Sort Array By Parity
- 如何使用Cygwin在Windows上运行OpenSSH SSHD服务器