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