<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 適宜于嵌入式多媒體應用的Flash文件系統

適宜于嵌入式多媒體應用的Flash文件系統

——
作者:清華大學(xué)電子工程系 董明 劉加 劉潤生 時(shí)間:2006-10-25 來(lái)源:中電網(wǎng) 收藏
隨著(zhù)電子技術(shù)的不斷發(fā)展,越來(lái)越多地在控制類(lèi)、消費類(lèi)、通訊類(lèi)等電子產(chǎn)品中廣泛應用,并且隨著(zhù)數字信號處理與人機交互界面等相關(guān)技術(shù)的不斷成熟,嵌入式多媒體應用數量也逐漸上升。多媒體業(yè)務(wù)的數據量大,數據內容復雜,在多媒體應用中數據的存儲與管理是不容回避的問(wèn)題。存儲器因制造成本低廉、存儲容量大、數據非易失、無(wú)機械故障,在目前的中被廣泛用作外存儲器件。然而Flash存儲器卻是一種數據正確性非理想的器件,應用中可能會(huì )出現壞損數據單元,這又給應用Flash存儲器的進(jìn)行數據存儲管理增添了新的難度[1]。

在嵌入式系統中應用Flash存儲器最好的辦法是在其上構造一個(gè)文件系統,對Flash存儲器中的數據內容進(jìn)行基于文件代號的存儲管理,同時(shí)對于Flash存儲器本身的壞損單元自動(dòng)進(jìn)行應用透明的壞損管理。目前在通用計算機上已經(jīng)有很多成熟的文件系統,如DOS下的FAT文件系統、Windows NT下的NTFS文件系統及UNIX文件系統等[2]。

但是這些文件系統并不適合直接用到嵌入式系統中進(jìn)行多媒體數據內容的存儲:第一,嵌入式系統的應用條件遠比計算機惡劣,電源電壓的不穩定以及突發(fā)性斷電將對Flash的存儲造成災難性的影響,通用文件系統對于可靠性的設計考慮不足;第二,通用文件系統是針對系統資源非常豐富的計算機平臺并基于速度較慢的磁盤(pán)驅動(dòng)器,它們常常大量使用緩存技術(shù),如注重文件系統的速度特性,要耗費比較多的系統資源。這與嵌入式系統中系統資源十分有限,Flash存儲器又相對于磁盤(pán)驅動(dòng)器較快的應用情況不同;第三,嵌入式系統中存儲于Flash上的內容很多是多媒體數據資料,這些數據內容往往允許一定程度的誤碼損傷,未必需要如通用文件系統那樣嚴格保證存儲的正確性。通過(guò)靈活的校驗機制與壞損管理,達到更優(yōu)化的存儲速度與更高效的存儲空間利用,這對成本敏感的嵌入式系統來(lái)說(shuō)尤其具有幫助。

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

1 Flash存儲器的操作特點(diǎn)

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

一個(gè)區塊(Block)包含一個(gè)或多個(gè)頁(yè)面(Page),一個(gè)頁(yè)面包含多個(gè)數據存儲單元(字節或字)。為了增強所設計Flash文件系統在不同Flash存儲器上的移植能力,選取了3個(gè)最基本的操作作為本Flash文件系統與Flash存儲器設備的應用接口:區塊擦除(Block_Erase)、頁(yè)面寫(xiě)入(Page_Write)、頁(yè)面讀出 ( Page _ Read )。這樣雖然可能會(huì )忽略某些Flash存儲器產(chǎn)品的獨有特性,但卻增加了所設計的Flash文件系統對不同Flash存儲器產(chǎn)品的適應能力。另外,Flash存儲器寫(xiě)入的時(shí)間瓶頸并不在于數據傳遞,而是Flash存儲器內部的擦除和寫(xiě)操作等待;Flash存儲器讀出的速度和微處理器處理數據的速度都很快,因此雖然將讀和寫(xiě)的基本單位擴大到了頁(yè)面,但額外增加的操作時(shí)間是很短的。 

2 Flash文件系統的基本結構

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

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

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

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

(4)數據區域(Data Area)用于存放文件的數據內容。本Flash文件系統中,數據分配的最小單位是Flash存儲器的一個(gè)基本擦除單位,即一個(gè)物理區塊(Block)。本Flash文件系統提供:文件系統的格式化(Format)、文件的創(chuàng )建(Create)、刪除(Delete)、打開(kāi)(Open)、關(guān)閉(Close)、讀(Read)、寫(xiě)(Write)、文件指針的移動(dòng)(Seek)、位置讀取(Tell)等基本的功能。程序主體代碼以ANSI C語(yǔ)言寫(xiě)成,使用一個(gè)非常小的Flash存儲器設備驅動(dòng)接口,擴展及移植的能力都比較好。

flash系統文件基本結構


3 提高Flash文件系統的可靠性

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

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

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

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

通過(guò)以上兩個(gè)方面的改進(jìn),本Flash文件系統的可靠性相比于MS-DOS FAT文件系統有了很大的提高。從實(shí)驗1和實(shí)驗2的仿真結果可以看到,即使在Flash極不可靠和寫(xiě)操作異常終止頻發(fā)的最?lèi)毫庸ぷ鳁l件下,本Flash文件系統也能夠保持可靠工作,從而使之能夠適合于嵌入式系統的應用。 


4 降低Flash文件系統的資源消耗

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

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

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

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

采用交換緩沖區后,對內存中的緩沖區大小沒(méi)有特別要求,考慮到Flash存儲器的操作特性,選取Flash存儲器的頁(yè)面(Page)容量作為內存緩沖區大小。在結構上作了上述改進(jìn)后,雖然大大降低了Flash文件系統的運行時(shí)內存消耗,但代價(jià)是將一個(gè)數據區塊的寫(xiě)入時(shí)間延長(cháng)了一倍。不過(guò)一般的Flash存儲器中都有一特別制作的區塊,該區塊保證不會(huì )損壞,正好適用做交換緩沖區。這樣就可以省去中間交換緩沖過(guò)程的數據完整性檢驗,加快寫(xiě)操作的速度。 表1給出了在與MCS-51兼容的微處理器上本Flash文件系統實(shí)例,對Sumsung KM29U128 Flash存儲器(16KB/Block



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>