Keep on going, never give up.

MMC/SD/TF卡的CID结构及获取方法

MMC的CID(Card Identification) Register寄存器保存卡片的唯一识别信息,标准的设计要求每张卡片CID都不相同。CID总共128bits(16Bytes),我们读到时为RAW数据,CID可划分为四个域(4个U32类型数据来处理)。CID的读写查看方法也不复杂,如果只是应用此CID,则可通过本文方法查看到,如果需要编程访问,则可通过CMD10来获取到。CSD也可以采用类似方法(CMD9)获取到。

典型的CID组成结构如下图:

一、MMC CID组成

MID: [127:120] —— 8bit(1Byte)Manufacturer ID,由MMCA分配,比如Sandisk为0x02,Kingston为0x37,Samsung为0x15。

OID: [119:104] —— 16bit OEN/Application ID,OEM/应用ID号,也由MMCA分配。

PNM: [103:64] —— 40bit Product Name,产品名称。

PRV: [63:56] —— 8bit Product revision,产品版本,前4bit fw版本,后4bit hw版本。

PSN: [55:24] —— 32bit Product serial number,产品序列号。

MDT: [19:8] —— 12bit Manufacturing date,生产日期,前4bit是月份,后8bit为年份,0对应2000年。

CRC: [7:1] —— 7bit CRC7 checksum,循环冗余校验。

因为,MMC协议版本不同,这些字段可能会有稍许差异,以后再完善本部分内容。[未完待修正完善]

二、TF CID获取

本文只说在Android设备下查看CID方法,实际编程可使用CMD10命令读取CID,下文获取方法属方法2最简单。

1、使用adb工具

打开手机的USB调试开关,并连接到PC,执行adb命令。用adb shell 命令检查出TF卡的CID。

一般TF卡是挂载在mmc1设备上,但每个设备可能不同。

读到文件:

adb shell cat /sys/class/mmc_host/mmc*/mmc*:*/cid >cid.txt

或直接查看:

adb shell cat /sys/class/mmc_host/mmc*/mmc*:*/cid

如果能看到一串16个字节字符即位CID。如果有多个SD卡,将会同时分行输出多条ID信息。

2、使用ES或RE浏览器

直接访问自带的ES文件浏览器或RE文件浏览器,依次找到如下位置依次打开:/sys/class/mms_host到这个目录后,再找类似mmc2/mmc2:0001这样的路径。点击进入,在其下属目录下有block、cid、csd、date、fwrev、hwrev、manfid、oemid、uevent等有关此设备的登记信息。

其中,cid即为CID存储文件,uevent可看到此设备的类型,比如是MMC、SD、SDIO等类型。

参考资料:

http://www.sdcard.org/

http://elm-chan.org/docs/mmc/mmc_e.html

http://www.cnblogs.com/Efronc/archive/2010/03/27/1698474.html

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.