[元带你学: eMMC协议详解 10] Device 识别流程 与 中断模式

news/2024/7/2 23:07:54

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载

所在专栏 《元带你学: eMMC协议详解》

全文2700字,重点需掌握设备识别过程(CMD1 -> CMD2 -> CMD3), 这很常用, 也是最容易出现异常的地方。其他的了解即可。主要内容有:

目录

1 Device identification mode

1.1 设备复位 Device Reset

 1.2 Access mode validation (higher than 2GB of densities)

1.3 由忙(Busy)转到就绪(Ready)

1.4 设备识别流程

2 中断模式


1 Device identification mode

在设备识别模式下,主机Reset设备,验证工作电压范围和访问模式,识别设备并在总线上为设备分配一个相对设备地址(RCA)。设备识别模式下的所有数据通信都只使用命令线(CMD)。

1.1 设备复位 Device Reset

设备收到GO_IDLE_STATE命令(参数为Ox00000000)后,进入Idle状态。除了这种方式, 下面还有一些其他方式进到 Idle State.

  • 完成Boot operation 后
  • Pre Idle 状态下, CMD线拉低 74 Cycle
  • 上电后(如果没有enable Boot Operation 的情况)

则在上电后启动在这种状态下,设备的输出总线驱动处于高阻抗状态,设备被初始化为一个默认的相对设备地址(Ox0001)和一个默认的驱动级寄存器设置。主机识别时钟速率为总线时钟。参数为Ox00000000的CMD0在除Inactive State外的所有状态下都有效。在Inactive State下,设备不接受参数为0x00000000的CMD0。由于向后兼容的原因,如果设备接收到的CMDO参数不是OxFFFFFFFA或OxFOFOFOFO,在非Inactive状态下,设备将其视为设备复位命令,进入Idle状态。带有参数OxFFFFFFFA的CMDO是一个处于Pre-boot状态的启动启动命令,但是如果主机在非Inactive状态和Pre-boot状态之外的任何状态下发出该命令,设备将把它当作复位命令,并移到Idle状态,CMD0 是一种软复位,eMMC设备不会重启。

 1.2 Access mode validation (higher than 2GB of densities)

当设备繁忙时,e-MMC设备响应固定模式为0x00FF 8080或0x40FF 8080,当设备进入Ready状态时,响应固定模式为Ox80FF8080(容量小于等于2GB)或OxCOFF8080(容量大于2GB),不进入Inactive状态。

1.3 由忙(Busy)转到就绪(Ready)

CMD1响应中的忙位可以被设备用来告诉主机它仍在进行其上电/复位过程,并且尚未准备好进行通信。在这种情况下,主机必须重复发送CMD1,直到忙位被清除。在初始化过程中,不允许主机更改工作电压范围和接入方式设置。这些变化将被设备忽略。如果运行条件真的发生变化,主机必须重置设备(使用参数为Ox00000000的CMDO)并重新启动初始化过程。但是,对于已经处于非活动状态的设备,必须通过关闭电源并重新打开电源来进行硬复位。命令GO_INACTIVE_STATE (CMD15)可以用来将地址设备发送到非活动状态。当主机明确指定去激活某个设备时,使用此命令。命令CMD1应由本标准定义的所有设备执行。

1.4 设备识别流程

总线激活后,主机将向设备发送(CMD1), 设备需要在 1s 内返回CMD1 Ready。

实际中经常遇到手机等开机失败,大部分是因为设备无法回 CMD1 Ready, 这种情况是eMMC 上电初始化过程中遇到了异常, 比如数据损坏或元数据错误导致锁卡。

主机发出广播命令ALL_SEND_CID (CMD2),要求所有设备提供其唯一的设备标识(CID)号。所有未识别的设备(即那些处于就绪状态的设备)同时开始按顺序发送其CID号码。如果这些设备的输出CID位在任何一个比特周期内都与命令线上的相应位不匹配,则立即停止发送CID,必须等待下一个识别周期(保持在Ready状态)。由于每个设备的CID号都是唯一的,因此应该只有一个设备成功地将其完整的CID号发送到主机。然后,该设备进入识别状态。

主机发出CMD3 (SET_RELATIVE_ADDR)来为该设备分配一个相对设备地址(RCA),该地址比CID短,并将用于在未来的数据传输模式(通常具有比0更高的时钟速率)中对设备进行寻址。一旦接收到RCA,设备状态将变为standby状态,并且设备不再对进一步的识别周期做出反应。此外,该设备将其输出驱动器从开式漏极切换为推挽式。主机只要收到对其识别命令(CMD2)的响应(CID),就重复识别过程,即CMD2和CMD3的循环。如果不再有“设备”响应此命令,则表示所有设备已被识别。识别过程完成的超时条件是在发送CMD2后超过N个时钟周期没有起始位。

