熟妇人妻中文字幕在线视频_无码人妻精品视频_久久躁夜夜躁狠狠躁_偷碰人妻无码视频

現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>嵌入式系統(tǒng)中的Flash存儲管理

嵌入式系統(tǒng)中的Flash存儲管理

時間:2023-02-20 22:51:25 電子通信論文 我要投稿
  • 相關推薦

嵌入式系統(tǒng)中的Flash存儲管理

  摘要:以TRI公司的基于NORFlash的Flash管理軟件FMM為例,詳細介紹嵌入式系統(tǒng)中如何根據(jù)Flash的物理特性來進行Flash存儲管理。
  關鍵詞:嵌入式系統(tǒng)FlashFMM
  
  引言
  
  在當前數(shù)字信息技術和網(wǎng)絡技術高速發(fā)展的后PC(Post-PC)時代,嵌入式系統(tǒng)已經(jīng)廣泛地滲透到科學研究、工程設計、軍事技術、各類產(chǎn)業(yè)和商業(yè)文件藝術、娛樂業(yè)以及人們的日常生活等方方面面中。隨著嵌入式系統(tǒng)越來越廣泛的應用,嵌入式系統(tǒng)中的數(shù)據(jù)存儲和數(shù)據(jù)管理已經(jīng)成為一個重要的課題擺在設計人員面前。
  
  Flash存儲器作為一種安全、快速的存儲體,具有體積小、容量大、成本低、掉電數(shù)據(jù)不丟失等一系列優(yōu)點。目前已經(jīng)逐步取代其它半導體存儲元件,成為嵌入式系統(tǒng)中主要數(shù)據(jù)和程序載體。
  
  作為嵌入式系統(tǒng)的一部分,F(xiàn)lash存儲管理的主要功能是針對Flash自身的物理特性,利用一些特定的算法來提高Flash的使用效率,加快操作速度和管理Flash各單元的使用頻率。
  
  1Flash存儲器簡介
  
  嵌入式系統(tǒng)中使用的Flash主要分為NOR和NAND兩種類型。這里我們以NOR型Flash為例進行介紹。NOR型Flash主要特點如下:
  
  *體積小、容量大,目前可以達到十幾MB。
  
  *掉電數(shù)據(jù)不丟失,數(shù)據(jù)可以保存10~100年。
  
  *有獨立的地址和數(shù)據(jù)總線,可以快速地通過總線讀取數(shù)據(jù)。因此它具有和靜態(tài)RAM相同的讀取速度,既可以作為數(shù)據(jù)存儲器也可以作為程序存儲器使用。
  
  *寫入操作必須通過指令序列來完成,以字節(jié)(Byte)或字(Word)為單位,每寫入一個Byte或Word需十幾μs。
  
  *擦除也通過指令序列完成,以塊(Block)為單位,通常塊的大小為64K。每擦除一個塊需要十幾ms。
  
  *由于Flash有一定的使用壽命,一般為10~100萬次。所以隨著使用次數(shù)的增加,會有一些單元逐漸變得不穩(wěn)定或失效,因此必須能夠?qū)ζ錉顟B(tài)加以識別。
  
  2Flash存儲管理的作用
  
  由Flash特點可以看出,操作Flash需要注意以下幾點:
  
  *必須以幾K~幾十K的塊為單位進行數(shù)據(jù)的操作;
  
  *擦除操作耗時較多,應減少擦除操作;
  
  *盡量避免頻繁地對同一地址操作,以免造成局部單元提前損壞。
  
  另外,大部分嵌入式操作系統(tǒng)所掛接的文件系統(tǒng)是建立在以扇區(qū)(Sector)為單位的磁盤操作基礎上(通常為512字節(jié)/扇區(qū))。因此也需要一段特殊的Flash存儲管理程序來解決以扇區(qū)為單位的文件系統(tǒng)接口和以塊為單位的Flash物理特性之間的矛盾;同時,完成各塊之間的擦寫次數(shù)均衡和壞塊管理等工作。Flash存儲管理程序在系統(tǒng)中的位置如圖1所示。
  
  本文以TRI公司的FMM為例,說明Flash存儲管理模塊和如何完成這些功能的。
  
  3FMM介紹
  
  FMM(FlashMediaManager)是由TRI公司開發(fā)的專門針對NOR型Flash的管理軟件,其主要特點如下:
  
  *動態(tài)映射OS的邏輯扇區(qū)到物理地址;
  
  *所有物理塊進行壽命均衡,同時可記錄Flash的擦寫次數(shù);
  
  *掉電數(shù)據(jù)恢復,可以保證系統(tǒng)的穩(wěn)定性;
  
  創(chuàng)建壞塊表進行壞塊管理,保證系統(tǒng)的可靠性。
  
  為了更好地介紹FMM的操作流程,這里先作幾點說明。
  
 。1)存儲空間管理
  
  為了實現(xiàn)以扇區(qū)為基礎的數(shù)據(jù)管理,F(xiàn)MM首先對Flash中的塊內(nèi)存儲空間邏輯上進行了重新定義,每個物理塊內(nèi)部又重新劃分成了若干物理扇區(qū)。每個物理塊內(nèi)部又重新劃分成了若干物理扇區(qū)。每個物理扇區(qū)由512+4字節(jié)=516(0x204)字節(jié)組成。512字節(jié)為有效數(shù)據(jù)空間,另外4字節(jié)(32位)用于存放邏輯扇區(qū)另和當前狀態(tài)。定義如下:
  
  扇區(qū)狀態(tài)邏輯扇區(qū)號數(shù)字空間4位28位125字節(jié)
  扇區(qū)狀態(tài)有4種,用于進行掉電數(shù)據(jù)恢復:
  
  FREE—空扇區(qū)(0xF);
  
  DVALID—扇區(qū)數(shù)據(jù)無效(0xE);
  
  INUSE—扇區(qū)數(shù)據(jù)有效(0xC);
  
  DIRTY—扇區(qū)數(shù)據(jù)無用,可擦除(0x8)。
  
  以64K大小的塊為例,可以計算出每個塊中可以劃分出127個扇區(qū);另外,還會有4字節(jié)的空間,專門用于標志下一個被整理塊。標記為0x80,否則為0xffffffff。
  
  因此可以得出物理扇區(qū)和絕對地址之間的對應關系:
  
  絕對地址=Flash基地址+物理扇區(qū)號×0x204+所在塊號×4
  
  (2)扇區(qū)分類
  
  FMM中將扇區(qū)分為ID扇區(qū)和數(shù)據(jù)扇區(qū)兩類:
  
 、貴MM會占用N個扇區(qū)作為標識ID(Identification)扇區(qū),占用邏輯扇區(qū)號0~N。這一部分扇區(qū)是文件系統(tǒng)不能使用的,是FMM用于管理所占用的存儲空間。因此文件系統(tǒng)所管理的邏輯扇區(qū)號必須從N+1開始。
  
  ID扇區(qū)主要包含如下數(shù)據(jù):FMM版本號、寫入(擦除)次數(shù)EraseCount、用戶標識和壞扇區(qū)表。
  
  N的取值與壞扇區(qū)表的大小有關,每個FMM管理的物理扇區(qū)占用表中的1位。在每次存儲數(shù)據(jù)時,可以通過查詢表中的相應位來確定該扇區(qū)的有效性。
  
 、跀(shù)據(jù)扇區(qū),用于存儲數(shù)據(jù)。
  
 。3)空間映射表(MappingTable)
  
  由于Flash不能像普通磁盤那樣進行字節(jié)的修改,甚至不能以扇區(qū)為單位進行修改;而只能以塊為單位進行修改;但如果只是簡單將物理扇區(qū)和邏輯扇區(qū)一一對應,那么如果我們想對扇區(qū)修改就必須將整個塊的內(nèi)容都擦除,然后再將修改后的內(nèi)容回寫;勢必會造成時間和Flash壽命的損失。因此,建立一個物理扇區(qū)號和邏輯扇區(qū)號的空間映射表,使邏輯扇區(qū)與物理扇區(qū)號進行動態(tài)的匹配。這樣,在修改某個扇區(qū)的內(nèi)容時只要將數(shù)據(jù)寫入一個新的扇區(qū),然后將原扇區(qū)標記為DIRTY就可以了。這樣,還可以消除頻繁修改某個扇區(qū)帶來的壽命不均的影響。
  
  映射表是建立在內(nèi)存中的項數(shù)為M(扇區(qū)總數(shù))的數(shù)組,每項占用4字節(jié),用于存放對應的物理扇區(qū)號。當某項為空(NULL)時,認為該扇區(qū)空閑,未使用,如圖2所示。
  
  4FMM模塊操作
  
  按功能,可以將FMM分解為4個基本模塊:格式化模塊、初始化模塊、存取模塊和空間整理模塊。以下簡單掃描各模塊的操作流程。
  
  (1)格式化模塊
  
  對數(shù)據(jù)空間進行初級格式化,建立ID扇區(qū)。該模塊在第一次使用數(shù)據(jù)盤之前調(diào)用,相當于低級格式化。過程如下:
  
  ①調(diào)用FMM初始化模塊,根據(jù)結果判斷該存儲體是否含有FMM控制信息。如果有,將擦除次數(shù)計數(shù)器EraseCount加1,否則置為1。
  
  ②調(diào)用Flash驅(qū)動程序,將FMM所管理的空間全部擦除。
  
 、蹖lock0的標志置為0x80,即下一個被整理的Block,也是第一個非空Block。
  
 、苁占嘘P信息,創(chuàng)建ID扇區(qū)寫入Flash。
  
  ⑤在內(nèi)存中創(chuàng)建空間映射表。
  
  空間映射表的創(chuàng)建過程如下:
  
  ①清空內(nèi)存中為映射表和ID扇區(qū)申請的空間。
  
  ②將Flash中的ID扇區(qū)內(nèi)容讀入內(nèi)存中。
  
  ③掃描整個物理空間,依次讀入每個物理扇區(qū)的狀態(tài)和邏輯扇區(qū)號,將狀態(tài)為INUSE的邏輯扇區(qū)號裝入空間映射表的對應位置,并記錄INUSE和DIRTY扇區(qū)的數(shù)目。
  
 、苄迯蛼呙柚邪l(fā)現(xiàn)的DAVLID扇區(qū)數(shù)據(jù)。
  
  修復DAVLID扇區(qū)的過程如下:
  
 、偃〕鯠VALID扇區(qū)的邏輯扇區(qū)號。
  
 、谌绻壿嬌葏^(qū)號為NULL,跳到步驟⑤。
  
 、鄄樵兛臻g映射表,如果對應的物理扇區(qū)號為NULL,跳到步驟⑤。
  
 、軐⒉榈降奈锢砩葏^(qū)置為DIRTY。
  
  ⑤將DAVLID扇區(qū)置為INUSE,將其扇區(qū)號填入空間映射表。
  
 。2)初始化模塊
  
  該模塊在文件系統(tǒng)初始化之前調(diào)用,用于初始化FMM系統(tǒng)。
  
 、購膬(nèi)存池中為ID扇區(qū)申請內(nèi)存。
  
 、趶膬(nèi)存池中為空間映射表申請內(nèi)存。
  
 、墼趦(nèi)存中創(chuàng)建空間映射表。
  
 。3)存取模塊
  
  該模塊是FMM與文件系統(tǒng)的接口,可以分為讀和寫兩部分。
  
  *讀數(shù)據(jù)過程:
  
  ①根據(jù)所要讀取的邏輯扇區(qū)號,查表找出其對應的物理扇區(qū)號;
  
 、诟鶕(jù)物理扇區(qū)號計算出物理地址;
  
 、圩x出該扇區(qū)數(shù)據(jù);
  
 、苋缧枳x多個扇區(qū),重復步驟①~③。
  
  *寫數(shù)據(jù)流程;
  
  Flash存儲器中“寫入”是將對應單元由“1”變“0”,“擦除”是由“0”變?yōu)椤?”。因此,無須擦除就可以將狀態(tài)FREE(0xF)依次“寫”為DVALID(0xE)、INUSE(0xC)、DIRTY(0x8),如圖3所示。
  
 。4)空間整理模塊
  
  由于在寫入操作中產(chǎn)生dirty扇區(qū),因此當自由空間不足時,需要對空間進行整理,釋放dirty扇區(qū)占用的空間用于存儲數(shù)據(jù),流程如圖4所示。
  
  根據(jù)圖4可以看出,整理的過程實際是將有用扇區(qū)依次搬到空扇區(qū)中,再擦除舊塊的過程,因此需要一個空塊用作數(shù)據(jù)交換。
  
  5FMM性能分析
  
  *讀出速度:讀取速度基本與Flash的讀速度相同。
  
  *寫入速度:寫入操作速度與Flash的寫入速度基本相同。
  
  *整理速度:空間整理上由于算法的限制會耗費很長的時間,最好挑選除速度較快的Flash來進行配合使用;或者可以采用其它的算法來進行空間整理,但會使壽命均衡有所減弱,必須根據(jù)具體的應用來選取適合的方案組合才能達到最好的效果。
  
  *文件系統(tǒng)可用空間:由于FMM占用了一部分空間,因此實際文件系統(tǒng)可用空間小于Flash的實際物理空間。
  
  文件系統(tǒng)可用空間=Flash總空間-ID扇區(qū)空間-1個用于整理的保留塊空間。
  
  
  
  

【嵌入式系統(tǒng)中的Flash存儲管理】相關文章:

嵌入式系統(tǒng)中的線性Flash文件系統(tǒng)設計08-06

Flash存儲器在TMS320C3x系統(tǒng)中的應用08-06

基于虛擬扇區(qū)的Flash存儲管理技術08-06

多級存儲技術在媒體資產(chǎn)管理系統(tǒng)中的應用08-06

uClinux平臺下的Flash存儲技術08-06

嵌入式系統(tǒng)中的CACHE問題08-06

嵌入式Linux系統(tǒng)中的GUI系統(tǒng)的研究與移植08-06

大容量NAND Flash TC58DVG02A1FT00在嵌入式系統(tǒng)中的應用04-12

適宜于嵌入式多媒體應用的Flash文件系統(tǒng)08-06