999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大容量存儲設備在嵌入式系統的應用研究

2008-12-31 00:00:00劉會忠
電腦知識與技術 2008年30期

摘要:分析了在嵌入式系統中采用的flash存儲器的使用特點,并論述了如何對NAND FLASH進行有效全面管理的解決方案,包括如何設計文件系統,進行壞塊管理等,如何垃圾回收及均衡各個NAND FALSH塊的使用問題也進行了較詳細論述。

關鍵詞:大容量存儲設備;NAND;文件系統;壞塊管理;均衡

中圖分類號:TP334.5文獻標識碼:A文章編號:1009-3044(2008)30-0733-02

Applications Reserch of Mass Storage Based on Embbed System

LIU Hui-zhong

(Hebei Institute of Applied Mathematics, Shijiazhuang 050081, China)

Abstract: What is the advantages of NOR/NAND Flash memory based on embedded sytem is discussed, the solution of how to use NAND Flash memory comprehensive is descripted , it combines flash file system,bad block management etc. ,put forward the method to deal with dirty block,wearleveling.

Key words: mass storage; NAND; file system; bad block management; wearleveling

1 引言

隨著嵌入式系統越來越廣泛的應用,嵌入式系統中有大量的數據需要存儲和管理。Flash存儲器具有容量大、體積小、功耗小、成本低、掉電后數據不丟失、讀訪問速度高、抗震性好等一系列的優點,已經成為嵌入式系統中廣泛應用的存儲器件。但是隨著系統復雜性的增加和存儲器容量的加大,如何高效地存儲和管理數據從而方便用戶使用成為一個重要的課題。

目前閃存有多種技術架構,其中以NOR技術和NAND技術為主流技術。NOR型閃存是隨機存取的設備,適用于代碼存儲;NAND型閃存是線性存取的設備,適用于大容量數據存儲,因此,設計能有效管理大容量NAND閃存的嵌入式閃存文件系統是解決辦法。

2 Flash存儲器特點

2.1 FLASH共同特點

FLASH是一種非易失性存儲器NVM(Non-Volatile Memory),具有如下共同特點:

(1)區塊結構

FLASH在物理結構上分成若干個區塊,區塊之間相互獨立。比如NOR FLASH把整個Memory分成若干個Sector,而NAND FLASH把整個Memory分成若干個Block。

(2)先擦后寫

由于FLASH的寫操作只能將數據位從1寫成0,不能從0寫成1,所以在對存儲器進行寫入之前必須先執行擦操作,將預寫入的數據位初始化為1。擦操作的最小單位是一個區塊,而不是單個字節。

(3)操作指令

除了NOR FLASH的讀,FLASH的其它操作不能像RAM那樣,直接對目標地址進行總線操作。比如執行一次寫操作,它必須輸入一串特殊的指令(NOR FLASH),或者完成一段時序(NAND FLASH)才能將數據寫入到FLASH中。

(4)位反轉

由于FLASH固有的電器特性,在讀寫數據過程中,偶然會產生一位或幾位數據錯誤,這就是位反轉。位反轉無法避免,只能通過其他手段對結果進行事后處理。

(5)壞塊

FLASH在使用過程中,可能導致某些區塊的損壞。區塊一旦損壞,將無法進行修復。如果對已損壞的區塊進行操作,可能會帶來不可預測的錯誤。尤其是NAND FLASH在出廠時就可能存在這樣的壞塊(已經被標識出)。

2.2 NAND 閃存特點

NAND閃存陣列分為一系列128kB的區塊(block),這些區塊是NAND器件中最小的可擦除實體。擦除一個區塊就是把所有的位(bit)設置為“1”(所有字節(byte)設置為FFh)。寫操作就是通過編程,將已擦除的位從“1”變為“0”。最小的編程實體是字節(byte)。NAND不能同時執行讀寫操作,它可以采用稱為“映射(shadowing)”的方法,在系統級實現這一點。NAND的效率較高,是因為NAND串中沒有金屬觸點。NAND與硬盤驅動器類似,基于扇區(頁),適合于存儲連續的數據,如圖片、音頻或個人電腦數據。雖然通過把數據映射到RAM上,能在系統級實現隨機存取,但是,這樣做需要額外的RAM存儲空間。此外,跟硬盤一樣,NAND器件存在壞的扇區,需要糾錯碼(ECC)來維持數據的完整性。

3 Flash文件系統的設計

對于一個嵌入式系統,設備的兼容性越好,系統可行性就越好,產品也就越有競爭力。所以,為了兼容不同類型的FLASH設備,對FLASH進行通用設計至關重要。NAND FLASH可以根據相同的指令讀取芯片的廠商號和設備號,從而通過識別設備號調用對應的時序流程實現操作。但是,系統中太多的判斷,會使得程序的結構變得非常復雜。所以,在一定的條件下,NAND FLASH設備還是不兼容的。

