下面是这两天看SD标准和365资料进行的小结,下一步对U-BOOT添加MMC支持。让悲剧的网卡见鬼去吧。
1. MMC/SD是两种不同的格式,SD比MMC要高级,可以兼容MMC,并且速度要快。软件区分SD还是MMC,靠CMD1和CMD41,前者只有SD卡支持,后者只有MMC支持,发出一条命令,谁成功返回,对应的就是什么卡。
2. Response是CPU发出CMD之后,SD/MMC通过CMD信号线串行返回的数据,包括卡状态等等信息。对于MMC/SD来说,Response共分为6种,具体见
http://www.sdcard.org/developers/tech/sdcard/pls/Simplified_Physical_Layer_Spec.pdf 的第4.9节。
3. 以上几种是response的格式,对应到365上面是另外的情况。365的SD控制器共有4个32位的寄存器来保存返回的值。共有三种存储方式(48bits with CRC ,48bits without CRC,136bits with CRC),在MMCCMD寄存器中可以设置。其中48bits with CRC对应的就是SD标准中的R1 ,R6,R7,48 bits without CRC对应的是R3,136bits with CRC对应的是R2。在MMCCMD中还可以设置一位叫BUSY,对应的就是R1b。在虽然有三种存储格式,但是返回数据的排列方式只有两种,具体见datasheet的54页。
4. 现在遗留着一个问题,如何区分两块SD卡,这个问题还是等待CU的解答吧~~
下面先对将要进行的移植进行一下构思。
1. 仿照ATMEL_MCI.C对相关函数进行重写。
2. 查看FAT命令的实现流程,看是否需要进行相应的配置。
3. 让移植支持所有Davinci系列,在dm365_configs里面对CONFIG进行设置,e.p:CONFIG_365_MMC,在MMC.h中,根据定义包含相应的头文件即可。