新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 車載MP3中Flash文件系統的設計與應用

        車載MP3中Flash文件系統的設計與應用

        作者: 時間:2010-01-08 來源:網絡 收藏

        2.1 存儲管理系統

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

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

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

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

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

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

        (2)可靠性設計

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

        邏輯扇區號 扇區當前狀態 壞塊信息 保留字節

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

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

        (3)壞塊管理

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

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

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

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

        (4)均衡擦寫次數

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昭通市| 蒙城县| 广西| 读书| 邯郸市| 九寨沟县| 德格县| 微山县| 类乌齐县| 甘孜县| 昌吉市| 治县。| 龙胜| 邳州市| 建平县| 邹平县| 大渡口区| 杭锦旗| 浑源县| 来安县| 金山区| 静乐县| 墨竹工卡县| 正蓝旗| 彩票| 日土县| 宝丰县| 达拉特旗| 清涧县| 福鼎市| 乐都县| 衢州市| 滦南县| 镇坪县| 正镶白旗| 遂宁市| 荃湾区| 开原市| 来安县| 井冈山市| 泽库县|