《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業(yè)界動態(tài) > 適宜于嵌入式多媒體應用的Flash文件系統(tǒng)

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

2008-12-09
作者:董 明 劉 加 劉潤生

  摘? 要: 嵌入式多媒體應用" title="多媒體應用">多媒體應用中大量數(shù)據(jù)存儲" title="數(shù)據(jù)存儲">數(shù)據(jù)存儲在Flash上,本文以文件系統(tǒng)" title="文件系統(tǒng)">文件系統(tǒng)的方案解決數(shù)據(jù)存儲的管理問題。對嵌入式多媒體應用中Flash文件系統(tǒng)的應用特點與關鍵設計進行了分析,設計實現(xiàn)了一個功能完整的文件代號管理、文件指針存取以及對應用透明的自動壞損管理的文件系統(tǒng)。針對嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)應用的需要,改進了本Flash文件系統(tǒng)的應用可靠性,降低了其系統(tǒng)資源開銷。針對多媒體應用的數(shù)據(jù)特點,提出了存儲內容自適應的壞損管理策略。仿真與實用的效果表明,本Flash文件系統(tǒng)適宜于嵌入式多媒體應用。?

  關鍵詞: 嵌入式系統(tǒng)? 多媒體? Flash存儲器? 文件系統(tǒng)?

?

  隨著電子技術的不斷發(fā)展,嵌入式系統(tǒng)越來越多地在控制類、消費類、通訊類等電子產(chǎn)品中廣泛應用,并且隨著數(shù)字信號處理與人機交互界面等相關技術的不斷成熟,嵌入式多媒體應用數(shù)量也逐漸上升。多媒體業(yè)務的數(shù)據(jù)量大,數(shù)據(jù)內容復雜,在多媒體應用中數(shù)據(jù)的存儲與管理是不容回避的問題。Flash存儲器因制造成本低廉、存儲容量大、數(shù)據(jù)非易失、無機械故障,在目前的嵌入式系統(tǒng)中被廣泛用作外存儲器件。然而Flash存儲器卻是一種數(shù)據(jù)正確性非理想的器件,應用中可能會出現(xiàn)壞損數(shù)據(jù)單元,這又給應用Flash存儲器的嵌入式系統(tǒng)進行數(shù)據(jù)存儲管理增添了新的難度[1]。?

  在嵌入式系統(tǒng)中應用Flash存儲器最好的辦法是在其上構造一個文件系統(tǒng),對Flash存儲器中的數(shù)據(jù)內容進行基于文件代號的存儲管理,同時對于Flash存儲器本身的壞損單元自動進行應用透明的壞損管理。目前在通用計算機上已經(jīng)有很多成熟的文件系統(tǒng),如DOS下的FAT文件系統(tǒng)、Windows NT下的NTFS文件系統(tǒng)及UNIX文件系統(tǒng)等[2]。但是這些文件系統(tǒng)并不適合直接用到嵌入式系統(tǒng)中進行多媒體數(shù)據(jù)內容的存儲:第一,嵌入式系統(tǒng)的應用條件遠比計算機惡劣,電源電壓的不穩(wěn)定以及突發(fā)性斷電將對Flash的存儲造成災難性的影響,通用文件系統(tǒng)對于可靠性的設計考慮不足;第二,通用文件系統(tǒng)是針對系統(tǒng)資源非常豐富的計算機平臺并基于速度較慢的磁盤驅動器,它們常常大量使用緩存技術,如注重文件系統(tǒng)的速度特性,要耗費比較多的系統(tǒng)資源。這與嵌入式系統(tǒng)中系統(tǒng)資源十分有限,Flash存儲器又相對于磁盤驅動器較快的應用情況不同;第三,嵌入式系統(tǒng)中存儲于Flash上的內容很多是多媒體數(shù)據(jù)資料,這些數(shù)據(jù)內容往往允許一定程度的誤碼損傷,未必需要如通用文件系統(tǒng)那樣嚴格保證存儲的正確性。通過靈活的校驗機制與壞損管理,達到更優(yōu)化的存儲速度與更高效的存儲空間利用,這對成本敏感的嵌入式系統(tǒng)來說尤其具有幫助。?

  基于上述考慮,設計了一個適合嵌入式多媒體應用的Flash文件系統(tǒng)。它不僅支持文件代號管理、文件指針存取以及對應用透明的自動壞損管理這些通用文件系統(tǒng)所具有的功能,并且在文件系統(tǒng)的可靠性以及文件系統(tǒng)的額外資源消耗方面進行了改善;此外還引入了基于存儲內容自適應的壞損管理策略,從而使該Flash文件系統(tǒng)更加適合嵌入式多媒體應用。?

