<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è) > 汽車(chē)電子 > 設計應用 > 車(chē)載MP3中Flash文件系統的設計與應用

車(chē)載MP3中Flash文件系統的設計與應用

作者: 時(shí)間:2010-01-08 來(lái)源:網(wǎng)絡(luò ) 收藏

2.1 存儲管理系統

存儲器的操作是以塊為單位的,而FAT則是建立在以扇區(sector)為單位的磁盤(pán)操作基礎上(通常為512字節/扇區)。因此,本文設計了一個(gè)特殊的存儲管理系統,來(lái)解決以塊為單位的Flash物理特性和以扇區為單位的接口之間的矛盾,以使得Flash的物理地址和FAT操作的邏輯地址之間能夠對應。同時(shí),由于Flash的其它特點(diǎn),Flash存儲管理系統還實(shí)現了各塊之間的擦寫(xiě)次數均衡和壞塊管理等工作。

(1)物理地址到邏輯地址的映射

為了在Flash物理地址和FAT操作的邏輯地址之間建立一個(gè)好的映射關(guān)系,對Flash的存儲空間在邏輯上進(jìn)行了重新定義。結合Flash特點(diǎn),將每個(gè)存儲單元塊內部分成若干物理扇區,每個(gè)物理扇區由512字節+16字節=528字節組成。其中Main Area的512字節為有效數據空間,而Spare Area的16字節用于存放其它信息。

由上述定義便可以確定Flash物理扇區和絕對地址之間的對應關(guān)系:

絕對地址=Flash基地址+物理扇區號×528

在建立了物理地址和邏輯地址之間的映射關(guān)系之后,但可以很好地將系統對音頻文件的操作轉換成系統直接Flash的編程或者擦除操作。例如,在該系統中要進(jìn)行ReadFile()操作,便可以根據其對應關(guān)系,通過(guò)執行Flash存儲管理系統中的sectorread()操作來(lái)實(shí)現。

(2)可靠性設計

由于該系統采用汽車(chē)供電,因此當汽車(chē)處于不太平衡的環(huán)境中,可能會(huì )由于顛簸千萬(wàn)播放系統的異常斷電,所以提高播放系統的可靠性非常重要。本文通過(guò)將Spare Area的16字節定義為邏輯扇區號、扇區當前狀態(tài)、壞塊信息等來(lái)提高播放系統的可靠性。其中Spare Area的具體定義如下:

邏輯扇區號 扇區當前狀態(tài) 壞塊信息 保留字節

第1~3字節 第4~5字節 第6字節 第7~16字節

由以上定義可以看到,Spare Area的第4~5字節用于存儲扇區當前狀態(tài)。這樣在Flash寫(xiě)操作過(guò)程中,如果突然斷電,便可以根據此狀態(tài)進(jìn)行掉電數據恢復。該系統中設定扇區當前狀態(tài)有3種:扇區為空(0xfff)、扇區數據無(wú)用(0x0000)、扇區數據有效(0x00ff)。這樣定義以后,系統便可以在Flash寫(xiě)操作異常終止時(shí)能夠對當時(shí)的狀態(tài)進(jìn)行及時(shí)的保存,以便下次系統開(kāi)啟后能夠判斷出上次系統中存在的問(wèn)題并作出相應的處理。

(3)壞塊管理

由于Flash內部會(huì )有壞塊,因此Flash存儲管理系統需要對Flash進(jìn)行壞塊管理。本文對壞塊的管理分以下兩種情況:

①初始壞塊處理。Flash存儲器在使用前可能會(huì )有壞塊,而且這些壞塊是隨機分布的。所以,Flash文件管理系統在系統執行讀寫(xiě)操作之前先建立一個(gè)壞塊表,然后對Flash存儲器進(jìn)行初始化掃描以發(fā)現壞塊,并將壞塊標記為不可用,加入到壞塊表中。

②操作過(guò)程中壞塊處理。在擦除或者編程過(guò)程中發(fā)生錯誤時(shí),Flash文件管理系統將該塊中其它頁(yè)的數據重新拷貝到一個(gè)新的空塊中,然后再將該塊標記為壞塊,加入到壞塊表中。在這個(gè)處理過(guò)程中,由于對Flash的擦除或者編程操作都會(huì )使得Flash存儲單元塊的內容改變,所以Flash文件管理系統一旦發(fā)現Flash存儲器的存儲單元塊成為壞塊后便不再對該塊進(jìn)行擦除或編程操作,以免將壞塊標志位數據清除掉,而是將該塊標記為壞塊,并將其加入壞塊表中。

Flash文件管理系統在進(jìn)行上述壞塊管理后,壞塊單元對用戶(hù)應用是完全透明的。這大大方便了用戶(hù)的使用,也達到了車(chē)載播放系統的目的。

(4)均衡擦寫(xiě)次數

由于Flash有一定的使用壽命,一般可擦除的次數為10~100萬(wàn)次,所以隨著(zhù)使用次數的增加,會(huì )有一些單元逐漸變得不穩定或失敗。因此,要盡量避免頻繁地對同一塊地址操作,以免造成局部單元提前損壞;同時(shí),由于擦除操作耗時(shí)較多,也應減少擦除操作,應該盡量達到擦寫(xiě)次數均衡。為此,本文設計了Flash更新算法和磨損程度檢測算法。



關(guān)鍵詞: Flash MP3 車(chē)載 文件系統

評論


相關(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>