【eMMC协议】6.4.3 - 6.6

6.4.3 From busy to ready
  1. CMD1中有busy bit,用来回应host自身状态。此时,host会重复发送CMD1直到busy bit清零
  2. 在初始化过程中,不允许host 对eMMC的工作电压和寻址访问模式做任何更改。eMMC收到设置发生改变的消息时自身也会忽略掉。如果需要改变状态,则host需要使用CMD0 (0x00000000)来复位EMMC重新执行初始化操作
  3. 当EMMC处于Inactive状态,必须通过上下电来进行硬重置
  4. 当host需要停用设备时,会使用CMD15(GO_INACTIVE_STATE)将eMMC切换到Inactive状态。
6.4.4 Device identification process
  1. 主机以open-drain mode启动Device identification process ,识别时钟速率为fod。在Device identification阶段,在open-drain模式下,CMD总线允许并行操作。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xylBarCZ-1689326620053)(C:\Users\bw002421\AppData\Roaming\Typora\typora-user-images\1686215946382.png)]
  2. bus 激活后,host会要求eMMC发送valid operation conditions,即CMD1。 与之对应的响应则是所有EMMC在满足协议要求下进行"wired and"操作。不兼容的EMMC则被设置为Inactive状态。
  3. host会广播CMD2(ALL_SEND_CID),询问每个eMMC的CID。然后所以未识别的eMMC(处于Ready State),会串行发送他们的CID,host按位监控输出
  4. 没有识别成功的EMMC 需要立刻停止在CMD信号线上发送CID,并继续保持ready 状态,等待下一个identification cycle到来。因为CID的唯一性,因此在host应该只收到一个应答。应答的eMMC会进入到Identification state。之后host发送CMD3(SET_RELATIVE_ADDR) 赋予eMMC RCA地址(比CID长度要短一些),之后用于传输数据(时钟速率比fod高)
  5. eMMC一旦发送了RCA之后就会进入Stand-by模式,并且不会再对identification做出响应,将CMD mode从open-drain转换到push-pull
  6. host 在收到CMD2命令的CID 响应之前会重复识别过程——一直发送CMD2和CMD3。一旦发现没有其余的EMMC 响应的话,说明所有的EMMC 均被识别完成。识别完成的标志是在发送CMD2后超过Nid个时钟都没有收到start bit

6.5 Interrupt mode

eMMC系统上的中断模式使host能够同时向从eMMC授予传输数据。此模式降低了host的轮询负载,从而降低了系统的功耗,同时保持了host对EMMC服务请求的足够响应。host和eMMC均可选择支持eMMC中断模式。

  1. 发送CMD40 时确保eMMC处于stand-by模式
    在这里插入图片描述
  2. 当host等待eMMC对中断命令的响应时,必须保证时钟信号有效。时钟速率可以根据所需的响应时间做更改。
  3. 处于中断模式下的eMMC必须等待中断事件进行触发。当出现中断事件时,eMMC在open-drain模式下将其响应发送至host。
  4. 在等待内部中断事件器件,eMMC也会等待来自CMD 信号线的命令,当检测到CMD的起始位时eMMC将会停止中断模式 ,同时切换自身状态为stand-by模式。
  5. 在CMD40 响应期间,eMMC会切换至stand-by状态。host收到中断响应后,host会进入标准数据传输流程。
  6. 如果host想要在接收到中断响应之前终止中断模式,可以使用预留的RCA地址参数0x0000生成CMD40响应(device bit=0)这样就可以让eMMC从等待IRQ状态返回到stand-by状态。然后host可以恢复正常的通信过程。

6.6 Data transfer mode

当eMMC 进入stand-by 模式后,CMD信号线和data信号线以push-pull进行数据传输。同时fpp时钟频率保持在fod直到eMMC的csd 寄存器被host 获取。紧接着host 会下发CMD9(SEND_CSD)获取CSD寄存器中的指定数据。

  1. eMMC中通过CMD4(SET_DSR) 配置驱动端的传输命令。具体指会设置DSR寄存器的总线长度以及数据传输频率,同时时钟频率会从fod 切换到fpp

  2. 当EMMC处于stand-by模式时,host下发参数为eMMC相对地址的CMD7命令用于选择对应的eMMC并将其切换到数据传输状态。

    如果eMMC先前被选中并处于传输状态,则它与host的连接将被释放。 并且当CMD7在参数中使用任何不等于设备自己的相对地址的地址取消选择时,它将回到stand-by状态 。 当参数为预留相对设备地址“0x0000”的CMD7 命令发送后,eMMC将会回到stand-by 模式,当eMMC处于传输状态时,接收到带有EMMC自身相对地址的CMD7命令会被忽略,且有可能被视为是非法命令。

    在设备被分配RCA后,它将不再响应识别命令:CMD1,CMD2,CMD3[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cg8md8qQ-1689326620056)(C:\Users\bw002421\AppData\Roaming\Typora\typora-user-images\1686847159752.png)]

  3. 当设备处于断开状态时,CMD7通过在参数中包含设备的相对地址来选择设备并将其置于programming状态

    如果eMMC先前被选中并处于programming状态,则它与host的连接将被释放。 并且当CMD7在参数中使用任何不等于设备自己的相对地址的地址取消选择时,它将回到disconnect状态。当eMMC处于programming状态时,接收到带有eMMC自身相对地址的CMD7命令会被忽略,且有可能被视为是非法命令。

  4. 所有host和带有RCA的eMMC在数据传输模式以点对点的方式进行通信,所有的地址命令通过CMD信号线被识别并响应。

  5. host 下发CMD12命令后,所有的读数据命令都被禁止,数据传输终止,且eMMC切换到stand-by 状态,读命令比如:CMD17(读block),CMD18(读取多个block),CMD21(发送tunning block),CMD30 (发送写保护命令)

  6. host下发CMD12命令后,所有的写数据命令被终止,接着CMD7 命令断开eMMC和host 的通信,写命令比如:CMD24 CMD25,CMD26(写CID) 以及CMD27(写CSD寄存器命令)

  7. 一旦数据传输完成后,eMMC将会退出写入数据状态,切换到programming状态或者数据Transfer状态(数据传输失败的时候)

  8. 如果块写入操作被停止,同时最后一个块的长度和CRC有效,则将对写入数据进行存储。

  9. eMMC可以为块写入提供buffer缓冲。这意味着下一个块可以在前一个块被写入时发送到eMMC。

  10. 对于写CSD、写CID、写保护和擦除,没有缓冲选项。这意味着,当eMMC忙于处理这些命令中的任何一个时,将不接受其他数据传输命令。只要eMMC处于busy状态,并在写入状态,DAT0线将保持低。

  11. 当eMMC正在编程时,不允许使用Parameter set commands 。Parameter set commands 有: 设置块长度(CMD16)和擦除组选择(CMD35-36)。

  12. 当eMMC写入数据时,也是不允许读操作的。Parameter set commands 有: 设置块长度(CMD16)和擦除组选择(CMD35-36)。

  13. 当eMMC写入数据时,也是不允许读操作的。

  14. 再次使用CMD7 命令将会保持host与eMMC的通信。这种情况下,eMMC 将会切换到Programming状态,并重新激活busy标志位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blank_time

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值