1 Flash存儲器的操作特點?

  Flash存儲器在讀取方面與普通的SRAM存儲器類似,一般可以實現(xiàn)完全隨機的讀取。Flash存儲器最大的不同在于寫操作方面。Flash存儲器的寫操作需要經(jīng)過“擦除—寫入”兩個操作過程。當希望對Flash存儲器的某一個單元進行寫入時,首先必須對這個存儲單元所在的區(qū)塊(Block)執(zhí)行擦除操作,擦除操作成功完成后,整個區(qū)塊的數(shù)據(jù)內容都被清空(一般被設置成0xFF);然后對目的單元所在的頁面(Page)執(zhí)行寫入操作,需要一次寫入整個頁面的全部數(shù)據(jù)內容(也有一些Flash存儲器支持部分頁的寫入,這樣可以分多次寫完一個頁面,但是一旦寫過的存儲單元數(shù)據(jù)就不能再被更改),操作成功后要進行數(shù)據(jù)正確性的校驗。?

  一個區(qū)塊(Block)包含一個或多個頁面(Page),一個頁面包含多個數(shù)據(jù)存儲單元(字節(jié)或字)。?

  為了增強所設計Flash文件系統(tǒng)在不同F(xiàn)lash存儲器上的移植能力,選取了3個最基本的操作作為本Flash文件系統(tǒng)與Flash存儲器設備的應用接口:區(qū)塊擦除(Block_Erase)、頁面寫入(Page_Write)、頁面讀出(Page_Read)。這樣雖然可能會忽略某些Flash存儲器產(chǎn)品的獨有特性,但卻增加了所設計的Flash文件系統(tǒng)對不同F(xiàn)lash存儲器產(chǎn)品的適應能力。另外,Flash存儲器寫入的時間瓶頸并不在于數(shù)據(jù)傳遞,而是Flash存儲器內部的擦除和寫操作等待;Flash存儲器讀出的速度和微處理器處理數(shù)據(jù)的速度都很快,因此雖然將讀和寫的基本單位擴大到了頁面,但額外增加的操作時間是很短的。?

2 Flash文件系統(tǒng)的基本結構?

  本Flash文件系統(tǒng)在基本結構上與MS-DOS的FAT文件系統(tǒng)類似[3]。MS-DOS是一個應用了幾十年的商業(yè)化軟件產(chǎn)品,其FAT文件系統(tǒng)技術成熟、結構簡單、系統(tǒng)資源開銷小,易于在嵌入式系統(tǒng)的硬件平臺上實現(xiàn)。本Flash文件系統(tǒng)的基本結構如圖1所示,整個文件系統(tǒng)包括如下幾個部分:?

?

?

  (1)系統(tǒng)記錄(SR, System Record) 存放媒質信息和最重要的文件系統(tǒng)信息。媒質信息諸如Flash存儲器的類型、容量,劃分成多少個區(qū)塊,每區(qū)塊包含多少個頁面等。文件系統(tǒng)信息包括版本信息、保留區(qū)塊的數(shù)目和位置、文件分配表和文件登記表所在的位置和大小、數(shù)據(jù)區(qū)域的位置和大小等。?

  (2)文件分配表(FAT, File Allocation Table) 存放著Flash存儲器上所有區(qū)塊的占用與空閑情況以及每個文件的存儲鏈接結構。MS-DOS FAT文件系統(tǒng)中有12位、16位、32位三種不同的FAT格式??紤]到在微處理器上實現(xiàn)的方便性并權衡Flash文件系統(tǒng)應用的規(guī)模,選擇將文件分配表固定為16位的格式。?

  (3)文件登記表(FRT, File Register Table) 存放著Flash文件系統(tǒng)中每一個文件的文件代號、文件長度、文件屬性以及該文件的存儲鏈在文件分配表中的入口??紤]到嵌入式系統(tǒng)的應用范圍,本Flash文件系統(tǒng)不支持子目錄結構。?

  (4)數(shù)據(jù)區(qū)域(Data Area)用于存放文件的數(shù)據(jù)內容。本Flash文件系統(tǒng)中,數(shù)據(jù)分配的最小單位是Flash存儲器的一個基本擦除單位,即一個物理區(qū)塊(Block)。?

  本Flash文件系統(tǒng)提供:文件系統(tǒng)的格式化(Format)、文件的創(chuàng)建(Create)、刪除(Delete)、打開(Open)、關閉(Close)、讀(Read)、寫(Write)、文件指針的移動(Seek)、位置讀取(Tell)等基本的功能。程序主體代碼以ANSI C語言寫成,使用一個非常小的Flash存儲器設備驅動接口,擴展及移植的能力都比較好。?

