新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FLASH的嵌入式存儲系統(tǒng)設(shè)計(jì)

基于FLASH的嵌入式存儲系統(tǒng)設(shè)計(jì)

作者: 時間:2010-09-28 來源:網(wǎng)絡(luò) 收藏


文件登記表FRT位于FAT后的頁中,存放著邏輯分區(qū)中文件的信息,如文件總數(shù)、每個文件的文件代號、位置、長度以及校驗(yàn)?zāi)J?。其中,校?yàn)?zāi)J接脕順?biāo)識文件讀寫時采用差錯校驗(yàn)的級別。不同類型的文件采用不同級別的校驗(yàn)方式。0級不進(jìn)行校驗(yàn),1級ECC校驗(yàn),2級逐個字節(jié)比較。

對于線性文件分區(qū),所有文件順序,讀取數(shù)據(jù)時,直接通過INDEX索引得到某個文件的邏輯起始地址,然后從這個地址開始順序搜索,獲取某個偏移位置下的n個連續(xù)Byte。鏈?zhǔn)轿募?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/系統(tǒng)">系統(tǒng)是將地址空間分成若干個等分,即Sector,它是操作的最小單位;一個大文件可以分布在不連續(xù)的多個 Sector中,然后通過FAT表將它們連接起來;在介質(zhì)上實(shí)現(xiàn)鏈?zhǔn)轿募?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/系統(tǒng)">系統(tǒng),Sector大小的選擇是一個關(guān)鍵,由于的寫操作,擦操作是以Page,Block為單位的,設(shè)小了使大塊結(jié)構(gòu)的寫操作復(fù)雜,設(shè)多了又浪費(fèi)空間,因此最好的選擇是將Sector大小設(shè)為擦操作的最小單位16K。

整個邏輯分區(qū)中,INDEX,FAT,FRT表中的內(nèi)容非常重要,一旦因?yàn)楫惓.a(chǎn)生錯誤,可能會影響到所有文件;所以,這三個文件都做了備份處理,備份存放于不同的Block中。同時,在對他們處理時,改寫表中的更新狀態(tài)。0xff表示開始更新,0x00表示更新結(jié)束。在文件系統(tǒng)初始化時,讀取它們的更新狀態(tài),如果表中的更新狀態(tài)為0xff,說明該表存在操作異常,可用備份表更正。

4.2 層次接口

整個系統(tǒng)分成三層,如圖2所示。



(1)操作系統(tǒng)層

在整個系統(tǒng)中,操作系統(tǒng)扮演的是使用者的角色。當(dāng)需要數(shù)據(jù)時,它通過調(diào)用文件系統(tǒng)層提供的接口函數(shù)獲取數(shù)據(jù),它不關(guān)心數(shù)據(jù)的來源和正確性。

(2)文件系統(tǒng)層

文件系統(tǒng)層的任務(wù)是實(shí)現(xiàn)它和操作系統(tǒng)層的函數(shù)接口。在實(shí)現(xiàn)方式上,線性文件系統(tǒng)和鏈?zhǔn)轿募到y(tǒng)有較大區(qū)別。比如文件讀取mfread,線性文件系統(tǒng)直接讀取所要的字節(jié),而鏈?zhǔn)轿募到y(tǒng)是每次先把對應(yīng)的整個頁讀到文件緩沖區(qū),然后再把所需數(shù)據(jù)拷貝到讀到指定內(nèi)存。文件刪除mfdelete,線性文件系統(tǒng)需要重新整理,不然就會因?yàn)榇罅康臄?shù)據(jù)空洞(由于空間太小,無法放入新文件的小塊區(qū)域)使得系統(tǒng)很快沒有可用空間。鏈?zhǔn)轿募到y(tǒng)只需修改文件系統(tǒng)的 FAT和FRT,而不用做其他任何處理,當(dāng)下次寫入操作用到該塊時,自動完成擦除。

(3)驅(qū)動層

驅(qū)動層的任務(wù)是完成與FLASH之間的通訊協(xié)議,實(shí)現(xiàn)它和文件系統(tǒng)層的函數(shù)接口。接口函數(shù)包括頁面讀mPageRead,頁面寫mPageWrite, 塊擦除mBlockErase, 隨機(jī)讀取mRnRead, 隨機(jī)寫入mRnWrite。mPageRead,mPageWrite,mBlockErase對整頁或塊進(jìn)行操作,在鏈?zhǔn)轿募到y(tǒng)中調(diào)用; mRnRead, mRnWrite對字節(jié)單位進(jìn)行操作,在線性文件系統(tǒng)中調(diào)用。其中mRnWrite比較麻煩,以寫一個Byte為例,它的操作分三步,首先將目標(biāo)塊中的所有數(shù)據(jù)讀到內(nèi)存Buffer中,然后將要寫入的數(shù)據(jù)更新到Buffer,擦除目標(biāo)塊,最后將已更新的Buffer寫回到目標(biāo)塊,這里的Buffer大小是一個Block。由于系統(tǒng)的內(nèi)存資源比較緊張,系統(tǒng)采用了塊交換技術(shù)以降低成本,方法是在FLASH中搜索一個空閑塊,用它充當(dāng)Buffer的角色。

5 結(jié)論

通過上面的,所實(shí)現(xiàn)的存儲系統(tǒng)具有以下的特點(diǎn):

(1)使用通用模式,增強(qiáng)了系統(tǒng)對FLASH設(shè)備的兼容性;

(2)使用雙模式文件結(jié)構(gòu),使不同類型的數(shù)據(jù)處理效率同時達(dá)到最優(yōu);(3)使用地址映射表,屏蔽了壞塊帶來的隱患,增強(qiáng)了系統(tǒng)的健壯性;

(4)對重要數(shù)據(jù)采用備份保護(hù),保證不會因?yàn)閿嚯姷犬惓?dǎo)致系統(tǒng)的崩潰,增強(qiáng)了系統(tǒng)穩(wěn)定性;

(5)采用塊交換技術(shù),節(jié)約系統(tǒng)成本;

(6)進(jìn)行分級差錯校驗(yàn),提高了系統(tǒng)的執(zhí)行效率。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