linux设备驱动那点事儿之sd卡驱动理论篇

linux设备驱动那点事儿之sd卡驱动理论篇

ID:4242370

大小:781.92 KB

页数:17页

时间:2017-11-30

linux设备驱动那点事儿之sd卡驱动理论篇_第1页
linux设备驱动那点事儿之sd卡驱动理论篇_第2页
linux设备驱动那点事儿之sd卡驱动理论篇_第3页
linux设备驱动那点事儿之sd卡驱动理论篇_第4页
linux设备驱动那点事儿之sd卡驱动理论篇_第5页
资源描述:

《linux设备驱动那点事儿之sd卡驱动理论篇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一.SD/MMC卡介绍1.1.什么是MMC卡MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),容量大,耗电量低,传输速度快,广泛应用于消费类电子产品中。1.2.什么是SD卡SD:SD卡为SecureDigitalMemoryCard,即安全数码卡。它在MMC的基础上发展而来,增加了两个主要特色:SD卡强调数据的安全安全,可以设定所储存的使用权限,防止数据被他人复制;另外一个特色就是传输速度比2.11版的MMC卡快。在数据传输和物理规

2、范上,SD卡(24mm*32mm*2.1mm,比MMC卡更厚一点),向前兼容了MMC卡.所有支持SD卡的设备也支持MMC卡。SD卡和2.11版的MMC卡完全兼容。1.3.什么是SDIOSDIO:SDIO是在SD标准上定义了一种外设接口,它和SD卡规范间的一个重要区别是增加了低速标准。在SDIO卡只需要SPI和1位SD传输模式。低速卡的目标应用是以最小的硬件开销支持低速IO能力。1.4.什么是MCIMCI:MCI是MultimediaCardInterface的简称,即多媒体卡接口。上述的MMC,SD,SDI卡定义的接

3、口都属于MCI接口。MCI这个术语在驱动程序中经常使用,很多文件,函数名字都包括”mci”.1.5.MMC/SD/SDIO卡的区别二.SD/MMC协议与命令1.SD/MMC卡相关寄存器SD卡内部有7个寄存器.其中OCR,CID,CSD和SCR寄存器保存卡的配置信息;RCA寄存器保存着通信过程中卡当前暂时分配的地址(只适合SD模式);卡状态(CardStatus)和SD状态(SDStatus)寄存器保存着卡的状态(例如,是否写成功,通信的CRC校验是否正确等),这两个寄存器的内容与通信模式(SD模式或SPI模式)相关.

4、MMC卡没有SCR和SDStatus寄存器.如下表1所示:表1SD卡内部7个寄存器1.1.OCR寄存器OCR寄存器保存着SD/MMC卡的供电电允许范围.如下表2所示:如果OCR寄存器的某位为1,表示卡支持该位对应的电压。最后一位表示卡上电后的状态(是否处于”忙状态”),如果该位为0,表示忙,如果为1,表示处于空闲状态(MMC/SD协议P60)。表2OCR寄存器1.2.CID寄存器CID为一个16个字节的寄存器,该寄存器包含一个独特的卡标识号。如下表3所示:表3CID寄存器1.3.CSD寄存器CSD寄存器(卡特殊数据寄

5、存器)包含访问卡存储时需要的相关信息。如下表4所示:表4CSD寄存器1.4.SCR寄存器SCR寄存器提供SD卡的特殊特性信息,其大小为64位。该寄存器由厂商编程,主机不能对它进行编程。MMC卡没有SCR。如下表5所示:表5SCR寄存器1.5.RCA寄存器该16位卡地址寄存器保存了在卡识别过程中卡发布的器件地址。该地址用于在卡识别后主机利用该地址与卡进行通信。该寄存器只有在SD总线模式下才有效。二.SD卡的引脚图三.SD卡的命令3.1.SD卡的命令格式:SD卡的指令由6字节(Byte)组成,如下:Byte1:01xxx

6、xxx(命令号,由指令标志定义CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40)。Byte2-5:CommandArguments,命令参数,有些命令没有参数。Byte6:前7位为CRC(CyclicRedundacyCheck,循环冗余校验)校验位,最后一位为停止位0。3.2.SD卡的命令SD卡命令共分为12类,分别为class0到Class11.3.2.1.Class0:(卡的识别、初始化等基本命令集)CMD0:复位SD卡。CMD1:读OCR寄存器。

7、CMD9:读CSD寄存器。CMD10:读CID寄存器。CMD12:停止读多块时的数据传输。CMD13:读Card_Status寄存器。3.2.2.Class2(读卡命令集):CMD16:设置块的长度。CMD17:读单块。CMD18:读多块,直至主机发送CMD12为止。3.2.3.Class4(写卡命令集):CMD24:写单块。CMD25:写多块。CMD27:写CSD寄存器。3.2.4.Class5(擦除卡命令集):CMD32:设置擦除块的起始地址。CMD33:设置擦除块的终止地址。CMD38:擦除所选择的块。3.2.

8、5.Class6(写保护命令集):CMD28:设置写保护块的地址。CMD29:擦除写保护块的地址。CMD30:Askthecardforthestatusofthewriteprotectionbitsclass7:卡的锁定,解锁功能命令集。class8:申请特定命令集。class10-11:保留。3.3.SD卡的工作流程首先看下脱离操作系统如

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。