車(chē)載MP3中Flash文件系統(tǒng)的設(shè)計(jì)與應(yīng)用
Flash更新算法是將Flash中要更新的數(shù)據(jù)直接寫(xiě)入一個(gè)空塊中,降低由于Flash先擦除后寫(xiě)入的特性帶來(lái)的對(duì)塊的頻繁擦除;同時(shí),也提高了Flash的使用效率,加快了操作速度。磨損程度檢測(cè)算法是在對(duì)Flash進(jìn)行寫(xiě)入前必須先對(duì)Flash進(jìn)行壞塊掃描,以確保不會(huì)將數(shù)據(jù)寫(xiě)入壞塊從而此起數(shù)據(jù)的丟失。這樣設(shè)計(jì)也是為了提高車(chē)載MP3播放系統(tǒng)的可靠性。
2.2 FAT設(shè)計(jì)
在Flash文件管理系統(tǒng)的基礎(chǔ)上,還建立了FAT文件系統(tǒng)來(lái)對(duì)文件操作進(jìn)行管理。將FAT文件系統(tǒng)具體分為以下四部分:
(1)FAT的引導(dǎo)區(qū)
該引導(dǎo)區(qū)存放代碼所需的信息及最重要的文件系統(tǒng)信息。這些信息包括了Flash存儲(chǔ)器的類(lèi)型、容量以及劃分成多少個(gè)簇;每個(gè)簇包含多少扇區(qū)、FAT表數(shù)目、保留扇區(qū)數(shù)、根目錄的首簇號(hào)及根目錄入口數(shù)、版本信息等等。引導(dǎo)扇區(qū)是在格式化Flash時(shí)生成的。
(2)FAT的文件分配表
文件分配表存放文件所占用的存儲(chǔ)空間族鏈以及Flash存儲(chǔ)器的占用和空閑空間的情況,非常重要。為了防止文件分配表?yè)p壞而引起文件的丟失,該系統(tǒng)中保存了兩個(gè)相同的文件分配表FAT1和FAT2,以改善其安全性。在文件系統(tǒng)的操作中,程序?qū)AT表結(jié)構(gòu)的兩個(gè)備份進(jìn)行順次修改,以此確保Flash存儲(chǔ)器上總是存有一整套完好的文件分配表。
系統(tǒng)對(duì)FAT表的訪(fǎng)問(wèn)原理如下:訪(fǎng)問(wèn)文件時(shí)先從要目錄中找到該文件的目錄項(xiàng),從中讀出首簇號(hào)。然后,目錄中找到該文件的目錄項(xiàng),從中讀出首簇號(hào)。然后在FAT中找到從該首簇號(hào)開(kāi)始的簇鏈,簇鏈上的簇號(hào)即為文件在邏輯扇區(qū)中占用的扇區(qū)號(hào)鏈,這樣便可以進(jìn)行數(shù)據(jù)讀寫(xiě)了。
(3)FAT的根目錄區(qū)
FAT的根目錄區(qū)是固定大小的緊跟在FAT表后的區(qū)域。本文將從FAT區(qū)之后緊跟的32個(gè)扇區(qū)作為根目錄區(qū),可以保存512個(gè)目錄項(xiàng)。每個(gè)目錄項(xiàng)記錄了該文件的文件名、文件屬性、文件大小、文件創(chuàng)建的日期和時(shí)間以及文件在數(shù)據(jù)區(qū)中所占的首簇號(hào),即該文件在FAT表中的入口等數(shù)據(jù)。
(4)FAT的數(shù)據(jù)區(qū)
數(shù)據(jù)區(qū)存在文件的數(shù)據(jù)內(nèi)容。文件系統(tǒng)對(duì)數(shù)據(jù)區(qū)的存儲(chǔ)空間是按簇進(jìn)行劃分和管理的。該系統(tǒng)中,定義1Cluster=32sector,一個(gè)文件總是占用若干個(gè)整簇,文件所使用的最后一簇剩余空間就不再使用。
由圖1可以看出,該FAT文件系統(tǒng)提供文件的格式化,文件的打開(kāi)、刪除、關(guān)閉,文件的讀寫(xiě)、查找等基本的功能。通過(guò)Flash文件系統(tǒng)對(duì)文件的操作進(jìn)行管理后,該車(chē)載播放系統(tǒng)便可以實(shí)現(xiàn)選曲、添加刪除歌曲、下載歌曲、音量調(diào)節(jié)等一系列功能了。
3 應(yīng)用
通過(guò)這樣的設(shè)計(jì),Flash的存儲(chǔ)性能有了較大的改善,而且系統(tǒng)的可靠性也很好。即使在Flash寫(xiě)操作異常終止頻發(fā)的最?lèi)毫庸ぷ鳁l件下,也不會(huì)丟失數(shù)據(jù),更不會(huì)損壞非常重要的文件分配表結(jié)構(gòu)而造成系統(tǒng)的崩潰;因此,本文所設(shè)計(jì)的Flash文件系統(tǒng)能很好地適合于車(chē)載MP3播放系統(tǒng)的應(yīng)用。
評(píng)論