為了解決這一問題,一個較好的方法是將FLASH的各個操作指令以及結構特性按照統一的格式存放到FLASH中固定位置。系統初始化時,將這個結構讀入系統,通過分析這個結構,可以獲得關于芯片所有相關信息,包括操作指令,區塊分布等等。這樣,系統可以輕松實現對不同型號FLASH的所有操作,極大地提高了設備的擴展性。

3.1 Flash文件系統的存儲結構

本Flash文件系統將整個存儲空間分成兩個部分:文件分配表和數據區域。

(1)文件分配表(FAT,File Allocation Table)。主要反映了Flash存儲器的扇區的使用情況,記錄了各個扇區的狀態,該扇區當前存放的文件的類型以及該扇區已經進行扇區擦除的次數。每個扇區的使用情況都在文件分配表中存有一項,每個表項占8個字節,數據結構如下所示:

structFAT_item{

char sector_state;/*扇區狀態*/

unsigned short file_type;/*該扇區中存放的文件類型*/

long erase_time;/*該扇區已經進行擦除的次數*/

char reserved;/*保留*/

}

其中扇區有5種狀態分別為:

0xff——空閑扇區;

0xfe——扇區已被占用;

0xfc——扇區的數據為過時數據;

0xf8——臟扇區,可以進行整片的扇區擦除;

0xf0——壞扇區;

(2)數據區域(Data Area)。除了文件分配表以外的扇區都稱為數據區域。該區域采用線性Flash文件系統的設計思想,文件分為文件頭和文件數據區兩部分。文件頭的數據結構如下:

struct file_header{

char name[NAMESIZE];/*文件名*/

long size;/*文件大小*/

struct file_header *next;/*指向下一個文件頭的指針*/

char file_state;/*文件狀態*/

}