3 提高Flash文件系統(tǒng)的可靠性?

  在MS-DOS的FAT文件系統(tǒng)中,僅僅對數(shù)據(jù)區(qū)域提供壞損管理,而對于它的主引導記錄、文件分配表和根目錄這三個極重要的文件系統(tǒng)數(shù)據(jù)結構" title="數(shù)據(jù)結構">數(shù)據(jù)結構卻未做任何保護(雖然MS-DOS的FAT文件系統(tǒng)中存在著兩張FAT表,但是DOS只是簡單地復寫第二張FAT表而從不使用它)。一旦這三個區(qū)域的內容出現(xiàn)一點失效,將必然導致文件數(shù)據(jù)的大量損失。另外,如果這些數(shù)據(jù)結構的存儲區(qū)域發(fā)生物理性損壞,更會導致整張磁盤的報廢。這在由Flash存儲器占據(jù)很大成本比重的嵌入式應用中,是非常不希望的。?

  歸結起來,嵌入式系統(tǒng)中的Flash存儲器主要面臨兩大類不穩(wěn)定因素:一是Flash存儲器本身可能出現(xiàn)物理性的損壞;二是嵌入式系統(tǒng)面對較多的突發(fā)掉電與重啟動,造成Flash存儲器寫操作的異常終止。?

  針對Flash存儲器的物理損壞問題,除對文件數(shù)據(jù)區(qū)域提供壞損管理外,還將系統(tǒng)記錄、文件分配表和文件登記表這三個文件系統(tǒng)重要數(shù)據(jù)結構采用浮動位置的方法存儲。即不僅對文件數(shù)據(jù)存儲進行動態(tài)的分配管理,對于Flash文件系統(tǒng)中的這三個重要數(shù)據(jù)結構也不固定其存儲位置。這樣可以避免因它們的存儲區(qū)域發(fā)生物理損壞造成整個文件系統(tǒng)失效。具體做法是:對于系統(tǒng)記錄定義一個系統(tǒng)記錄保留區(qū),將系統(tǒng)記錄存在這個區(qū)域內,確切的位置在文件系統(tǒng)初始化的時候通過標識幻數(shù)(Magic Number)的方法掃描找到;而文件分配表和文件登記表則存放在文件數(shù)據(jù)區(qū)域內,通過系統(tǒng)記錄中的索引項找到。?

  針對Flash存儲器的寫操作異常終止問題,將系統(tǒng)記錄、文件分配表和文件登記表這三個對Flash文件系統(tǒng)最重要的數(shù)據(jù)結構均進行雙份的存儲以改善其安全性。在文件系統(tǒng)的操作中,程序對每一個表結構的兩個備份進行順次修改,以此確保Flash存儲器上總是存有一整套完好的系統(tǒng)記錄表、文件分配表和文件登記表。在系統(tǒng)被啟動運行時,文件系統(tǒng)會首先進行自檢,通過這三個表結構中的標識幻數(shù),以及最開頭和最末尾的更新序列號可以確定每一張表備份的合法性和時效性,判斷出前次系統(tǒng)關閉中存在著的操作異常終止并及時更正。通過這樣的設計,即使文件系統(tǒng)在使用中出現(xiàn)了寫操作異常終止的情況,錯誤將只涉及當時被操作的文件數(shù)據(jù),不會擴散給Flash文件系統(tǒng)中的其它文件,更不會因此損壞三個文件系統(tǒng)表結構,造成整個文件系統(tǒng)的徹底癱瘓。?

  通過以上兩個方面的改進,本Flash文件系統(tǒng)的可靠性相比于MS-DOS? FAT文件系統(tǒng)有了很大的提高。從實驗1和實驗2的仿真結果可以看到,即使在Flash極不可靠和寫操作異常終止頻發(fā)的最惡劣工作條件下,本Flash文件系統(tǒng)也能夠保持可靠工作,從而使之能夠適合于嵌入式系統(tǒng)的應用。?

