Linux MMC子系统 - 6.eMMC 5.1工作模式-设备识别模式
 2023.11.26    |      Linux MMC子系统    |     AilsonJack    |     暂无评论    |     220 views
By: AilsonJack
Date: 2023-11-26
个人博客: http://www.only2fire.com/
<section id="nice" data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="font-size: 16px; color: black; padding: 0 10px; line-height: 1.6; word-spacing: 0px; letter-spacing: 0px; word-break: break-word; word-wrap: break-word; text-align: left; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, &#39;PingFang SC&#39;, Cambria, Cochin, Georgia, Times, &#39;Times New Roman&#39;, serif;"><h1 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; font-size: 24px;"><span class="prefix" style="display: none;"></span><span class="content">设备识别模式(Device identification mode)</span><span class="suffix"></span></h1><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">在设备识别模式下,Host会复位eMMC设备,验证工作电压范围和访问模式,识别eMMC设备并为总线上的eMMC设备分配相对设备地址(RCA)。在设备识别模式下,所有数据通讯都只使用命令线(CMD)。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">下图显示了总线模式,操作模式和设备状态之间的关系。每个eMMC设备状态都与一个总线模式和一个操作模式相关联的。</p><p id="_img_parent_tmp" style="text-align:center"><img src="/uploads/AilsonJack/2023.11.19/104527847558235.png" onclick="preview_image(&#39;/uploads/AilsonJack/2023.11.19/104527847558235.png&#39;)"/></p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">从上图可知,设备识别模式包含3个状态,分别是idle状态,ready状态和identification状态。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; border-bottom: 2px solid rgb(239, 112, 96); font-size: 1.3em;"><span class="prefix" style="display: none;"></span><span class="content" style="display: inline-block; font-weight: bold; background: rgb(239, 112, 96); color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;">设备复位</span><span class="suffix"></span><span style="display: inline-block; vertical-align: bottom; border-bottom: 36px solid #efebe9; border-right: 20px solid transparent;"> </span></h2><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">当eMMC设备接收到参数为0x00000000的GO_IDLE_STATE(CMD0)命令后,eMMC设备就会进入idle状态。下面3种情况会让eMMC设备进入idle状态:</p><ul data-tool="mdnice编辑器" style="list-style-type: disc;" class=" list-paddingleft-2"><li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1,1,1); font-weight: 500;">引导模式流程完成以后,eMMC设备会进入idle状态;</section></li><li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1,1,1); font-weight: 500;">在pre-boot状态,如果CMD线保持低电平时间少于74个时钟周期,eMMC设备会进入idle状态;</section></li><li><section style="margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: rgb(1,1,1); font-weight: 500;">如果eMMC设备没有使能引导模式,在上电以后eMMC设备会进入idle状态;</section></li></ul><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">在idle状态,eMMC设备的RCA地址会被初始化为默认值0x0001,Host会将CLK线上的时钟频率设置为识别时钟频率fod(识别时钟频率fod的最大值为400KHz)。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">参数为0x00000000的GO_IDLE_STATE(CMD0)命令在除inactive状态外的其他状态都是有效的。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">考虑到CMD0的兼容性,如果eMMC设备在除inactive状态外的其他状态接收到CMD0命令(参数为除了0xFFFFFFFA和0xF0F0F0F0以外的其他值),eMMC设备将会把CMD0命令(参数为除了0xFFFFFFFA和0xF0F0F0F0以外的其他值)当做复位命令并进入到idle状态。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; border-bottom: 2px solid rgb(239, 112, 96); font-size: 1.3em;"><span class="prefix" style="display: none;"></span><span class="content" style="display: inline-block; font-weight: bold; background: rgb(239, 112, 96); color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;">访问模式验证</span><span class="suffix"></span><span style="display: inline-block; vertical-align: bottom; border-bottom: 36px solid #efebe9; border-right: 20px solid transparent;"> </span></h2><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">Host可以通过CMD1命令读取eMMC设备的OCR寄存器来了解eMMC设备的寻址模式(Access Mode)。Access Mode决定了eMMC设备在响应Host的数据读写命令时,是怎样对eMMC设备的内部存储器进行寻址的。eMMC 5.1协议定义了两种寻址模式:字节寻址(byte mode)和扇区寻址(sector mode)。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">字节寻址采用的是32位宽的寻址位数,这种寻址机制限制了eMMC的最大容量为2GB。为了支持更大容量的eMMC,后续的eMMC协议(比如eMMC 5.1协议)增加了sector寻址方式(1 sector=512B)。容量大于2GB的eMMC,都是采用sector寻址的方式。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">Host通过发送SEND_OP_COND(CMD1)命令给eMMC设备来询问eMMC设备的电压,寻址方式以及是否就绪。如果eMMC设备处于忙状态,eMMC设备回复的固定格式响应内容为0x00FF_8080(eMMC设备容量小于或等于2GB)或者0x40FF_8080(eMMC设备容量大于2GB)。如果eMMC设备进入ready状态,eMMC设备回复的固定格式响应内容为0x80FF_8080(eMMC设备容量小于或等于2GB)或者0xC0FF_8080(eMMC设备容量大于2GB)。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">SEND_OP_COND(CMD1)命令参数的[30:29]位域的值可以表明Host可以处理的寻址方式(一般情况下CMD1的参数为0)。OCR寄存器相应位域的数值可以表明eMMC设备要求的寻址方式。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">只有eMMC设备进入ready状态之后,通过SEND_OP_COND(CMD1)命令获得的OCR寄存器值中的寻址模式才是有效的。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; border-bottom: 2px solid rgb(239, 112, 96); font-size: 1.3em;"><span class="prefix" style="display: none;"></span><span class="content" style="display: inline-block; font-weight: bold; background: rgb(239, 112, 96); color: #ffffff; padding: 3px 10px 1px; border-top-right-radius: 3px; border-top-left-radius: 3px; margin-right: 3px;">设备识别过程</span><span class="suffix"></span><span style="display: inline-block; vertical-align: bottom; border-bottom: 36px solid #efebe9; border-right: 20px solid transparent;"> </span></h2><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">在eMMC设备上电之后,如果eMMC设备没有使能引导模式,或者pre-boot状态下CMD线保持低电平时间少于74个时钟周期,或者eMMC设备引导模式流程完成,那么eMMC设备会进入设备识别模式的idle状态。当然了在除inactive状态外的其他状态下,Host发送参数为0x00000000的GO_IDLE_STATE(CMD0)命令之后,eMMC设备也会进入设备识别模式的idle状态。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">在idle状态下,eMMC设备会进行一些内部初始化工作,Host需要不断的发送SEND_OP_COND(CMD1)命令来查询eMMC设备是否完成初始化。Host发送的CMD1命令参数中,包含了Host支持的寻址模式信息,eMMC设备接收到Host的寻址模式信息之后会与自身要求的寻址模式进行匹配,如果eMMC设备容量大于2GB,但是Host不支持扇区寻址模式,那么eMMC设备就会进入inactive状态。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">当eMMC设备完成初始化之后,eMMC设备就会进入ready状态,此时Host通过CMD1查询到eMMC设备处于ready状态就会停止CMD1命令的发送。eMMC设备处于ready状态时,OCR寄存器的[31]位为1。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">在ready状态下,Host发送ALL_SEND_CID(CMD2)命令来获取eMMC设备的CID寄存器信息,eMMC设备在接收到CMD2命令之后会将CID寄存器的[127:1]位的内容通过响应回复给Host,之后eMMC设备就进入identification状态。CID寄存器中存储的是eMMC设备的CID信息(Card IDentification),CID是eMMC设备的标识信息,CID具有唯一性。CID由厂商ID,设备信息,OEM信息,产品名称,产品版本,产品序列号,制造日期组成。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">在identification状态下,Host发送参数包含16位RCA的SET_RELATIVE_ADDR(CMD3)命令来给eMMC设备分配RCA,给eMMC设备完成RCA分配之后,就代表设备识别模式完成,eMMC设备会进入到数据传输模式的stand-by状态。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">eMMC设备默认的RCA地址为0x0001,Host会在identification状态下为eMMC设备分配RCA,RCA主要用于数据传输模式下Host选择具体的eMMC设备。</p><p data-tool="mdnice编辑器" style="font-size: 16px; padding-top: 8px; padding-bottom: 8px; margin: 0; line-height: 26px; color: black;">设备识别模式下,eMMC设备的状态图如下所示:</p><p id="_img_parent_tmp" style="text-align:center"><img src="/uploads/AilsonJack/2023.11.26/172228923305730.png" onclick="preview_image(&#39;/uploads/AilsonJack/2023.11.26/172228923305730.png&#39;)"/></p></section>
欢迎关注博主的公众号呀,精彩内容随时掌握:
热情邀请仔细浏览下博客中的广告,万一有对自己有用或感兴趣的呢。◕ᴗ◕。。
如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^,当然了能够赞赏博主,那就非常感谢啦!
注: 转载请注明出处,谢谢!^_^
 赞 0
暂无评论,要不要来个沙发
发表评论

 
Copyright © 2015~2023  说好一起走   保留所有权利   |  百度统计  蜀ICP备15004292号