2 中断模式

e-MMC系统上的中断模式使主机(e-MMC主机)能够连续向从机(设备)数据传输。这种模式减少了主机的轮询负载,从而减少了系统的功耗,同时保持主机对设备服务请求的足够响应。对于主机和设备来说,支持e-MMC中断模式都是一个选项。主机在下发GO_IRQ_STATE (CMD40)命令前,必须确保设备处于standby状态。在等待设备的中断响应时,主机必须保持时钟信号活动。时钟速率可能会根据需要的响应时间而改变。主机使用GO_IRQ_STATE (CMD40)命令将设备设置为中断模式。处于wait - irq状态的设备正在等待内部中断触发事件。一旦事件发生,设备开始向主机发送响应。此响应以开漏模式发送。在等待内部中断事件的同时,设备也在等待命令线上的起始位。一旦检测到启动位,设备将中止中断模式并切换到待机状态。

无论在CMD40响应期间赢得或失去总线控制,设备都会切换到待机状态(与CMD2相反)。当主机接收到中断响应后,主机返回到标准数据通信过程。

 如果主机希望在收到中断响应之前终止中断模式,它可以使用保留的RCA地址Ox0000自行生成CMD40响应(Device bit = 0);这将使设备从等待irq状态恢复到备用状态。现在主机可以恢复标准的通信过程。

免责声明

本文根据公开信息整理,旨在介绍更多的存储知识,所载文章仅为作者观点,不构成投资或商用建议。本文仅用于学习交流, 不允许商用。若有疑问或有侵权行为请联系作者处理。


http://lihuaxi.xjx100.cn/news/1178911.html

相关文章

Linux(基础IO详解)

在基础IO这篇博客中,我们将了解到文件系统的构成,以及缓冲区究竟是个什么东东,我们都知道缓冲区,有时也谈论缓冲区,但不一定真的去深入了解过缓冲区。为什么内存和磁盘交互速度如此之慢?为什么都说Linux中一…

【LeetCode热题100】打开第6天:正则表达式匹配

文章目录 正则表达式匹配⛅前言🔒题目🔑题解 正则表达式匹配 ⛅前言 大家好,我是知识汲取者,欢迎来到我的LeetCode热题100刷题专栏! 精选 100 道力扣(LeetCode)上最热门的题目,适合…

【刷题之路】LeetCode 2073. 买票需要的时间

【刷题之路】LeetCode 2073. 买票需要的时间 一、题目描述二、解题1、方法1——记录每个人需要的时间1.1、思路分析1.2、代码实现 2、方法2——队列记录下标2.1、思路分析2.2、先将队列实现一下2.3、代码实现 一、题目描述 原题连接: 2073. 买票需要的时间 题目描述…

序列化_原理与应用

关键字:序列化,java,proto,json,字节序列,字节数组,byte array,serialize序列化简介 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。 如在内存中的java对象(本是方便JVM使用的格式)序列化为硬盘或是网络传输…

关于linux系统can收发,以及jetson系列can收发的说明,以及SN65HVD230 CAN board和MCP2515和TJA1050的区别是什么?

1,jetson orin、Tx2有can处理器,没有收发器 所以官方推荐用SN65HVD230 CAN board就可以了。理论上单独的TJA1050也是可以的。。。 2,如果本身没有can像jetson nano、香橙派这样,就需要使用MCP2515和TJA1050的结合体了 SN65HVD230…

HCIA-MSTP替代技术之链路捆绑(手工模式)

目录 1,网络的可靠性需求 2,链路聚合原理 链路聚合: 聚合组(Link Aggregation Group,LAG): 成员接口和成员链路: 活动接口和活动链路: 非活动接口和非活动链路: 聚合模式&…

termux的一些问题

我的电脑过安检的时候,竟然被卡住,压坏了。没办法,有需要电脑工作。我就用家里的平板电脑工作。我首先安装了termux,但是遇到这些问题。 (1)我在平板电脑上安装了termux后,我想通过手机登陆到平板电脑,但是…

基于Open3D的点云处理4-数据结构Kdtree和Octree

Kdtree Kdtree是一种划分k维数据空间的数据结构,本质也是一颗二叉树,只不过每个节点的数据都是k维,当k1时,就是普通二叉树。 建立Kdtree实际上是一个不断划分的过程,首先选择最sparse的维度(一般通过计算…