s5pv210-Linux驱动之MMC/SD/SDIO区别

来源:互联网 发布:java -jar -d 编辑:程序博客网 时间:2024/05/01 04:41

1、SD/MMC

经常看到SD/MMC这样的写法,在这里稍微总结一下SD卡和MMC卡的异同点吧。

首先,两者在外型的规格上是几乎一致的。而且两都的接口是兼容的。也就是说,两者可以用同一个卡座来进行读取。而且,两者在时序上也是一致的,读写命令控制也完全一样,这就是为什么经常把两者混在一起写的原因。

不过,虽说外型几乎一致,但还是有点差异的。MMC比SD卡要薄一些,并且,长度只有SD卡的一半。下面从主机驱动方面谈谈两者的差异。

一。在数据位宽方面,MMC卡最大支持8BIT,而SD卡只能支持4BIT传输。

二、在卡的激活过程,MMC使用CMD1来进行激活,而SD卡使用ACMD41来进行激活的。于是,这两条命令也成了主机区分两种卡的类型的关键。在获取卡的RCA地址时,MMC卡是由主机分配RCA给设备,而SD卡则是由设备返回RCA给主机。

三、在CMD6的使用方法上也有很大不同。MMC有EXT_CSD的概念,主要用CMD8进行读取,CMD6进行设置。而SD卡则只用CMD6进行UserFunction的设置。SD卡的CMD8主要用于区别SD1.0和SD2.0。

四、MMC还支持CMD14和CMD19进行主线测试,从而选择合适总线进行通信。SD则不支持。另外,MMC卡还支持CMD11、CMD20这类数据流操作,因此较多用于媒体设备上。MMC还支持Boot等高级的用法。


2、SDIO

SDIO接口是在SD接口基础上发展起来的,SDIO接口兼容SD接口。SDIO协议又在SD卡协议之上添加了CMD52(一般用来访问寄存器)CMD53(字节和块传输)命令。SDIOSD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力。目前根据SDIO协议的SPECSDIO接口支持的设备总类有蓝牙,无线网卡,电视卡等。

   SDIO的接口信号由CS,CMD,DATA0~3,电源信号和地信号组成,其中DATA1在与中断线复用,SDIO1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线。

   CMD5协议与SD接口中的ACMD41类似,用于检查是否支持SDIO的电压。CMD5的回应中,MP为0,表示是SDIO卡;如果MP为1,表示不但是SDIO卡,并且是SD卡。

   SDIO总线有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST- DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解析HOST的命令,就可以同HOST进行通信了。

   每个SDIO卡由1~7个function和memory function(function 0)组成。memory function包含了SDIO协议的版本号,bus mod,块大小等信息。

     SDIO 是目前我们比较关心的技术,SDIO 故名思义,就是 SD 的 I/O 接口(interface )的意思,不过这样解释可能还有点抽像。更具体的说明,SD 本来是记忆卡的标准,但是现在也可以把 SD 拿来插上一些外围接口使用,这样的技术便是 SDIO 。

     所以 SDIO 本身是一种相当单纯的技术,透过 SD 的 I/O 接脚来连接外部外围,并且透过 SD 上的I/O 数据接位与这些外围传输数据,而且 SD 协会会员也推出很完整的 SDIO stack 驱动程序,使得SDIO 外围(我们称为 SDIO 卡)的开发与应用变得相当热门。

    现在已经有非常多的手机或是手持装置都支持 SDIO 的功能(SD 标准原本就是针对 mobile device而制定),而且许多 SDIO 外围也都被开发出来,让手机外接外围更加容易,并且开发上更有弹性(不需要内建外围)。目前常见的 SDIO 外围(SDIO 卡)有:

·Wi-Fi card (无线网络卡)
·CMOS sensor card (照相模块)
·GPS card
·GSM/GPRS modem card
·Bluetooth card
·Radio/TV card (很好玩)

SDIO 的应用将是未来嵌入式系统最重要的接口技术之一,并且也会取代目前 GPIO 式的 SPI 接口


3、MCI

MCI是Multimedia Card Interface的简称,即多媒体卡接口。上述的MMC,SD,SDI卡定义的接口都属于MCI接口。MCI这个术语在驱动程序中经常使用,很多文件,函数名字都包括”mci”.