專利名稱:一種測試存儲器件的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種測試存儲器件的方法,包括測試存儲器件物理地址與邏輯地址是 否一一對應(yīng),存放在存儲器件中的數(shù)據(jù)是否可靠。
背景技術(shù):
從MP3到手機(jī),掌上電腦,越來越多的人攜帶的便攜設(shè)備中都需要大容量的數(shù)據(jù) 存儲器,而在這些設(shè)備中,NAND Flash已經(jīng)成為一種被業(yè)界廣泛認(rèn)可和采用的硬件方案。毫 無疑問的說,NAND Flash是便攜設(shè)備的首選非易失性存儲器。高密度,低價格,較快的寫入 速度,以及較長的重寫入壽命使得NAND Flash特別適用于媒體應(yīng)用,在這些設(shè)備中都需要 快速重復(fù)的操作大容量的文件。隨著NAND flash存儲器件的在電子產(chǎn)品中的廣泛運(yùn)用,NANDflash存儲器件在人 們的生產(chǎn),生活的占有重要的地位。NAND flash存儲器件具有速度快、體積小、兼容性好、攜 帶方便、容量大、壽命長,質(zhì)量輕;NAND flash存儲器件的結(jié)構(gòu)具備不怕震,更抗摔;提供更 快的數(shù)據(jù)讀取速度等,具有其他存儲設(shè)備無可比擬的優(yōu)勢。NAND flash的特點(diǎn)和問題(1)存在壞塊。由于NAND flash生產(chǎn)工藝的原因,出廠芯片中會隨機(jī)出現(xiàn)壞塊。 壞塊在出廠時已經(jīng)被初始化,并在特殊區(qū)域中標(biāo)記為不可用,在使用過程中如果出現(xiàn)壞塊, 也需要進(jìn)行標(biāo)記。(2)易出現(xiàn)位反轉(zhuǎn)。NAND FLASH更易出現(xiàn)位反轉(zhuǎn)的現(xiàn)象,如果位反轉(zhuǎn)出現(xiàn)在關(guān)鍵 文件上,會導(dǎo)致系統(tǒng)掛機(jī)。所以在使用NANDFLASH的同時,建議使用ECC/EDC算法確??煽?性。(3)存在Spare區(qū)。正因為NAND FLASH有著上面的兩項特殊的地方,Spare區(qū)就 扮演作存放壞塊標(biāo)志,ECC值以及芯片信息和文件信息的作用。(4)多維的空間結(jié)構(gòu)。NAND FLASH—般由block,page,sector等結(jié)構(gòu)組成。所以 在有的文件系統(tǒng)中就衍生出各種分區(qū)信息和扇區(qū)信息等。
發(fā)明內(nèi)容
本發(fā)明提出一種測試存儲器件的方法,用于檢測存儲器件物理地址與邏輯地址是 否一一對應(yīng),存放在存儲器件中的數(shù)據(jù)是否可靠。實現(xiàn)本發(fā)明的目的所采用的技術(shù)方案是一種測試存儲器件的方法,用于檢測存放在存儲器件中的數(shù)據(jù)是否可靠,該方法 包括如下步驟(1)對存儲器件的存儲區(qū)進(jìn)行劃分,將存儲器件劃分為多個扇區(qū),再將每個扇區(qū)劃 分為多個區(qū)域;(2)對每個扇區(qū)劃分的多個區(qū)域進(jìn)行數(shù)據(jù)填充(2.1)在每個扇區(qū)的前N個區(qū)域填充一定格式的數(shù)據(jù),其中N為正整數(shù);
(2.2)對每個扇區(qū)所述前N個區(qū)域后面的多個區(qū)域依次填充一定格式的數(shù)據(jù),其 中,所述后續(xù)的多個區(qū)域中,第一個區(qū)域的數(shù)據(jù)由前N個區(qū)域的數(shù)據(jù)經(jīng)預(yù)定的算法計算得 到,后面每個區(qū)域所填充的數(shù)據(jù)由其前一個區(qū)域的數(shù)據(jù)通過該算法計算得到;(3)讀取上述填充到存儲器件各扇區(qū)的數(shù)據(jù),并進(jìn)而判斷所述存儲器件是否正常, 即判斷讀取出來的前N個區(qū)域以及后續(xù)區(qū)域存儲的數(shù)據(jù)與對應(yīng)的填充數(shù)據(jù)是否一致,如果 不一致,則判定該存儲器件存在問題。作為本發(fā)明的進(jìn)一步改進(jìn),所述的步驟(2. 1)中,所述填充的一定格式的數(shù)據(jù)包 括扇區(qū)所在的起始邏輯地址和系統(tǒng)當(dāng)前時間;所述扇區(qū)所在的起始邏輯地址從所述前N個 區(qū)域的第一個字節(jié)依次往后存放,所述當(dāng)前時間存放于所述前N個區(qū)域的最后,剩余存儲 部分用任意數(shù)據(jù)填充。作為本發(fā)明的進(jìn)一步改進(jìn),所述的步驟(2. 2)中的預(yù)定的算法為MD5算法或各種 加密算法。作為本發(fā)明的進(jìn)一步改進(jìn),所述的步驟(3)中的具體判斷過程為(A)判斷從每個扇區(qū)所述前N個區(qū)域讀取的數(shù)據(jù)與相應(yīng)的填充數(shù)據(jù)是否一致,具 體包括判斷每個扇區(qū)中讀取出的地址與扇區(qū)的起始邏輯地址是否相同,以及每個扇區(qū)的 數(shù)據(jù)中的時間與寫入數(shù)據(jù)的時間是否一致;(B)判斷所述后續(xù)各個區(qū)域中讀取的數(shù)據(jù)與相應(yīng)的填充數(shù)據(jù)是否一致,具體為 將所述后續(xù)各個區(qū)域中的第一扇區(qū)的數(shù)據(jù)與所述前N個區(qū)域的數(shù)據(jù)經(jīng)所述算法計算得到 的數(shù)據(jù)進(jìn)行比較,將所述第一扇區(qū)后面的每個扇區(qū)與其前一扇區(qū)的數(shù)據(jù)經(jīng)所述算法計算得 到的數(shù)據(jù)進(jìn)行比較,判斷各對應(yīng)數(shù)據(jù)是否一致。作為本發(fā)明的進(jìn)一步改進(jìn),所述的任意數(shù)據(jù)可以為00到ff之中任意一個或者組 合的十六進(jìn)制,扇區(qū)所在邏輯地址或者扇區(qū)所在邏輯地址根據(jù)所述算法計算得到的數(shù)據(jù)作為本發(fā)明的進(jìn)一步改進(jìn),所述的存儲器為NAND flash。作為本發(fā)明的進(jìn)一步改進(jìn),所述的扇區(qū)大小為512字節(jié),所述區(qū)域大小為16字節(jié)。作為本發(fā)明的進(jìn)一步改進(jìn),所述的N為2。本發(fā)明的有益效果是(1)使得測試結(jié)果更加合理可靠,更能查找到問題和問題所在的位置;(2)寫入的各數(shù)據(jù)單元關(guān)聯(lián)性較弱,防止測試中出現(xiàn)相互的干擾導(dǎo)致某些問題不 能發(fā)現(xiàn)。(3)寫入NAND flash存儲器中的一個測試數(shù)據(jù)單元中的數(shù)據(jù)相互關(guān)聯(lián)性強(qiáng);(4)在測試數(shù)據(jù)中加入時間可以查找到以前測試中隱藏的問題。
圖1是NAND flash存儲器件的扇區(qū)在測試中分成32個16字節(jié)大小的數(shù)據(jù)塊圖;圖2是寫入被測的NAND flash存儲器件的每個扇區(qū)的數(shù)據(jù)的生成方式;圖3是讀取被測的NAND flash存儲器件的數(shù)據(jù)進(jìn)行分析的方法;
具體實施例方式下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
本實施例中的存儲器件為NAND flash,本發(fā)明的用于測試NANDflash存儲器件的 方法,包括如下步驟一、對存儲器件的存儲區(qū)域進(jìn)行劃分本實施例以512字節(jié)為一個扇區(qū),將存儲器件劃分為多個扇區(qū),再將每個扇區(qū)劃 分為多個區(qū)域,例如分為32個16字節(jié)區(qū)域。詳見附圖1。劃分的扇區(qū)大小及區(qū)域大小可以 根據(jù)實際需要設(shè)置和調(diào)整。二、對上述劃分的多個區(qū)域進(jìn)行數(shù)據(jù)填充(1)在每個扇區(qū)的前部區(qū)域?qū)懭氲谝粯?biāo)示數(shù)據(jù),如在每個扇區(qū)的起始的32個字節(jié) 中按如下步驟寫入數(shù)據(jù)1)取扇區(qū)所在起始邏輯地址,從32字節(jié)的第一個字節(jié)依次往后存放。一般地,扇 區(qū)的起始邏輯地址長度不超過25個字節(jié)長度。2)獲取電腦當(dāng)前時間按照年兩個字節(jié),月一個字節(jié),日一個字節(jié),小時一個字節(jié), 分鐘一個字節(jié),秒一個字節(jié),放入32字節(jié)的最后7字節(jié)中。(日期數(shù)據(jù)使用十進(jìn)制)3)32字節(jié)中沒有用到的部分用任意數(shù)值填充,記錄下填充的數(shù)值用于讀取這個扇 區(qū)的時候做比較。實際測試中可以使用一下幾種數(shù)據(jù)。 填充的字節(jié)用使用00到ff任意一個或者組合的較有規(guī)律的十六進(jìn)制。 使用扇區(qū)所在邏輯地址循環(huán)填充,如果不是邏輯地址字節(jié)大小的整數(shù),去掉最 后填充進(jìn)來的邏輯地址的后面多余數(shù)據(jù),或者邏輯地址的前面多余的數(shù)據(jù)。 將邏輯地址進(jìn)行MD5計算得到的數(shù)據(jù)填充,去掉填充后剩余的數(shù)據(jù)。(2)對每個扇區(qū)后續(xù)的多個區(qū)域依次填充數(shù)據(jù),每個區(qū)域所填充的數(shù)據(jù)由前一個 區(qū)域的數(shù)據(jù)通過一定的算法計算得到。所述的算法可以是MD5、各種加密算法等。本實施例中以MD5算法為例,對大小為16字節(jié)的區(qū)域進(jìn)行數(shù)據(jù)填充。具體過程 為將扇區(qū)的開始的32字節(jié)用MD5算法生成一個16字節(jié)的數(shù)據(jù)寫入所測扇區(qū)的后續(xù) 第一個16字節(jié)的數(shù)據(jù)塊中,再將上述第一個16字節(jié)數(shù)據(jù)經(jīng)過MD5運(yùn)算得到的16字節(jié)的數(shù) 據(jù)寫入下一個16字節(jié)的數(shù)據(jù)塊中,依次做同樣的操作直到寫滿扇區(qū)為止。測試中可以一次 寫入多個扇區(qū)的數(shù)值。三、讀取上述寫入到存儲器件各扇區(qū)的數(shù)據(jù),并判斷所述存儲器件是否正常。即如 果讀取出來的第一標(biāo)識數(shù)據(jù)以及后續(xù)區(qū)域存儲的數(shù)據(jù)與寫入的對應(yīng)數(shù)據(jù)是否一致,具體過程如下(1)如果每個扇區(qū)中讀取出的地址是否和扇區(qū)的首地址相同,不同則可能存在問題。(2)比較每個扇區(qū)的數(shù)據(jù)中的時間與寫入數(shù)據(jù)的時間是否一致,不一致時報告扇 區(qū)寫入數(shù)據(jù)的時間,以此判讀問題所在。(3) 一個扇區(qū)中開始的32字節(jié)填充的數(shù)據(jù)是否正確。(4)將第一個扇區(qū)經(jīng)過MD5計算得到的數(shù)據(jù)和扇區(qū)中第二個16字節(jié)數(shù)據(jù)是否一 致,如此比較下去,知道完成整個扇區(qū)數(shù)據(jù)的比較。(5)測試中可以一次讀取多個扇區(qū)的數(shù)據(jù)進(jìn)行比較,得出結(jié)果。通過本發(fā)明的方 法,可以測試出存儲器件的問題包括
5
(1)邏輯地址在讀寫數(shù)據(jù)前后不一致。讀取某個扇區(qū)的寫入數(shù)據(jù)時的邏輯地址與 讀出數(shù)據(jù)時的邏輯地址不對應(yīng)問題。(2)時間不一致。讀取到的時間與最近一次寫入扇區(qū)的數(shù)據(jù)的時間不一致。(3)數(shù)據(jù)產(chǎn)生錯誤。一個扇區(qū)中分成的32個16字節(jié)數(shù)據(jù)塊中數(shù)據(jù)是具有關(guān)聯(lián)性 的,一旦某個地方的數(shù)據(jù)產(chǎn)生錯誤,后續(xù)的數(shù)據(jù)都產(chǎn)生錯誤,找到錯誤數(shù)據(jù)最開始產(chǎn)生錯誤 的地方。(4)存儲問題。數(shù)據(jù)寫入與讀出的數(shù)據(jù)不一致能判別為存儲問題。
權(quán)利要求
一種測試存儲器件的方法,用于檢測存放在存儲器件中的數(shù)據(jù)是否可靠,該方法包括如下步驟(1)對存儲器件的存儲區(qū)進(jìn)行劃分,將存儲器件劃分為多個扇區(qū),再將每個扇區(qū)劃分為多個區(qū)域;(2)對每個扇區(qū)劃分的多個區(qū)域進(jìn)行數(shù)據(jù)填充(2.1)在每個扇區(qū)的前N個區(qū)域填充一定格式的數(shù)據(jù),其中N為正整數(shù);(2.2)對每個扇區(qū)所述前N個區(qū)域后續(xù)的多個區(qū)域依次填充一定格式的數(shù)據(jù),其中,所述后續(xù)的多個區(qū)域中,第一個區(qū)域的數(shù)據(jù)由前N個區(qū)域的數(shù)據(jù)經(jīng)預(yù)定的算法計算得到,后面每個區(qū)域所填充的數(shù)據(jù)由其前一個區(qū)域的數(shù)據(jù)通過該算法計算得到;(3)讀取上述填充到存儲器件各扇區(qū)的數(shù)據(jù),并進(jìn)而判斷所述存儲器件是否正常,即判斷讀取出來的前N個區(qū)域以及后續(xù)區(qū)域存儲的數(shù)據(jù)與對應(yīng)的填充數(shù)據(jù)是否一致,如果不一致,則判定該存儲器件存在問題。
2.根據(jù)權(quán)利要求1所述的一種測試存儲器件的方法,其特征在于,所述的步驟(2.1) 中,所述填充的一定格式的數(shù)據(jù)包括扇區(qū)所在的起始邏輯地址和系統(tǒng)當(dāng)前時間;所述扇區(qū) 所在的起始邏輯地址從所述前N個區(qū)域的第一個字節(jié)依次往后存放,所述當(dāng)前時間存放于 所述前N個區(qū)域的最后,剩余存儲部分用任意數(shù)據(jù)填充。
3.根據(jù)權(quán)利要求1或2所述的一種測試存儲器件的方法,其特征在于,所述的步驟 (2.2)中的預(yù)定的算法為MD5算法或各種加密算法。
4.根據(jù)權(quán)利要求1-3之一所述的一種測試存儲器件的方法,其特征在于,所述的步驟 (3)中的具體判斷過程為(A)判斷從每個扇區(qū)所述前N個區(qū)域讀取的數(shù)據(jù)與相應(yīng)的填充數(shù)據(jù)是否一致,具體包 括判斷每個扇區(qū)中讀取出的地址與扇區(qū)的起始邏輯地址是否相同,以及每個扇區(qū)讀取出 的時間與寫入的時間是否一致;(B)判斷所述后續(xù)各個區(qū)域中讀取的數(shù)據(jù)與相應(yīng)的填充數(shù)據(jù)是否一致,具體為將所 述后續(xù)各個區(qū)域中的第一扇區(qū)的數(shù)據(jù)與所述前N個區(qū)域的數(shù)據(jù)經(jīng)所述算法計算得到的數(shù) 據(jù)進(jìn)行比較,將所述第一扇區(qū)后面的每個扇區(qū)與其前一扇區(qū)的數(shù)據(jù)經(jīng)所述算法計算得到的 數(shù)據(jù)進(jìn)行比較,判斷各對應(yīng)數(shù)據(jù)是否一致。
5.根據(jù)權(quán)利要求2-4之一所述的一種測試存儲器件的方法,其特征在于,所述的任意 數(shù)據(jù)可以為00到ff之中任意一個或者組合的十六進(jìn)制,扇區(qū)所在邏輯地址或者扇區(qū)所在 邏輯地址根據(jù)所述算法計算得到的數(shù)據(jù)。
6.根據(jù)權(quán)利要求1-5之一所述的一種測試存儲器件的方法,其特征在于,所述的存儲 器為 NAND flash。
7.根據(jù)權(quán)利要求1-6之一所述的一種測試存儲器件的方法,其特征在于,所述的扇區(qū) 大小為512字節(jié),所述區(qū)域大小為16字節(jié)。
8.根據(jù)權(quán)利要求1-7之一所述的一種測試存儲器件的方法,其特征在于,所述的N為2。
全文摘要
本發(fā)明公開了一種測試存儲器件的方法,具體為(1)對存儲器件的存儲區(qū)域進(jìn)行劃分,將存儲器件劃分為多個扇區(qū),并再將每個扇區(qū)劃分為多個區(qū)域;(2)對每個扇區(qū)的上述劃分的多個區(qū)域進(jìn)行數(shù)據(jù)填充;(3)讀取上述填充到存儲器件各扇區(qū)的數(shù)據(jù),并判斷所述存儲器件是否正常,即判斷讀取出來的第一標(biāo)識數(shù)據(jù)以及后續(xù)區(qū)域存儲的數(shù)據(jù)與寫入的對應(yīng)數(shù)據(jù)是否一致,如果不一致,則判定該存儲器件存在問題。
文檔編號G11C29/08GK101937721SQ20101024400
公開日2011年1月5日 申請日期2010年8月4日 優(yōu)先權(quán)日2010年8月4日
發(fā)明者李曉俊 申請人:武漢天喻信息產(chǎn)業(yè)股份有限公司