亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        大容量存儲設備在嵌入式系統(tǒng)的應用研究

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

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

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

        中圖分類號: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 引言

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

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

        2 Flash存儲器特點

        2.1 FLASH共同特點

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

        (1)區(qū)塊結構

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

        (2)先擦后寫

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

        (3)操作指令

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

        (4)位反轉

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

        (5)壞塊

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

        2.2 NAND 閃存特點

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

        3 Flash文件系統(tǒng)的設計

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

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

        3.1 Flash文件系統(tǒng)的存儲結構

        本Flash文件系統(tǒng)將整個存儲空間分成兩個部分:文件分配表和數(shù)據區(qū)域。

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

        structFAT_item{

        char sector_state;/*扇區(qū)狀態(tài)*/

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

        long erase_time;/*該扇區(qū)已經進行擦除的次數(shù)*/

        char reserved;/*保留*/

        }

        其中扇區(qū)有5種狀態(tài)分別為:

        0xff——空閑扇區(qū);

        0xfe——扇區(qū)已被占用;

        0xfc——扇區(qū)的數(shù)據為過時數(shù)據;

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

        0xf0——壞扇區(qū);

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

        struct file_header{

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

        long size;/*文件大小*/

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

        char file_state;/*文件狀態(tài)*/

        }

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

        3.2 壞快管理

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

        3.3 垃圾回收

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

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

        3.4 均衡磨損(wear_leveling)

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

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

        4 結束語

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

        參考文獻:

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

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

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

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

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

        精精国产xxxx视频在线播放器| 免费无码成人av在线播| 大肉大捧一进一出好爽视频动漫 | 丰满精品人妻一区二区| 夜夜高潮夜夜爽夜夜爱爱一区 | 军人粗大的内捧猛烈进出视频| 亚洲gv白嫩小受在线观看| 国产爆乳无码一区二区在线 | 手机在线亚洲精品网站| 亚洲av综合av一区| 久久99久久99精品中文字幕 | 中文无码精品a∨在线观看不卡| 永久免费av无码网站yy| 日韩第四页| 国产强伦姧在线观看| 日本成年少妇人妻中文字幕| 亚洲精品国产av日韩专区| 国产精品午夜福利视频234区| 日日噜噜夜夜狠狠va视频| 国产精品久久久久国产精品| 国产美女高潮流白浆在线观看| 性感人妻av在线播放| 亚洲乱码中文字幕三四区| 公和我做好爽添厨房| 精品一区二区三区无码免费视频| 任你躁欧美一级在线精品免费| 日韩av免费在线不卡一区| 丝袜美腿制服诱惑一区二区| 国产 高潮 抽搐 正在播放| 国产高潮国产高潮久久久| 国产一级毛片卡| 强d乱码中文字幕熟女1000部 | 久久精品国产熟女亚洲| 亚洲国产精品成人综合色| 内射精品无码中文字幕| 婷婷第四色| 暴露的熟女好爽好爽好爽| 精品亚洲成av人在线观看| www插插插无码视频网站| 馬与人黃色毛片一部| 色偷偷女人的天堂亚洲网|