內存卡的擴容檢測方法及具有擴容檢測功能的讀卡器的制造方法
【專利摘要】本發(fā)明公開了一種內存卡擴容檢測方法,針對目前內存卡擴容方法,采用比對扇區(qū)內存容量和寄存器內存容量、超范圍地址的數(shù)據(jù)寫入并讀回和高地址范圍隨機地址的數(shù)據(jù)寫入并讀回共計三步檢測對內存卡是否擴容進行檢測,三步檢測均正常才判定為正常未擴容的內存卡,從而實現(xiàn)對內存卡準確有效的擴容檢測。并提供具有擴容檢測功能的讀卡器,實現(xiàn)脫離主機的獨立檢測,使擴容檢測更為便捷。
【專利說明】內存卡的擴容檢測方法及具有擴容檢測功能的讀卡器
【技術領域】
[0001]本發(fā)明屬于內存卡【技術領域】,更為具體地講,涉及一種內存卡擴容檢測方法及具有擴容檢測功能的讀卡器。
【背景技術】
[0002]內存卡擴容是山寨內存卡廠商經(jīng)常使用的一種牟利手段,但是目前市面上缺乏專門檢測內存卡好壞的獨立裝置,消費者只能通過Windows操作系統(tǒng)上的一些軟件來識別內存卡的優(yōu)劣,對操作系統(tǒng)的依賴性強,同時操作過程緩慢,容易導致死機;檢測結果只能在購買內存卡之后才可以得到,檢測意義不大。目前市面上的大部分檢測軟件,都是按照一定遞增順序掃描檢測,如此,便給了一些無良商家利用這種遞增順序制作擴容內存卡、借助大型公司的名氣來兜售劣質擴容內存卡的機會。
[0003]同時內存卡在使用過程中,由于使用方法的不當,內存卡會發(fā)生不同程度的損傷,這樣的內存卡在格式化處理時,電腦會變得反應緩慢,特別在內存卡的文件系統(tǒng)出現(xiàn)問題時,電腦可能會出現(xiàn)‘卡死’的現(xiàn)象,以及‘Window無法完成格式化’的問題。目前大家使用的讀卡器僅僅具有讀寫的功能,大有升值的空間。
【發(fā)明內容】
[0004]本發(fā)明的目的在于克服現(xiàn)有技術的不足,提供一種內存卡擴容檢測方法及具有擴容檢測功能的讀卡器,實現(xiàn)對內存卡準確有效的擴容檢測,并且通過在讀卡器上設置擴容檢測模塊來實現(xiàn)獨立檢測。
[0005]為實現(xiàn)上述發(fā)明目的,本發(fā)明內存卡擴容檢測方法,包括以下步驟:
[0006]S1:讀取內存卡的DBR扇區(qū)數(shù)據(jù),獲取扇區(qū)總數(shù),根據(jù)扇區(qū)總數(shù)得到內存卡的內存容量C1,然后讀取內存卡CSD寄存器得到內存容量C2,判斷CjP C 2是否相等,如果不相等,則該內存卡為擴容卡,否則進入步驟S2 ;
[0007]S2:根據(jù)步驟SI得到的內存容量C1,將其地址最大值記為P,向地址[P+Pl,P+p2]范圍內寫入任意數(shù)據(jù)后讀回,其中O < Pl< P2,判斷寫入的數(shù)據(jù)和讀出的數(shù)據(jù)是否一致,如果一致,則該內存卡為擴容卡,否則進入步驟S3 ;
[0008]S3:在地址[P-p3, P]范圍內隨機產(chǎn)生一組地址,其中p3> 0,寫入任意數(shù)據(jù)后讀回,判斷寫入的數(shù)據(jù)和讀出的數(shù)據(jù)是否一致,如果一致,則該內存卡為正???,否則該內存卡為擴容卡。
[0009]本發(fā)明提供了一種具有擴容檢測功能的讀卡器,包括內存卡接口、控制器和USB接口,控制器分別與內存卡接口和USB接口連接用于控制數(shù)據(jù)傳輸,內存卡接口用于連接內存卡進行數(shù)據(jù)讀寫,USB接口用于連接主機,還包括與控制器連接的結果顯示模塊和模式開關,控制器中設置有擴容檢測模塊,其中:
[0010]模式開關用于選擇讀卡器的工作模式,包括普通模式和擴容檢測模式,模式開關將模式選擇信號發(fā)送給控制器,控制器根據(jù)模式選擇信號確定當前讀卡器工作模式;
[0011]當讀卡器工作在擴容檢測模式,擴容檢測模塊按照權利要求1中所述的內存卡擴容檢測方法對內存卡進行擴容檢測,將得到的擴容檢測結果發(fā)送給結果顯示模塊,結果顯示模塊對擴容檢測結果進行顯示。
[0012]本發(fā)明內存卡擴容檢測方法,針對目前內存卡擴容方法,采用比對扇區(qū)內存容量和寄存器內存容量、超范圍地址的數(shù)據(jù)寫入并讀回和高地址范圍隨機地址的數(shù)據(jù)寫入并讀回共計三步檢測對內存卡是否擴容進行檢測,實現(xiàn)對內存卡準確有效的擴容檢測。并提供具有擴容檢測功能的讀卡器,實現(xiàn)脫離主機的獨立檢測,使擴容檢測更為便捷。
【專利附圖】
【附圖說明】
[0013]圖1是本發(fā)明內存卡的擴容檢測方法的【具體實施方式】流程圖;
[0014]圖2是本發(fā)明具有擴容檢測功能的讀卡器的【具體實施方式】結構圖;
[0015]圖3是圖2所示讀卡器的工作流程圖。
【具體實施方式】
[0016]下面結合附圖對本發(fā)明的【具體實施方式】進行描述,以便本領域的技術人員更好地理解本發(fā)明。需要特別提醒注意的是,在以下的描述中,當已知功能和設計的詳細描述也許會淡化本發(fā)明的主要內容時,這些描述在這里將被忽略。
[0017]實施例
[0018]圖1是本發(fā)明內存卡的擴容檢測方法的【具體實施方式】流程圖。如圖1所示,本發(fā)明內存卡的擴容檢測方法主要采用三步檢測,包括以下步驟:
[0019]SlOl:讀取內存卡的DBR(DOS BOOT RECORD,分區(qū)引導扇區(qū))扇區(qū)數(shù)據(jù),獲取扇區(qū)總數(shù),根據(jù)扇區(qū)總數(shù)得到內存卡的內存容量Cp
[0020]查閱FAT文件系統(tǒng)的規(guī)范可知,如果內存卡中有MBR(Main Boot Record,主引導記錄),則MBR數(shù)據(jù)存儲在內存卡最低地址空間,占用內存512字節(jié)空間,即第一個扇區(qū);如果內存卡沒有MBR,那么第一個扇區(qū)數(shù)據(jù)即為DBR。因此先通過調用內存卡單塊讀函數(shù)SD_ReadBlockO讀取內存卡的第一個扇區(qū)的信息,判斷其是否為DBR,否則為MBR(可通過判斷該扇區(qū)中0x52?0x56地址處的數(shù)據(jù)是否為“FAT32”來識別是否為DBR,判斷方法不唯一)。根據(jù)MBR可以得到分區(qū)DBR的起始地址,然后就可以通過調用內存卡單塊讀函數(shù)SD_ReadBlock O讀取內存卡中的DBR數(shù)據(jù),獲得扇區(qū)總數(shù)TotalSectors,將該值乘以512bytes得到內存卡的字節(jié)容量,將該值(^存放在控制器的寄存器I中。在實際應用中,函數(shù)的編寫需要根據(jù)相關協(xié)議標準來進行。
[0021]S102:然后讀取內存卡CSD (Card Specific Data Register,描述數(shù)據(jù)寄存器)寄存器得到內存容量C2。
[0022]通過內存卡寄存器讀函數(shù)SD_GetCardInfo()函數(shù)獲取內存卡CSD寄存器的C_SIZE (設備容量),C_SIZE_MULT (設備容量乘子)和READ_BL_LEN(最大讀取數(shù)據(jù)塊長)的值,然后通過內存容量計算公式即可計算出內存卡的容量。由于對于不同類型的內存卡,其內存容量計算公式可能會存在不同,例如SDSC(Secure Digital Standard Capacity標準容量SD卡)卡和SDHC (Secure Digital High Capacity,高容量SD卡)卡的計算公式就不一樣。因此在實際應用中,可以在檢測系統(tǒng)對內存卡初始化的同時,識別內存卡的類型,自動選擇對應的計算公式來計算,以擴大適用范圍。
[0023]S103:判斷CjP C 2是否相等,如果不相等,進入步驟SI 10,否則進入步驟S104。
[0024]根據(jù)步驟SlOl至步驟S103的判斷,可以對通過修改引導扇區(qū)信息的擴容內存卡實現(xiàn)檢測。
[0025]S104:根據(jù)步驟SlOl得到的內存容量C1,將其地址最大值記為P,向地址[P+Pi,P+P2]范圍內寫入任意數(shù)據(jù)后讀回,其中O <Pl< P 2。
[0026]在實際應用中,為了擴容檢測完畢后對原有數(shù)據(jù)進行恢復,可先將寫入地址的數(shù)據(jù)另存。
[0027]S105:判斷寫入的數(shù)據(jù)和讀出的數(shù)據(jù)是否一致,如果一致,進入步驟S110,否則進入步驟S106。
[0028]步驟S104、105是向超出內存卡容量值的一段地址范圍寫入數(shù)據(jù)并讀回,從而對采用“加大地址循環(huán)映射法”擴容的內存卡實現(xiàn)檢測。為了保證檢測的正確性,該地址范圍不宜太小,如果太大又會增加檢測時間,通??梢圆捎肐K的容量,即向[C1, Q+K^Abyte]對應的地址空間進行操作。
[0029]S106:在地址[P-p3,P]范圍內隨機產(chǎn)生一組地址,其中p3> Oo
[0030]S107:在步驟S106得到的隨機地址寫入任意數(shù)據(jù)并讀回。
[0031]S108:判斷寫入的數(shù)據(jù)和讀出的數(shù)據(jù)是否一致,如果一致,進入步驟S109,否則進入步驟SI 10。
[0032]S109:該內存卡為正???。
[0033]SllO:該內存卡為擴容卡。
[0034]采用本發(fā)明內存卡的擴容檢測方法可以實現(xiàn)對內存卡擴容的準確檢測。為了能夠對內存卡進行無需主機的獨立檢測,本發(fā)明提供了一種具有擴容檢測功能的讀卡器。圖2是本發(fā)明具有擴容檢測功能的讀卡器的【具體實施方式】結構圖。如圖2所示,本發(fā)明具有擴容檢測功能的讀卡器除了具有一般讀卡器也具有的USB接口 1,控制器2和內存卡接口 3之夕卜,其控制器中還設置有擴容檢測模塊21和格式化模塊22,另外還包括結果顯示模塊4、模塊開關5和電源模塊6。
[0035]與一般讀卡器相同,控制器2分別與USB接口 I和內存卡接口 3連接,用于控制數(shù)據(jù)傳輸,USB接口 I用于連接主機,內存卡接口 2用于連接內存卡進行數(shù)據(jù)讀寫。本實施例中控制器選用意法半導體STM32微控制器。
[0036]模式開關5用于選擇讀卡器的工作模式,包括普通模式和擴容檢測模式,模式開關將模式選擇信號發(fā)送給控制器2,控制器2根據(jù)模式選擇信號確定當前讀卡器工作模式。
[0037]當讀卡器處于擴容檢測模式時,控制器2中設置的擴容檢測模塊21,按照本發(fā)明所提供的內存卡的擴容檢測方法對內存卡進行擴容檢測,然后將得到的擴容檢測結果發(fā)送給結果顯示模塊4,結果顯示模塊4對擴容檢測結果進行顯示。
[0038]結果顯示模塊4可以采用指示燈或液晶屏來實現(xiàn),例如指示燈為紅表示內存卡為擴容卡,為綠表示內存卡為正???。液晶屏則可以更詳細地顯示擴容檢測結果。
[0039]為了增加讀卡器的應用范圍,本發(fā)明具有擴容檢測功能的讀卡器的控制器2中還增加了一個格式化模塊22,該模塊用于對內存卡進行格式化。一般來說,可以直接在格式化模塊22中移植一個文件系統(tǒng)FATFS,利用該文件系統(tǒng)提供的格式化函數(shù)F_MKFS()格式化內存卡,從而實現(xiàn)格式化。相應地,當讀卡器配置有格式化模塊22時,模式開關5也要相應地設置對應的格式化模塊的開關。
[0040]目前讀卡器都是通過USB接口來供電的。對于本發(fā)明的具有擴容檢測的讀卡器,雖然也可以通過USB接口 I來供電,但是為了更好地實現(xiàn)讀卡器的獨立使用,配置了一個電源模塊6,向控制器2、內存卡接口 3、結果顯示模塊4和模式開關5供電。該電源模塊6可以是電池或超級電容供電,還可以通過USB進行充電。
[0041]圖3是圖2所示讀卡器的工作流程圖。如圖3所示,本實施例中的讀卡器的工作流程包括以下步驟:
[0042]S301:判斷工作模式:
[0043]讀卡器上電后,控制器先根據(jù)模式開關的模式選擇信號判斷讀卡器當前所處的工作模式,如果是普通模式,進入步驟S302,如果是擴容檢測模式,進入步驟S303,如果是格式化式,進入步驟S304。
[0044]S302:根據(jù)主機的操作對內存卡進行讀寫等操作。
[0045]S303:擴容檢測模塊21對內存卡進行擴容檢測,將擴容檢測結果通過結果顯示模塊4進行顯示。
[0046]S304:格式化模塊22對內存卡進行格式化。
[0047]盡管上面對本發(fā)明說明性的【具體實施方式】進行了描述,以便于本【技術領域】的技術人員理解本發(fā)明,但應該清楚,本發(fā)明不限于【具體實施方式】的范圍,對本【技術領域】的普通技術人員來講,只要各種變化在所附的權利要求限定和確定的本發(fā)明的精神和范圍內,這些變化是顯而易見的,一切利用本發(fā)明構思的發(fā)明創(chuàng)造均在保護之列。
【權利要求】
1.一種內存卡擴容檢測方法,其特征在于,包括以下步驟: 51:讀取內存卡的DBR扇區(qū)數(shù)據(jù),獲取扇區(qū)總數(shù),根據(jù)扇區(qū)總數(shù)得到內存卡的內存容量C1,然后讀取內存卡CSD寄存器得到內存容量C2,判斷CjPC 2是否相等,如果不相等,則該內存卡為擴容卡,否則進入步驟S2 ; 52:根據(jù)步驟SI得到的內存容量C1,將其地址最大值記為P,向地址[P+Pl,P+p2]范圍內寫入任意數(shù)據(jù)后讀回,其中O < Pl< P2,判斷寫入的數(shù)據(jù)和讀出的數(shù)據(jù)是否一致,如果一致,則該內存卡為擴容卡,否則進入步驟S3 ; S3:在地址[P_p3,P]范圍內隨機產(chǎn)生一組地址,其中p3> O,寫入任意數(shù)據(jù)后讀回,判斷寫入的數(shù)據(jù)和讀出的數(shù)據(jù)是否一致,如果一致,則該內存卡為正??ǎ駝t該內存卡為擴容卡。
2.—種具有擴容檢測功能的讀卡器,包括內存卡接口、控制器和USB接口,控制器分別與內存卡接口和USB接口連接用于控制數(shù)據(jù)傳輸,內存卡接口用于連接內存卡進行數(shù)據(jù)讀寫,USB接口用于連接主機,其特征在于:還包括與控制器連接的結果顯示模塊和模式開關,控制器中設置有擴容檢測模塊,其中: 開關模式用于選擇讀卡器的工作模式,包括普通模式和擴容檢測模式,模式開關將模式選擇信號發(fā)送給控制器,控制器根據(jù)模式選擇信號確定當前讀卡器工作模式; 當讀卡器工作在擴容檢測模式,擴容檢測模塊按照權利要求1中所述的內存卡擴容檢測方法對內存卡進行擴容檢測,將得到的擴容檢測結果發(fā)送給結果顯示模塊,結果顯示模塊對擴容檢測結果進行顯示。
3.根據(jù)權利要求1所述的讀卡器,其特征在于,所述控制器中還包括格式化模塊,模式開關所選擇的工作模式中還包括格式化模式。
4.根據(jù)權利要求2所述的讀卡器,其特征在于,還包括電源模塊,用于向控制器、內存卡接口、結果顯示模式和模式開關供電。
5.根據(jù)權利要求4所述的讀卡器,其特征在于,所述電源模式可通過USB接口充電。
【文檔編號】G06K7/00GK104484634SQ201410811043
【公開日】2015年4月1日 申請日期:2014年12月23日 優(yōu)先權日:2014年12月23日
【發(fā)明者】李力, 楊怡, 張朋, 黃建國, 王詩舒, 程瑤 申請人:電子科技大學