SD/MMC物理层协议--Apple的学习笔记

前言:

uboot学习阶段主要关注的外设是sdram及sd卡启动。并且都是和memory相关的,那么memory是我本次复习的重点,sdram驱动比较简单,配置些delay参数即可使用。所以把sd卡相关协议继续进行技术扩展及深入,winhex解析FAT32存储格式理解MBR--Apple的学习笔记里面我简单的提了下sd卡相关,所以这2天就是去官网下载了最新SD卡物理层协议V8.0在看。系统的了解下,并且深入的了解下sd的初始化。

不看不知道,一看吓一跳,sd卡现在发展的真实五花八门,容量越来越大,速度越来越快,当前比较新的是uhs卡,pin脚又多了一层,协议命令也追加了。另外NVMe和PCIe协议都加入进来了,sdio和spi协议在sd卡上的应用将来看来会被淘汰了。万变不离其宗,我还是学习些经典的基础内容。

疑问1

当传输data过程中,一个data传输完成后,Data0线作为busy。那么怎么判断data0代表数据还是代表busy呢?
答:因为数据格式是固定的,所以传输完数据+crc+一个bit1。这是可以解析出来的。之后data0线一直未低则说明buffer full正在写入处于忙状态。
需要注意的是CMD7可以退出传输模式,但是不会终止program,所以CMD7退出后又重新进入传输模式,可能之前依然处于program过程中

疑问2

读写超时后会发生什么?
答:我理解读超时(最大100ms)和写超时(最大250ms)就是想如下重点列表中第5项这样的应用场景。它采用关闭Clock来暂停sd,让sd卡认为是连续的而非超时的。Spec中写了所谓的超时是检查busy超过timeout时间。
网上搜索了案例,多任务处理sd卡处理代码若为低优先级会出现超时,超时后就是读写失败。看了am335x的手册,若打开中断,error发生则会进入中断。

疑问3

IOPS是什么意思?
答:IOPS的实际意思是硬盘每秒进行多少次4K文件的读出(或写入)。IOPS*4/1024=MB/s

重点

  1. 电压匹配和容量匹配是初始化的重点。
  2. CMD42和加密解密及强制擦除相关也是比较重要的。包括COP card和非COP card处理不同。
  3. CMD6是设置访问模式及驱动能力的,也需要注意。
  4. CMD8中的说明就提醒我了一个思路,若host支持的功能则都应该向设备发出询问。
  5. AMD41还是比较有意思的,就是描述host自己没能力,但是还想发大数据的处理方法中需要用到此命令。在连续传输过程中,host的buffer只有512 byte而需要传输1K内容,则会采用等待一半的512字节传输完成后,通过AMD41命令来关闭clock,此时重新装载后512字节的内容到host buffer中,然后再开启clock。这样处理sd卡也认为是连续的过程,传输没有中断过。
  6. AU(allocation unit)和RU(record unit)。AU中包含多个16K的RU,RU不能跨越AU边界。
    一般第一个AU是保存文件系统的,所以用户不能修改。后面介绍了一个FAT更新流程。显示FAT table表的写入,最后是DIR的写入。提及到了CMD20。
  7. 对于大数据的读写有CQ命令队列模式,将操作分为命令阶段和数据传输阶段,说白了全都连接起来操作速度当然快。
  8. SPI模式和SDIO模式除了总线连接及速度的区别,应该命令支持也是不同的。

参考:

1.SDIO—SD卡读写测试

2.ufs物理层协议中文

你可能感兴趣的:(SD/MMC物理层协议--Apple的学习笔记)