本发明专利技术公开了一种内存卡扩容检测方法,针对目前内存卡扩容方法,采用比对扇区内存容量和寄存器内存容量、超范围地址的数据写入并读回和高地址范围随机地址的数据写入并读回共计三步检测对内存卡是否扩容进行检测,三步检测均正常才判定为正常未扩容的内存卡,从而实现对内存卡准确有效的扩容检测。并提供具有扩容检测功能的读卡器,实现脱离主机的独立检测,使扩容检测更为便捷。
【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种内存卡扩容检测方法,针对目前内存卡扩容方法,采用比对扇区内存容量和寄存器内存容量、超范围地址的数据写入并读回和高地址范围随机地址的数据写入并读回共计三步检测对内存卡是否扩容进行检测,三步检测均正常才判定为正常未扩容的内存卡,从而实现对内存卡准确有效的扩容检测。并提供具有扩容检测功能的读卡器,实现脱离主机的独立检测,使扩容检测更为便捷。【专利说明】内存卡的扩容检测方法及具有扩容检测功能的读卡器
本专利技术属于内存卡
,更为具体地讲,涉及一种内存卡扩容检测方法及具有扩容检测功能的读卡器。
技术介绍
内存卡扩容是山寨内存卡厂商经常使用的一种牟利手段,但是目前市面上缺乏专门检测内存卡好坏的独立装置,消费者只能通过Windows操作系统上的一些软件来识别内存卡的优劣,对操作系统的依赖性强,同时操作过程缓慢,容易导致死机;检测结果只能在购买内存卡之后才可以得到,检测意义不大。目前市面上的大部分检测软件,都是按照一定递增顺序扫描检测,如此,便给了一些无良商家利用这种递增顺序制作扩容内存卡、借助大型公司的名气来兜售劣质扩容内存卡的机会。 同时内存卡在使用过程中,由于使用方法的不当,内存卡会发生不同程度的损伤,这样的内存卡在格式化处理时,电脑会变得反应缓慢,特别在内存卡的文件系统出现问题时,电脑可能会出现‘卡死’的现象,以及‘Window无法完成格式化’的问题。目前大家使用的读卡器仅仅具有读写的功能,大有升值的空间。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种内存卡扩容检测方法及具有扩容检测功能的读卡器,实现对内存卡准确有效的扩容检测,并且通过在读卡器上设置扩容检测模块来实现独立检测。 为实现上述专利技术目的,本专利技术内存卡扩容检测方法,包括以下步骤: S1:读取内存卡的DBR扇区数据,获取扇区总数,根据扇区总数得到内存卡的内存容量C1,然后读取内存卡CSD寄存器得到内存容量C2,判断CjP C 2是否相等,如果不相等,则该内存卡为扩容卡,否则进入步骤S2 ; S2:根据步骤SI得到的内存容量C1,将其地址最大值记为P,向地址范围内写入任意数据后读回,其中O < Pl< P2,判断写入的数据和读出的数据是否一致,如果一致,则该内存卡为扩容卡,否则进入步骤S3 ; S3:在地址范围内随机产生一组地址,其中p3> 0,写入任意数据后读回,判断写入的数据和读出的数据是否一致,如果一致,则该内存卡为正常卡,否则该内存卡为扩容卡。 本专利技术提供了一种具有扩容检测功能的读卡器,包括内存卡接口、控制器和USB接口,控制器分别与内存卡接口和USB接口连接用于控制数据传输,内存卡接口用于连接内存卡进行数据读写,USB接口用于连接主机,还包括与控制器连接的结果显示模块和模式开关,控制器中设置有扩容检测模块,其中: 模式开关用于选择读卡器的工作模式,包括普通模式和扩容检测模式,模式开关将模式选择信号发送给控制器,控制器根据模式选择信号确定当前读卡器工作模式; 当读卡器工作在扩容检测模式,扩容检测模块按照权利要求1中所述的内存卡扩容检测方法对内存卡进行扩容检测,将得到的扩容检测结果发送给结果显示模块,结果显示模块对扩容检测结果进行显示。 本专利技术内存卡扩容检测方法,针对目前内存卡扩容方法,采用比对扇区内存容量和寄存器内存容量、超范围地址的数据写入并读回和高地址范围随机地址的数据写入并读回共计三步检测对内存卡是否扩容进行检测,实现对内存卡准确有效的扩容检测。并提供具有扩容检测功能的读卡器,实现脱离主机的独立检测,使扩容检测更为便捷。 【专利附图】【附图说明】 图1是本专利技术内存卡的扩容检测方法的【具体实施方式】流程图; 图2是本专利技术具有扩容检测功能的读卡器的【具体实施方式】结构图; 图3是图2所示读卡器的工作流程图。 【具体实施方式】 下面结合附图对本专利技术的【具体实施方式】进行描述,以便本领域的技术人员更好地理解本专利技术。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本专利技术的主要内容时,这些描述在这里将被忽略。 实施例 图1是本专利技术内存卡的扩容检测方法的【具体实施方式】流程图。如图1所示,本专利技术内存卡的扩容检测方法主要采用三步检测,包括以下步骤: SlOl:读取内存卡的DBR(DOS BOOT RECORD,分区引导扇区)扇区数据,获取扇区总数,根据扇区总数得到内存卡的内存容量Cp 查阅FAT文件系统的规范可知,如果内存卡中有MBR(Main Boot Record,主引导记录),则MBR数据存储在内存卡最低地址空间,占用内存512字节空间,即第一个扇区;如果内存卡没有MBR,那么第一个扇区数据即为DBR。因此先通过调用内存卡单块读函数SD_ReadBlockO读取内存卡的第一个扇区的信息,判断其是否为DBR,否则为MBR(可通过判断该扇区中0x52?0x56地址处的数据是否为“FAT32”来识别是否为DBR,判断方法不唯一)。根据MBR可以得到分区DBR的起始地址,然后就可以通过调用内存卡单块读函数SD_ReadBlock O读取内存卡中的DBR数据,获得扇区总数TotalSectors,将该值乘以512bytes得到内存卡的字节容量,将该值(^存放在控制器的寄存器I中。在实际应用中,函数的编写需要根据相关协议标准来进行。 S102:然后读取内存卡CSD (Card Specific Data Register,描述数据寄存器)寄存器得到内存容量C2。 通过内存卡寄存器读函数SD_GetCardInfo()函数获取内存卡CSD寄存器的C_SIZE (设备容量),C_SIZE_MULT (设备容量乘子)和READ_BL_LEN(最大读取数据块长)的值,然后通过内存容量计算公式即可计算出内存卡的容量。由于对于不同类型的内存卡,其内存容量计算公式可能会存在不同,例如SDSC(Secure Digital Standard Capacity标准容量SD卡)卡和SDHC (Secure Digital High Capacity,高容量SD卡)卡的计算公式就不一样。因此在实际应用中,可以在检测系统对内存卡初始化的同时,识别内存卡的类型,自动选择对应的计算公式来计算,以扩大适用范围。 S103:判断CjP C 2是否相等,如果不相等,进入步骤SI 10,否则进入步骤S104。 根据步骤SlOl至步骤S103的判断,可以对通过修改引导扇区信息的扩容内存卡实现检测。 S104:根据步骤SlOl得到的内存容量C1,将其地址最大值记为P,向地址范围内写入任意数据后读回,其中O <Pl< P 2。 在实际应用中,为了扩容检测完毕后对原有数据进行恢复,可先将写入地址的数据另存。 S105:判断写入的数据和读出的数据是否一致,如果一致,进入步骤S110,否则进入步骤S106。 步骤S104、105是向超出内存卡容量值的一段地址范围写入数据并读回,从而对采用“加大地址循环映射法”扩容的内存卡实现检测。为了保证检测的正确性,该地址范围不宜太小,如果太大又会增加检测时间,通常可以采用本文档来自技高网...
【技术保护点】
一种内存卡扩容检测方法,其特征在于,包括以下步骤:S1:读取内存卡的DBR扇区数据,获取扇区总数,根据扇区总数得到内存卡的内存容量C1,然后读取内存卡CSD寄存器得到内存容量C2,判断C1和C2是否相等,如果不相等,则该内存卡为扩容卡,否则进入步骤S2;S2:根据步骤S1得到的内存容量C1,将其地址最大值记为P,向地址[P+p1,P+p2]范围内写入任意数据后读回,其中0<p1<p2,判断写入的数据和读出的数据是否一致,如果一致,则该内存卡为扩容卡,否则进入步骤S3;S3:在地址[P‑p3,P]范围内随机产生一组地址,其中p3>0,写入任意数据后读回,判断写入的数据和读出的数据是否一致,如果一致,则该内存卡为正常卡,否则该内存卡为扩容卡。
【技术特征摘要】
【专利技术属性】
技术研发人员:李力,杨怡,张朋,黄建国,王诗舒,程瑶,
申请(专利权)人:电子科技大学,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。