文件頭中用一個變量file_state來表示該文件當前的狀態,只用了它的低4位來表示文件的5種狀態,主要用于掉電數據恢復和垃圾回收。這在下面將有詳細講述。此外,本Flash文件系統分配給每個文件塊的空間(即塊大?。?K,故一個扇區中最多可存儲32個文件。用單向鏈表來鏈接文件,若next域為0xff,說明這是分配給該文件的最后一個文件塊。

3.2 壞快管理

閃存芯片在使用過程中會出現壞塊。壞塊是指一個塊中存在一個或多個無效位,其可靠性不能得到保證,必須加以標識和旁路(當然無效塊不會影響到其它塊的有效性)。為了對壞塊實現管理,可以建立一張壞塊到冗余區有效塊的映射表。映射原理如下: 開始是一張初始壞塊映射表,建立數據結構對整個存儲區進行編號,并根據這個編號對映射表進行排序。進行寫操作時,按照上述的映射結構將寫地址與映射表進行比較,比較到塊級即可。如果是壞塊,將待寫入的數據寫到被映射到的塊;如果不是,則直接寫入該塊。如果在寫某塊的某頁時出現編程錯誤,則將該塊添加進壞塊映射表(當編程出錯時就表明出錯頁對應的塊無效),同時從該出錯頁開始,將該塊后面的頁數據都寫入到對應的映射塊。這樣,在數據讀出時,可將讀地址與映射表比較,并且需要比較到頁級以確定每一頁的確切存放位置。如果該頁編程正確,則直接讀出;如果錯誤,則到被映射的塊的對應頁讀數據,并且該頁之后的頁也從被映射塊中讀數據。對壞塊進行讀操作是允許的,即對于編程出錯頁前面的那些編程正確的頁是可以正確讀出的,而對壞塊進行編程和擦除的操作是不推薦的,因為有時這些操作會使鄰近的塊也失效,所以讀操作要查找到每一頁的對應存放位置,而寫操作只要查找到塊就行,查找時采用二分查找算法。擦除完后,將擦除出錯的塊也添加進無效塊映射表。無效塊映射表需要不斷維護和更新

3.3 垃圾回收

由于Flash的底層技術不支持Flash的任意空間被刪除,而必須是以扇區為單位刪除,所以在刪除一個文件的時候,僅僅是在文件頭的標識里作一個刪除標識,而該文件依然保留在Flash空間中并標識它為臟數據DIRTY。這樣導致系統在運行一段時間后,Flash中累積著大量的臟數據,這就有必要對這些臟空間進行回收,來有效利用Flash的存儲空間。

本Flash文件系統中解決的辦法是在系統中創建一個任務recycle_task專門進行垃圾回收,該任務實時地檢查空閑隊列。若空閑隊列中的扇區數小于6時便進行垃圾回收,清除臟數據。在進行垃圾回收時,從待擦寫隊列中(包括臟塊隊列和干凈塊隊列)取出一個扇區,將FAT中的該扇區的狀態修改為過時的OBSOLETE,并將該扇區的擦除次數加1,然后在空閑塊隊列中申請一個空閑扇區,將回收扇區中的有效數據寫到新申請的扇區中,修改FAT中新申請的扇區的狀態,最后擦寫回收扇區,并將其鏈接到空閑塊隊列中。

3.4 均衡磨損(wear_leveling)

均衡磨損的主旨是隨機地將“干凈”(無需擦寫)的塊的內容移至另一個空閑塊后擦寫該扇區,然后將其鏈接到空閑塊隊列中,等待寫入新的數據。這實際上是日志文件系統的核心設計思想。

NAND塊擦寫次數限制為10萬次,日志文件系統不覆寫數據一定程度上保證了損耗平衡的同時,產生了無效頁,當空間不足要回收無效頁的空間,將無效頁所在塊的有效頁拷貝到空閑空間,擦除此塊?;厥账惴ㄒWC擦寫分攤到各個塊上,延長使用壽命,并盡可能少地拷貝,避免影響I/O效率。本文件系統的損耗平衡由塊分配策略和回收算法來保證。需要空間時從blockInfo數組中線性查找空白塊,并記下地址finder,下次從finder開始新的查找,若finder為最大塊,則回滾到第1塊,故在數據頻繁更新的情況下,如存儲在塊1的數據更新則寫到遞增的塊2, 3, 4,而當2, 3, 4塊是垃圾數據已被回收擦寫,系統再分配的是5, 6塊,避免2, 3, 4塊再次使用而再被擦寫,相當于有一段緩沖時間。加載時發現部分使用的塊則記為finder。采用這種思想設計,能掃描到全部塊,損耗平衡也就解決的更好。

4 結束語

本文所設計的Flash文件系統能較好解決NAND Flash存儲器的管理問題。此解決方案較好地設計實現Flash文件系統,基本滿足了管理閃存的通用行性設計、壞快管理、垃圾回收機制、均衡磨損機制等。對于要求更大容量的嵌入式系統,可采用把幾塊NAND Flash芯片級聯來實現,這樣就可成倍增加系統的容量,這是接下來重點研究的問題。

參考文獻:

[1] 陳銳. 基于閃存技術的存儲模塊設計[D]. 浙江大學, 2006.

[2] 張長宏. 基于μCOS-Ⅱ的Flash文件系統的研究和實現[D]. 西安電子科技大學,2008.

[3] 陳文華, 郭培源, 陳巖. S3C44B0X嵌入式系統中Flash文件系統的設計與實現[J]. 北京工商大學學報(自然科學版),2006,(3).

[4] 陳逸非. 面向大容量Flash的高效Linux文件系統改進和實現 [D].同濟大學,2007.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 日本在线亚洲| 国产97视频在线| 国产精品女主播| 国产96在线 | 伊人大杳蕉中文无码| 免费观看国产小粉嫩喷水| 国产精品永久久久久| 蜜桃视频一区二区| 亚洲三级成人| 欧美一区中文字幕| 巨熟乳波霸若妻中文观看免费 | 国产精品自拍露脸视频| 成人免费网站久久久| 亚洲a级在线观看| 精品视频在线观看你懂的一区| 久久国产高清视频| 日本成人不卡视频| 亚洲黄色高清| 欧美专区日韩专区| AV不卡在线永久免费观看| 国产亚洲精久久久久久无码AV| av色爱 天堂网| 国产男女免费完整版视频| 91免费观看视频| 精品国产99久久| 亚洲三级电影在线播放| 亚洲成人在线免费观看| 五月婷婷中文字幕| 国产精品专区第1页| 亚洲va视频| 亚洲三级视频在线观看| 精品伊人久久大香线蕉网站| 成人日韩视频| 黄色网站不卡无码| 国内a级毛片| 国产成人啪视频一区二区三区 | 日本精品视频| 青青草一区二区免费精品| 四虎国产精品永久在线网址| 精品视频在线一区| a天堂视频| 国产毛片基地| 国产av无码日韩av无码网站| 亚洲bt欧美bt精品| 国内精品久久人妻无码大片高| 成人在线不卡视频| 欧美精品一区在线看| 亚洲人成网站在线播放2019| 中文一区二区视频| 婷婷99视频精品全部在线观看 | 亚洲A∨无码精品午夜在线观看| 亚洲日韩精品无码专区| 国产va在线观看免费| 九九热视频精品在线| 怡红院美国分院一区二区| 999精品在线视频| 特级毛片免费视频| 国产丝袜精品| 欧美成人影院亚洲综合图| 欧美亚洲第一页| 99ri精品视频在线观看播放| 亚洲国产成熟视频在线多多| 久久综合丝袜日本网| 国产成人精品第一区二区| 亚洲女同一区二区| 国产在线第二页| 超碰色了色| 国产白浆一区二区三区视频在线| 亚洲精品少妇熟女| 草逼视频国产| 亚洲品质国产精品无码| 国产欧美性爱网| 欧洲一区二区三区无码| 无码在线激情片| 伊人福利视频| 久久久久亚洲AV成人人电影软件| 国产菊爆视频在线观看| 一本久道久久综合多人| 国产丰满成熟女性性满足视频| 国产亚洲精久久久久久无码AV | 无码电影在线观看| 亚洲av无码人妻|