本文结合emmc JEDEC5.1协议规范查看,效果更佳!
1 概述/规则
- 简介
cmdq为命令队列,就是将一些读写命令排成一个队列,进行数据传输。EMMC能够同时建立多个传输任务,并且执行当中任意一个任务。
host可以跟踪队列的状态,并且制定命令队列的执行顺序。
device将cmd44、cmd45视为队列中的一个任务,如果没有检测到错误,则会发送一个指示成功的响应。
- 设置流程
(1)读寄存器ecsd[308]看是否支持cmdq。通过ecsd[15]进行开启cmdq。以及通过ecsd[307]获得cmdq的最大任务数量。
(2)cmd44、cmd45,然后cmd13查看对应的任务是否被置为1,也就是“ready for execution”。然后发送cmd46或者cmd47进行读写。
- 重要规则
(1)当发送cmd6切换分区或者不使能cmdq的时候,命令队列必须为空的状态。如果发送cmd6时候命令队列不是空的,则会出现非法指令。
(2)使能命令队列前,要设置一个sector为512字节。如果一个sector的大小不是512个字节,那么cmd46、cmd47的response就会报错。
(3)设备不保证队列任务被处理的顺序。这个顺序视命令的重要性而定,由主机确定。
(4)对于
本文详细介绍了eMMC命令队列CMDQ的工作原理和使用规则,包括CMD44至CMD48的相关命令,强调了CMDQ启用条件、任务管理和错误处理。CMDQ允许主机将多个读写任务组织成队列,提高数据传输效率。同时,文章提到了CMDQ在特定分区如RPMB区域的支持情况,以及CMDQ寄存器的配置和任务状态的监控。
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



