加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

eMMC 数据传输模式

(2015-08-03 19:46:40)
标签:

emmc

数据传输

data

transfer

分类: eMMC
当device在stand-by模式时,CMD和DAT line的传输会以push-pull模式进行。在host读取全部的CSD寄存器之前,fpp时钟必须维持在fod。host发送SEND_CSD(CMD9)命令来得到Device Specific Data(CSD寄存器),即,block length,设备存储大小,最大时钟频率等内容。
http://s16/mw690/001ZrwTjgy6UlI37TzN3f&690数据传输模式" TITLE="eMMC 数据传输模式" />

注意 busy(Dat0=low)信号在prg-state状态永远是激活的。由于之前版本的原因,设备在prg-state(busy激活时)状态可能仍然会把CMD24/25当做有效或无效命令。所以host应注意设备如果在prg-state状态且busy激活时不要发送CMD24/25命令。

广播命令SET_DSR(CMD4)会配置device的驱动内容。 此命令会根据应用的总线布局(长度)和数据传输速率来编辑其DSR寄存器。时钟也在此时由fod切换到fpp。

当设备处于stand-by阶段时,CMD7命令用于选择特定的设备(在argument中包含设备的relative address),且把其放入transfer状态。如果某个设备之前就被选择且处于transfer阶段,此时host发送的CMD7选择的device不是自己,则此设备回到stand-by状态。又或者host发送的CMD7命令使用了保留地址0x0000到某个设备,则此设备会回到stand-by状态。若是设备处于transfer阶段而收到了符合自己地址的CMD7命令,则此命令会被视为无效命令。在设备被赋予了RCA地址之后,将不再对识别命令做出任何回应--CMD1,CMD2或者CMD3.

当设备处于Disconnect状态时,CMD7用于选择特定设备(在argument中包含设备的relative address)且把其放入Programming状态。若是某个设备在之前已经被选择且处于Programming状态,但host发送的CMD7命令地址不是自己,则此设备回到Disconnect状态。若是设备处于Programming阶段而收到了符合自己地址的CMD7命令,则此命令会被视为无效命令。

所有的在数据传输模式的数据通信都是基于host和选定的device之间的点对点传输。所有寻址的命令在gCMD line上会收到回应。

由图中内容来总结不同数据传输模式之间的关系的话:

1. 所有的数据读取命令可以用停止命令(CMD12)在任何时候终止。数据传输会终止且设备会返回到transfer状态。数据读取命令包括了: block读取(CMD17), multiple block 读取(CMD18), send tuning block(CMD21)和send write protect(CMD30)。

2. 所有的写数据命令可以用停止命令(CMD12)在任何时候终止。写命令必须在使用CMD7命令反选device之前被停止掉。写数据命令包括了: block write(CMD24和CMD25), write CID(CMD26), write CSD(CMD27)。

3. 当数据传输一结束,device会退出写数据状态且移动到Programming状态(传输成功)或者Transfer状态(传输失败)

4.若一个写block操作被停止,但最后一个block的CRC和length都有效,则数据会被写入。

5. 设备可以为block write提供buffering功能,这意味着之前的block在写入的时候,下一个block的可以被送到设备里。

6. 对于write CSD, write CID, write protection和 erase 是没有buffering功能的。这意味着当device为上述某个命令工作的时候,其他的数据传输命令是不会被接受的。device是busy且处于Programming状态时,DAT0 line会保持low。

7. device在被写入的时候Parameter设置命令是不允许被接受的。parameter设置命令包括了: set block length(CMD16), erase group selection(CMD35-36)。

8.device在被写入的时候读取命令是不允许被接受的。

9.把另外一个device从stand-by转换到Transfer状态(CMD7)是不会终止写入操作的。此设备会转换为Disconnect状态且释放DAT0的控制权。

10. 在Disconnect状态的device可以重新被选择(CMD7)。此情况下device会移动到Programming状态且重新激活busy标识。

11. 重启设备(CMD0, CMD15或者硬件重启)或者停电会终止任何将要发送或者正在写入的操作。这会引起一些或者全部被寻址的数据进入一个未知状态,除非使用Reliable Write来保证写入的可靠性。host有责任来防止这种情况的发生。

12.在执行bus testing阶段之前(CMD19,CMD14),建议设置数据传输的时钟频率。这样的话bus test会给出一个真实的数据。若是测试的时钟频率小于实际数据传输频率则测试结果是错误的。

13.如下的命令:bus testing(CMD19,CMD14), lock-unlock(CMD42)和set block length(CMD16)在设备配置为DDR传输模式时是不被允许的,且会被作为无效命令。


0

阅读 收藏 喜欢 打印举报/Report
前一篇:eMMC 中断模式
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有