?

?

?

4 降低Flash文件系統(tǒng)的資源消耗?

  嵌入式系統(tǒng)相對于通用計算機系統(tǒng)來講,往往有苛刻得多的成本要求,需要嵌入式系統(tǒng)盡可能低的系統(tǒng)資源配置。尤其對于Flash文件系統(tǒng)這種用于增強系統(tǒng)功能的服務性質模塊,就更需要降低對系統(tǒng)資源的消耗,才能夠擴大其使用的范圍。?

  就Flash文件系統(tǒng)的資源消耗來講,主要包括程序代碼開銷、處理器占用時間、運行時內存開銷以及額外的Flash存儲器消耗。其中,運行時內存開銷最限制Flash文件系統(tǒng)的應用,同時設計結構的改善與運行時內存開銷直接相關。所以針對資源消耗的結構優(yōu)化主要著重于降低運行時的內存開銷。?

  Flash存儲器的擦除單位是區(qū)塊(Block),這是本Flash文件系統(tǒng)中數(shù)據(jù)存儲分配的最小單元。如果不采用任何措施的話,運行時內存開銷中將至少包括備份一個完整區(qū)塊數(shù)據(jù)的緩沖區(qū)。但一個Flash存儲器的區(qū)塊可能很大(Sumsung[TM] KM29U128是16KB),這在很多嵌入式系統(tǒng)中都是過大的資源開銷(最通用的8位微處理器MCS-51系列,總線尋址的能力只有64KB),必須進行改進。?

  為此,采用交換緩沖區(qū)(Swap Buffer)技術來解決這個困難。當需要準備某一個區(qū)塊的數(shù)據(jù)時,并不直接向該區(qū)塊寫入,而是首先擦除用于做交換緩沖區(qū)的區(qū)塊,然后逐步向交換緩沖區(qū)填入目的數(shù)據(jù)內容。因為此時,任何有用數(shù)據(jù)內容都未被破壞,所以運行內存中的緩沖就可以做得比較小。當交換緩沖區(qū)填寫完成后,再擦除目的區(qū)塊,拷貝交換緩沖區(qū)內容到目的區(qū)塊。?

  采用交換緩沖區(qū)后,對內存中的緩沖區(qū)大小沒有特別要求,考慮到Flash存儲器的操作特性,選取Flash存儲器的頁面(Page)容量作為內存緩沖區(qū)大小。在結構上作了上述改進后,雖然大大降低了Flash文件系統(tǒng)的運行時內存消耗,但代價是將一個數(shù)據(jù)區(qū)塊的寫入時間延長了一倍。不過一般的Flash存儲器中都有一特別制作的區(qū)塊,該區(qū)塊保證不會損壞,正好適用做交換緩沖區(qū)。這樣就可以省去中間交換緩沖過程的數(shù)據(jù)完整性檢驗,加快寫操作的速度。?

  表1給出了在與MCS-51兼容的微處理器上本Flash文件系統(tǒng)實例,對Sumsung KM29U128 Flash存儲器(16KB/Block×1024Block)[4]進行管理應用中的系統(tǒng)資源開銷。對于一般的成本要求來講,是可以接受的。?

?

?

