專利名稱:一種Flash存儲器的動態(tài)存儲方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種存儲器的存儲方法,具體地說,是涉及一種Flash存儲器 的動態(tài)存儲方法,屬于存儲器技術(shù)領(lǐng)域。
背景技術(shù):
Flash作為一種存儲介質(zhì),在存儲領(lǐng)域得到廣泛的應(yīng)用。Flash在物理結(jié)構(gòu) 上分成若干個物理區(qū)塊(block),區(qū)塊之間相互獨立,其自身具有以下特性 (1)由于Flash的寫操作只能將數(shù)據(jù)位從l寫成O,不能從O寫成l,所以在 對flash存儲器進行寫入之前必須先執(zhí)行擦操作,將預寫入的數(shù)據(jù)位初始化為 1,且擦除操作的最小單位是一個區(qū)塊,而不是單個字節(jié);(2)Flash的擦寫壽 命有次數(shù)限制;(3) Flash在使用過程中,可能導致某些區(qū)塊的損壞,而區(qū)塊 一旦損壞,將無法進行修復;(4)由于Flash固有的電器特性,在讀寫數(shù)據(jù)過 程中,偶然會產(chǎn)生一位或幾位數(shù)據(jù)錯誤,這稱為位反轉(zhuǎn),位反轉(zhuǎn)無法避免,只 能通過其他手段對結(jié)果進行事后處理;(5)塊擦除的時間比較長。
為解決Flash存在的上述問題,目前有一種基于靜態(tài)虛擬扇區(qū)的Flash存 儲管理方法,其原理如圖1所示。整個Flash存儲空間分為N個可擦除的block, 每個block劃分為n個更小的虛擬邏輯塊VSS,稱為虛擬小扇區(qū),每個扇區(qū)大 小及存儲數(shù)據(jù)類型根據(jù)應(yīng)用在模塊初始化時設(shè)定。每個block前面的一個固定 單元作為扇區(qū)分配表SAT,用于記錄本block中扇區(qū)分配的使用情況。 一個SAT 中包含有n個SAT單元,每個SAT單元對應(yīng)一個虛擬小扇區(qū)VSS,且每個SAT 單元包括有扇區(qū)屬性及扇區(qū)邏輯號VSS ID。在進行數(shù)據(jù)讀寫或修改時,以虛擬 扇區(qū)塊的大小為單位。要修改某一扇區(qū)的數(shù)據(jù)時,先讀出這個扇區(qū)的內(nèi)容,重新找一個未使用的扇區(qū),把修改后的內(nèi)容寫入這個新扇區(qū)。然后,修改原來扇 區(qū)的屬性值為無效,修改新扇區(qū)的屬性為有效,拷貝虛擬扇區(qū)邏輯號到新扇區(qū)
對應(yīng)的SAT單元中。這樣,當某一個block中的SAT屬性都標為無效時,才對 當前block進行擦寫??梢姡蕴摂M扇區(qū)大小為單位的存儲管理,對Flash塊 的擦寫次數(shù)可大大減少,從而提高了系統(tǒng)性能,延長了 Flash的使用壽命。
但是,這種靜態(tài)存儲管理方法存在下述缺陷由于每個虛擬扇區(qū)的大小及 存儲數(shù)據(jù)類型在模塊初始化時已經(jīng)設(shè)定,每個block只能存儲一種類型的數(shù)據(jù), 當可用的block個數(shù)較少而需要存儲的數(shù)據(jù)類型較多時,或者某種數(shù)據(jù)類型的 數(shù)據(jù)實際長度變化較大時,或者同一類型的數(shù)據(jù)比一個block還大時,則會造 成空間的極大浪費,甚至無法將數(shù)據(jù)寫入至block中。而且,由于靜態(tài)存儲方 法沒有對數(shù)據(jù)和SAT進行有效地校驗,導致數(shù)據(jù)的安全性較差。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術(shù)中Flash靜態(tài)存儲方法存在的上述不足,提供了一種 Flash存儲器的動態(tài)存儲方法,有效地解決了靜態(tài)存儲方法中Flash存儲空間 利用率較低的技術(shù)問題。
為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案予以實現(xiàn)
一種Flash存儲器的動態(tài)存儲方法,其特征在于,包括下述步驟
a、 將Flash存儲空間劃分為若干個邏輯分區(qū),所述邏輯分區(qū)存儲至少一種 類型的數(shù)據(jù)記錄;
b、 將所述每條數(shù)據(jù)記錄所占據(jù)的存儲空間作為一個虛擬扇區(qū),并對每個虛 擬扇區(qū)設(shè)置一個虛擬扇區(qū)分配表;
c、 所述數(shù)據(jù)記錄從所述邏輯分區(qū)的一端依次寫入,與所述數(shù)據(jù)記錄相對應(yīng) 的虛擬扇區(qū)分配表從所述邏輯分區(qū)的另 一端依次寫入。
根據(jù)本發(fā)明,所述每個虛擬扇區(qū)分配表中包括有數(shù)據(jù)記錄有效標志、數(shù)據(jù) 記錄長度、數(shù)據(jù)記錄類型、數(shù)據(jù)記錄ID號及數(shù)據(jù)記錄校驗碼。其中,所述數(shù)據(jù)記錄校驗碼為CRC校驗碼,且所述CRC校驗碼的值才艮據(jù)所 述數(shù)據(jù)記錄的數(shù)據(jù)及與所述數(shù)據(jù)記錄相對應(yīng)的虛擬扇區(qū)分配表中的數(shù)據(jù)計算得 到。
根據(jù)本發(fā)明,所述Flash中的每個邏輯分區(qū)包括一個或多個連續(xù)的物理區(qū) 塊block。
根據(jù)本發(fā)明,為標識和校驗各個邏輯分區(qū)的有效性,在所述每個邏輯分區(qū)
的最底部設(shè)置有分區(qū)標志。
根據(jù)本發(fā)明,所述分區(qū)標志包括格式化標志和分區(qū)ID號。
根據(jù)本發(fā)明,所述Flash存儲器以所述數(shù)據(jù)記錄為基本單元進行數(shù)據(jù)的讀
寫操作。
根據(jù)本發(fā)明,將數(shù)據(jù)記錄寫入到所述Flash存儲器的過程如下
al、判斷待寫入的數(shù)據(jù)記錄類型、數(shù)據(jù)記錄ID號及數(shù)據(jù)記錄的數(shù)據(jù)是否有
效^
bl、在所述步驟al判斷結(jié)果為有效時,判斷要寫入的邏輯分區(qū)是否有效; cl、在所述步驟bl中邏輯分區(qū)有效時,判斷所述邏輯分區(qū)的剩余空間是否 滿足需求;
dl、在所述邏輯分區(qū)的剩余空間滿足需求時,根據(jù)所述凄t據(jù)記錄是否寫入 過判斷采用"追加模式"還是"更新模式"寫入;其中,"追加模式"是指直接 在當前虛擬扇區(qū)分配表的后面寫入新的虛擬扇區(qū)分配表,不需要改寫以前寫入 的虛擬扇區(qū)分配表為無效;"更新模式"是指除了在當前虛擬扇區(qū)分配表的后面 寫入新的虛擬扇區(qū)分配表,還需要改寫以前寫入的相應(yīng)的虛擬扇區(qū)分配表為無 效;
el、根據(jù)虛擬扇區(qū)分配表的結(jié)構(gòu),組裝虛擬扇區(qū)分配表的所有內(nèi)容; f 1、將所述組裝好的虛擬扇區(qū)分配表寫入到當前虛擬扇區(qū)分配表的后面; gl、計算所述數(shù)據(jù)記錄的存儲位置,并將其寫入至相應(yīng)位置。 進一步的,若所述邏輯分區(qū)的剩余空間不能滿足需求,則全部讀取所述分區(qū)上的有效數(shù)據(jù)到內(nèi)存,然后格式化所述分區(qū),停止寫入待寫入的數(shù)據(jù),并將 剛剛保存到內(nèi)存中的第 一個數(shù)據(jù)作為待寫入數(shù)據(jù)。
根據(jù)本發(fā)明,從所述Flash存儲器中讀取數(shù)據(jù)記錄的過程為
b2、在所述步驟a2判斷結(jié)果為有效時,才艮據(jù)邏輯分區(qū)配置信息,查找待讀 取數(shù)據(jù)記錄類型對應(yīng)的分區(qū);
c2、 4全索所述分區(qū)上所有的虛擬扇區(qū)分配表,找到與待讀取的數(shù)據(jù)記錄類 型、數(shù)據(jù)記錄ID號匹配的有效的虛擬扇區(qū)分配表;
d2、根據(jù)找到的虛擬扇區(qū)分配表,計算對應(yīng)的數(shù)據(jù)記錄的存儲位置,并讀 取出來;
e2、計算讀取到的數(shù)據(jù)記錄的數(shù)據(jù)和虛擬扇區(qū)分配表中除數(shù)據(jù)記錄校驗碼 之外內(nèi)容的CRC校驗碼值,并將所計算的CRC校驗碼值與所述虛擬扇區(qū)分配表 中的CRC校驗碼值進行比較,若兩者不同,則4全-驗失??;
f2、若上述校驗通過,將數(shù)據(jù)記錄的數(shù)據(jù)拷貝出去。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點和積極效果是
1、 根據(jù)實際應(yīng)用動態(tài)分配邏輯分區(qū),將邏輯分區(qū)中每條數(shù)據(jù)記錄占據(jù)的空 間作為虛擬扇區(qū),每個邏輯分區(qū)中數(shù)據(jù)記錄類型、數(shù)據(jù)記錄長度及數(shù)據(jù)記錄的 寫入順序等都是不確定的,寫入數(shù)據(jù)時采用兩頭并進的方式,數(shù)據(jù)記錄從邏輯 分區(qū)的一端依次寫入,而與其對應(yīng)的虛擬扇區(qū)分配表從邏輯分區(qū)的另 一端依次 寫入,從而能夠充分利用Flash的存儲空間,也即相當于減少了 Flash中block 的擦除次數(shù),從而提高了數(shù)據(jù)的讀寫速度,提高了 Flash的壽命。
2、 根據(jù)數(shù)據(jù)記錄的數(shù)據(jù)及與所述數(shù)據(jù)記錄相對應(yīng)的虛擬扇區(qū)分配表中的數(shù) 據(jù)計算得到CRC校驗碼,對讀寫數(shù)據(jù)記錄進行校驗,提高了 Flash數(shù)據(jù)讀寫的 安全性和可靠性。
圖1是現(xiàn)有技術(shù)中基于靜態(tài)虛擬扇區(qū)的F1 ash存儲管理實現(xiàn)方法的原理圖; 圖2為本發(fā)明所述的Flash存儲器動態(tài)存儲方法一個實施例的流程圖; 圖3為本發(fā)明所述Flash邏輯分區(qū)中數(shù)據(jù)存儲位置一個實施例的示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明作進 一 步詳細的說明。
請參閱圖2所示的本發(fā)明Flash存儲器動態(tài)存儲方法一個實施例的流程圖。 所述動態(tài)存儲方法流程如下 S101:流程開始。
S102:將Flash存儲空間劃分為若干個邏輯分區(qū),每個邏輯分區(qū)包括一個 或者多個連續(xù)的物理區(qū)塊block,且每個分區(qū)可以用來存儲一種或者多種數(shù)據(jù) 類型的數(shù)據(jù)記錄。
所述數(shù)據(jù)記錄,就是指一個char型字符串,例如 一條節(jié)目信息可以作為 一條數(shù)據(jù)記錄;全部的系統(tǒng)配置信息也可以看作一條數(shù)據(jù)記錄。在動態(tài)存儲方 法中,F(xiàn)lash存儲器以所述數(shù)據(jù)記錄為基本單元進行數(shù)據(jù)的讀寫操作。
S103:將每條數(shù)據(jù)記錄所占據(jù)的存儲空間作為一個虛擬扇區(qū),為了能夠確 定每個虛擬扇區(qū)中存儲的數(shù)據(jù)的相關(guān)屬性值,對每個虛擬扇區(qū)設(shè)置一個虛擬扇 區(qū)分配表。
本實施例為盡量減少對Flash存儲空間的占用,定義所述每個虛擬扇區(qū)分 配表的長度為80bit。具體數(shù)據(jù)結(jié)構(gòu)為
0~31bit共32bit用來存儲CRC校驗碼,也即CRC32校驗碼。所述校驗碼 是對數(shù)據(jù)記錄的數(shù)據(jù)及與其對應(yīng)的虛擬扇區(qū)分配表中的數(shù)據(jù)一并計算后的校驗
據(jù)的安全性。32 47bit共16bit用來存儲教:據(jù)記錄的邏輯號,即數(shù)據(jù)記錄的 ID號,通過所述數(shù)據(jù)記錄的ID號,能夠區(qū)分不同的凝:據(jù)記錄。 48 52bit共5bit用來存儲數(shù)據(jù)記錄的教:據(jù)類型。
953~77bit共25bit用來存儲數(shù)據(jù)記錄長度。
根據(jù)所述數(shù)據(jù)類型,可以知道所述數(shù)據(jù)記錄的長度、邏輯分區(qū)的開始地址 等信息,方法如下根據(jù)FLASH分區(qū)的配置信息,直接可以得到該分區(qū)的開始 地址、包含的Block個數(shù)等信息;根據(jù)這些配置信息還可以計算出某一種數(shù)據(jù) 類型對應(yīng)的分區(qū),檢索該分區(qū)上存儲的SAT,每個SAT都對應(yīng)了數(shù)據(jù)記錄的數(shù) 據(jù)長度,通過累加的方式就能夠很容易計算出某個SAT對應(yīng)數(shù)據(jù)記錄的存儲位 置,方便用戶讀耳^目應(yīng)的數(shù)據(jù)記錄。
77 78bit共2bit用來存儲數(shù)據(jù)記錄有效標志。所述有效標志為01,表示 對應(yīng)的lt據(jù)記錄有效,有效標志為00,表示對應(yīng)的凄t據(jù)記錄無效。
S104:數(shù)據(jù)記錄從邏輯分區(qū)的一端依次寫入,與所述數(shù)據(jù)記錄相對應(yīng)的虛 擬扇區(qū)分配表從所述邏輯分區(qū)的另一端依次寫入。
由于每個邏輯分區(qū)中數(shù)據(jù)類型個數(shù)、數(shù)據(jù)記錄個數(shù)、數(shù)據(jù)記錄的長度、數(shù) 據(jù)記錄的寫入順序等都是不確定的,所以采用了數(shù)據(jù)記錄和虛擬扇區(qū)分配表分 頭寫入的方式。例如可采取數(shù)據(jù)記錄從邏輯分區(qū)的頭部依次向下寫入、而與其
如圖3 Flash邏輯分區(qū)中數(shù)據(jù)存儲位置示意圖所示,頭部向下依次為數(shù)據(jù)記錄
Data record 0, Data record 1, ......, Data record n,底部向上依次為虛擬
扇區(qū)分配表SATO, SAT1,……,SAT n。
此外,為了標識各個邏輯分區(qū),在所述每個邏輯分區(qū)的最底部設(shè)置有分區(qū) 標志,如圖3最底部所示,用來表明所述分區(qū)已經(jīng)格式化或者已經(jīng)使用。所述 分區(qū)標志共有16bit,其中,高8bit為格式化標志,表明該分區(qū)已經(jīng)格式化; 低8bit為分區(qū)ID號,主要用來校驗分區(qū)。
應(yīng)用上述動態(tài)存儲方法將數(shù)據(jù)記錄寫入至Flash存儲器的流程如下
步驟201:判斷待寫入的數(shù)據(jù)記錄類型、數(shù)據(jù)記錄ID及數(shù)據(jù)記錄的數(shù)據(jù)等 是否有效;若有效,執(zhí)行步驟S202,若無效則退出寫入過程。
步驟202:判斷要寫入的邏輯分區(qū)是否有效;若有效,執(zhí)行步驟S203,若無效則需要將所述分區(qū)格式化。
步驟S203:判斷有效的邏輯分區(qū)上剩余空間是否能夠滿足需求;若滿足需 求,執(zhí)行步驟S205;若不滿足需求,執(zhí)行步驟S204。
步驟S204:停止寫入待寫入的數(shù)據(jù),讀取所述分區(qū)上的全部有效數(shù)據(jù)到內(nèi) 存,然后格式化該分區(qū),并將剛剛保存到內(nèi)存中的第一個數(shù)據(jù)作為待寫入數(shù)據(jù), 將所有原有效數(shù)據(jù)依次寫入至格式化后的分區(qū)中,以防止數(shù)據(jù)丟失,然后執(zhí)行 步驟S205。其中,若分區(qū)剛剛格式化過,而剩余空間仍不能滿足需求,則表明 分區(qū)空間不足,就需要重新劃分分區(qū)。
步驟S205:根據(jù)數(shù)據(jù)記錄是否曾經(jīng)寫入過,確定采用"追加模式"還是"更 新模式"寫入。所謂"追加模式",是指直接在分區(qū)中當前虛擬扇區(qū)分配表SAT 的后面寫入新的SAT,不需要改寫以前寫入的SAT為無效;所謂"更新模式", 是指除了在當前SAT的后面寫入新的SAT之外,還需要改寫以前寫入的對應(yīng)的 SAT為無效;
步驟S206:按照SAT的數(shù)據(jù)結(jié)構(gòu),組裝除CRC校^瞼碼之外的SAT數(shù)據(jù)(不 包括CRC )。
步驟S207:根據(jù)待寫入數(shù)據(jù)記錄的數(shù)據(jù)及SAT中的數(shù)據(jù)內(nèi)容計算SAT的CRC 沖交-險石馬,并力口入到SAT中。
步驟S208:根據(jù)"追加模式"或"更新模式"將新的SAT寫入到分區(qū)中(依 次從分區(qū)的尾部向上寫)。
步驟S209:計算數(shù)據(jù)存儲的位置并寫入相應(yīng)的lt據(jù)。
步驟S210:若內(nèi)存中還有待寫入的數(shù)據(jù)記錄,則跳到步驟S203繼續(xù)依次 寫入。
應(yīng)用上述動態(tài)存儲方法從Flash存儲器中讀取數(shù)據(jù)記錄的流程如下 步驟S301:判斷待讀取的數(shù)據(jù)類型、數(shù)據(jù)ID等是否有效;若有效,轉(zhuǎn)至 步驟S302,否則退出數(shù)據(jù)讀取。
步驟S302:根據(jù)邏輯分區(qū)配置信息,查找所述數(shù)據(jù)記錄類型對應(yīng)的分區(qū)。所述邏輯分區(qū)配置信息在劃分邏輯分區(qū)時已經(jīng)確定,所述配置信息記錄了 邏輯分區(qū)所包含的block數(shù)量及分區(qū)所存儲的數(shù)據(jù)記錄類型等信息。
步驟S303:檢索所述分區(qū)上所有的SAT,找到與待讀取的數(shù)據(jù)類型、數(shù)據(jù) 記錄ID匹配的有效的SAT。
步驟S304:根據(jù)找到的SAT,計算對應(yīng)的數(shù)據(jù)記錄的存儲位置并讀取出來。
步驟S305:計算讀取到的數(shù)據(jù)記錄數(shù)據(jù)和SAT (不包括CRC本身)的CRC 校驗碼值,并將所計算的CRC校驗碼值與所述SAT中的CRC值進行比較;若兩 者不同,則檢驗失敗,退出數(shù)據(jù)讀取過程。若校驗通過,則將數(shù)據(jù)記錄的數(shù)據(jù) 拷貝出去,完成數(shù)據(jù)記錄的讀取過程。
當然,以上所述4義是本發(fā)明的一種優(yōu)選實施方式而已,應(yīng)當指出,對于本 技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前4是下,還可以做出若 干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1、一種Flash存儲器的動態(tài)存儲方法,其特征在于,包括下述步驟a、將Flash存儲空間劃分為若干個邏輯分區(qū),所述邏輯分區(qū)存儲至少一種類型的數(shù)據(jù)記錄;b、將所述每條數(shù)據(jù)記錄所占據(jù)的存儲空間作為一個虛擬扇區(qū),并對每個虛擬扇區(qū)設(shè)置一個虛擬扇區(qū)分配表;c、所述數(shù)據(jù)記錄從所述邏輯分區(qū)的一端依次寫入,與所述數(shù)據(jù)記錄相對應(yīng)的虛擬扇區(qū)分配表從所述邏輯分區(qū)的另一端依次寫入。
2、 根據(jù)權(quán)利要求1所述的動態(tài)存儲方法,其特征在于,所述每個虛擬扇區(qū) 分配表中包括有數(shù)據(jù)記錄有效標志、數(shù)據(jù)記錄長度、數(shù)據(jù)記錄類型、數(shù)據(jù)記錄 ID號及數(shù)據(jù)記錄校驗碼。
3、 根據(jù)權(quán)利要求2所述的動態(tài)存儲方法,其特征在于,所述數(shù)據(jù)記錄校驗 碼為CRC校驗碼;所述CRC校驗碼的值根據(jù)所述數(shù)據(jù)記錄的數(shù)據(jù)及與所述數(shù)據(jù) 記錄相對應(yīng)的虛擬扇區(qū)分配表中的數(shù)據(jù)計算得到。
4、 根據(jù)權(quán)利要求l所述的動態(tài)存儲方法,其特征在于,所述每個邏輯分區(qū) 包4舌一個或多個連續(xù)的物理區(qū)塊Block。
5、 根據(jù)權(quán)利要求4所述的動態(tài)存儲方法,其特征在于,所述每個邏輯分區(qū) 最底部設(shè)置有分區(qū)標志。
6、 根據(jù)權(quán)利要求5所述的動態(tài)存儲方法,其特征在于,所述分區(qū)標志包括 格式化標志和分區(qū)ID號。
7、 根據(jù)權(quán)利要求1至6中任一項所述的動態(tài)存儲方法,其特征在于,所述 Flash存儲器以所述數(shù)據(jù)記錄為基本單元進行數(shù)據(jù)的讀寫操作。
8、 根據(jù)權(quán)利要求7所述的動態(tài)存儲方法,其特征在于,將數(shù)據(jù)記錄寫入到 所述Flash存儲器的過程如下al、判斷待寫入的數(shù)據(jù)記錄類型、數(shù)據(jù)記錄ID號及數(shù)據(jù)記錄的數(shù)據(jù)是否有效;bl、在所述步驟al判斷結(jié)果為有效時,判斷要寫入的邏輯分區(qū)是否有效; cl、在所述步驟bl中邏輯分區(qū)有效時,判斷所述邏輯分區(qū)的剩余空間是否 滿足需求;dl、在所述邏輯分區(qū)的剩余空間滿足需求時,才艮據(jù)所述數(shù)據(jù)記錄是否寫入 過判斷采用"追加模式"還是"更新模式"寫入;其中,"追加模式"是指直接 在當前虛擬扇區(qū)分配表的后面寫入新的虛擬扇區(qū)分配表,不需要改寫以前寫入 的虛擬扇區(qū)分配表為無效;"更新模式"是指除了在當前虛擬扇區(qū)分配表的后面 寫入新的虛擬扇區(qū)分配表,還需要改寫以前寫入的相應(yīng)的虛擬扇區(qū)分配表為無 效;el、根據(jù)虛擬扇區(qū)分配表的結(jié)構(gòu),組裝虛擬扇區(qū)分配表的所有內(nèi)容; f 1、將所述組裝好的虛擬扇區(qū)分配表寫入到當前虛擬扇區(qū)分配表的后面; gl、計算所述數(shù)據(jù)記錄的存儲位置,并將其寫入至相應(yīng)位置。
9、 根據(jù)權(quán)利要求8所述的動態(tài)存儲方法,其特征在于,若所述邏輯分區(qū)的剩余空間不能滿足需求,則全部讀取所述分區(qū)上的有效數(shù)據(jù)到內(nèi)存,然后格式化所述分區(qū),停止寫入待寫入的翁:據(jù),并將剛剛保存到內(nèi)存中的第一個翁:據(jù)作 為待寫入數(shù)據(jù)。
10、 根據(jù)權(quán)利要求7所述的動態(tài)存儲方法,其特征在于,從所述Flash存 儲器中讀取數(shù)據(jù)記錄的過程為a2、判斷待讀取的數(shù)據(jù)記錄類型、數(shù)據(jù)記錄ID號是否有效;b2、在所述步驟a2判斷結(jié)果為有效時,才艮據(jù)邏輯分區(qū)配置信息,查找待讀 取數(shù)據(jù)記錄類型對應(yīng)的分區(qū);c2、檢索所述分區(qū)上所有的虛擬扇區(qū)分配表,找到與待讀取的數(shù)據(jù)記錄類 型、數(shù)據(jù)記錄ID號匹配的有效的虛擬扇區(qū)分配表;d2、根據(jù)找到的虛擬扇區(qū)分配表,計算對應(yīng)的數(shù)據(jù)記錄的存儲位置,并讀 取出來;e2、計算讀取到的數(shù)據(jù)記錄的數(shù)據(jù)和虛擬扇區(qū)分配表中除數(shù)據(jù)記錄校驗碼之外內(nèi)容的CRC校驗碼值,并將所計算的CRC校-瞼碼值與所述虛擬扇區(qū)分配表中的CRC校驗碼值進行比較,若兩者不同,則檢驗失??; f2、若上述校驗通過,將數(shù)據(jù)記錄的數(shù)據(jù)拷貝出去。
全文摘要
本發(fā)明公開了一種Flash存儲器的動態(tài)存儲方法,包括下述步驟a.將Flash存儲空間劃分為若干個邏輯分區(qū),所述邏輯分區(qū)存儲至少一種類型的數(shù)據(jù)記錄;b.將所述每條數(shù)據(jù)記錄所占據(jù)的存儲空間作為一個虛擬扇區(qū),并對每個虛擬扇區(qū)設(shè)置一個虛擬扇區(qū)分配表;c.所述數(shù)據(jù)記錄從所述邏輯分區(qū)的一端依次寫入,與所述數(shù)據(jù)記錄相對應(yīng)的虛擬扇區(qū)分配表從所述邏輯分區(qū)的另一端依次寫入,從而有效地解決了靜態(tài)存儲方法中Flash存儲空間利用率較低的技術(shù)問題。
文檔編號G06F12/02GK101446921SQ20081023875
公開日2009年6月3日 申請日期2008年12月23日 優(yōu)先權(quán)日2008年12月23日
發(fā)明者田友強 申請人:青島海信寬帶多媒體技術(shù)股份有限公司