5 基于存儲內容的自適應壞損管理策略?

  嵌入式系統(tǒng)中應用Flash存儲器,與多媒體相關的應用占據(jù)相當?shù)谋壤?如數(shù)碼相機、語音監(jiān)錄、MP3播放器等。存儲在Flash上的內容多數(shù)是多媒體數(shù)據(jù)流,這種應用相對于普通文件系統(tǒng)的單純數(shù)據(jù)業(yè)務具有其自己的數(shù)據(jù)特點。據(jù)此在本Flash文件系統(tǒng)上提出了基于存儲內容的自適應壞損管理策略。?

  Flash存儲器上存儲的內容包括數(shù)據(jù)文件和多媒體數(shù)據(jù)流。數(shù)據(jù)文件對于數(shù)據(jù)完整性要求很嚴格,不允許存儲中出現(xiàn)任何錯誤。但多媒體數(shù)據(jù)流則不同,很多種多媒體數(shù)據(jù)流允許一定情況下傳輸差錯,一些甚至? 允許傳輸差錯很嚴重,如CVSD編碼的語音。而Flash存儲器的區(qū)塊發(fā)生物理損壞時,經(jīng)常是只有幾個bit出現(xiàn)錯誤,其它部分卻是完好的。綜合考慮這兩個方面的因素,就可以對不同內容的數(shù)據(jù)流賦予不同的數(shù)據(jù)完整性要求。這樣一方面充分發(fā)揮了Flash存儲器的存儲能力,另一方面也可以降低弱數(shù)據(jù)完整性要求的數(shù)據(jù)檢驗強度,提高數(shù)據(jù)寫入速度。?

  在本Flash文件系統(tǒng)中,把不同數(shù)據(jù)內容對于數(shù)據(jù)完整性的要求分成三個級別:0、1和2級。其中,0級的數(shù)據(jù)完整性最高,不允許在存儲中出現(xiàn)任何差錯,用于數(shù)據(jù)型的存儲。2級的數(shù)據(jù)完整性要求最低,允許出現(xiàn)較多的差錯,用于抗差錯性強的多媒體碼流。相應地,對于Flash存儲器的每個可用區(qū)塊,也按照其物理損壞的程度分成對應的三個級別:0級的區(qū)塊所有的存儲單元都完好;2級的區(qū)塊則存在著比較多的損壞位;損壞程度超過2級允許的區(qū)塊成為徹底損壞塊,不能再使用。存儲的原則為:對于特定的存儲內容用損壞級別不超過其數(shù)據(jù)完整性要求級別的Flash區(qū)塊存儲。?

  同時,在存儲不同數(shù)據(jù)完整性要求的內容時,采用不同強度的差錯校驗。存儲0級內容時,每一次寫入都進行差錯校驗,存儲1級和2級內容時,以1/N的概率進行差錯校驗。差錯校驗的結果更新該物理存儲區(qū)塊的損壞級別,但是損壞級別只升不降。最初的損壞級別在格式化并建立文件系統(tǒng)時設定。?

  通過實驗3的結果可以看到,采用存儲內容自適應的壞損管理策略后,對于可容錯的多媒體碼流,存儲效率和存儲速度都可以得到明顯提高。并且,設定合適的校驗概率所發(fā)生的漏檢率是很低的。?

?

?

  針對嵌入式多媒體應用中大量數(shù)據(jù)在Flash上存儲的管理問題,文件系統(tǒng)是一種比較全面優(yōu)秀的解決方案。本文對嵌入式多媒體應用中Flash文件系統(tǒng)的應用特點與關鍵設計進行了分析,設計實現(xiàn)了一個適宜于嵌入式多媒體應用的Flash文件系統(tǒng)。其主要特點包括:?

  (1)完全支持文件代號管理、文件指針存取以及對應用透明的自動壞損管理這些通用文件系統(tǒng)所具有的功能。?

  (2)針對嵌入式系統(tǒng)的應用環(huán)境,設計改進了本Flash文件系統(tǒng)的可靠性,使其可以工作在很惡劣的條件下。?

  (3)針對嵌入式系統(tǒng)的成本與系統(tǒng)資源限制,改進降低了本Flash文件系統(tǒng)的系統(tǒng)資源開銷,擴大了其應用范圍。?

  (4)針對多媒體應用的數(shù)據(jù)特點,提出了基于存儲內容自適應的壞損管理策略,提高了在多媒體應用中的存儲效率與存儲速度。?

  最終設計的Flash文件系統(tǒng)其結構如圖2。

?

?

  通過仿真分析,本Flash文件系統(tǒng)相對于類似MS-DOS? FAT的基礎系統(tǒng),在可靠性、系統(tǒng)資源開銷等方面的性能提高是可觀的,對于多媒體數(shù)據(jù)流在Flash存儲器資源有效利用和改善存儲性能等方面,也有明顯的改善。因此,本Flash文件系統(tǒng)很適合于嵌入式多媒體應用。?

參考文獻?

1 陳智育. 嵌入式系統(tǒng)中的Flash文件系統(tǒng). 單片機與嵌入式系統(tǒng)應用, 2002;(2).?

2 Andrew S. Tanenbaum, Albert S. Woodhull著,王鵬,尤晉元譯.操作系統(tǒng):設計與實現(xiàn). 北京:電子工業(yè)出版社,ISBN? 7-5053-4924-4?

3 Microsoft Corp. Description of the FAT File System. 1999?

4 Sumsung Electronics. Sumsung Flash Memory Data Book. March 1998.
本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。