新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FLASH介質嵌入式存儲方案的設計與實現(xiàn)

基于FLASH介質嵌入式存儲方案的設計與實現(xiàn)

作者: 時間:2014-11-14 來源:網(wǎng)絡 收藏

  系統(tǒng)實現(xiàn)

本文引用地址:http://m.butianyuan.cn/article/265391.htm

  結構定義

  系統(tǒng)的存儲結構如圖1所示,在的Block0位置存放整個系統(tǒng)最重要的數(shù)據(jù)——系統(tǒng)記錄SR(System Record)。選擇Block0的原因是一般出廠時,都能保證Block0是完好的,因此可以避免壞塊問題帶來的不便。SR其實就是一個定義好的數(shù)據(jù)結構,它包括媒質信息和文件系統(tǒng)信息兩部分。媒質信息包括存儲器的類型、容量、塊類型的大小和數(shù)量(Block Info)、FLASH操作命令(CommandInfo)等。文件系統(tǒng)信息包括版本信息、各邏輯分區(qū)的起始地址(物理地址)和結束地址。FLASH設備可以被分成一個或多個邏輯分區(qū),每個邏輯分區(qū)采用的操作方式可以互不相同,如圖1中Device0分區(qū)采用的是線性文件系統(tǒng),Device1分區(qū)采用的是鏈式文件系統(tǒng)。如果采用的是線性文件系統(tǒng),在分區(qū)信息后面加入文件索引表INDEX起始地址、大小等信息;如果采用的是鏈式文件系統(tǒng),則加入文件系統(tǒng)頁大小、文件分配表FAT和文件登記表FRT所在的位置等信息。

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

  對于線性文件系統(tǒng)分區(qū),所有文件順序存儲,讀取數(shù)據(jù)時,直接通過INDEX索引得到某個文件的邏輯起始地址,然后從這個地址開始順序搜索,獲取某個偏移位置下的n個連續(xù)Byte。鏈式文件系統(tǒng)是將地址空間分成若干個等分,即Sector,它是操作的最小單位;一個大文件可以分布在不連續(xù)的多個Sector中,然后通過FAT表將它們連接起來;在FLASH介質上實現(xiàn)鏈式文件系統(tǒng),Sector大小的選擇是一個關鍵,由于FLASH的寫操作,擦操作是以Page,Block為單位的,設小了使大塊結構的FLASH寫操作復雜,設多了又浪費空間,因此最好的選擇是將Sector大小設為擦操作的最小單位16K。

  整個邏輯分區(qū)中,INDEX,F(xiàn)AT,F(xiàn)RT表中的內容非常重要,

  一旦因為異常產(chǎn)生錯誤,可能會影響到所有文件;所以,這三個文件都做了備份處理,備份存放于不同的Block中。同時,在對他們處理時,改寫表中的更新狀態(tài)。0xff表示開始更新,0x00表示更新結束。在文件系統(tǒng)初始化時,讀取它們的更新狀態(tài),如果表中的更新狀態(tài)為0xff,說明該表存在操作異常,可用備份表更正。

  層次接口

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

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

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

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

  文件系統(tǒng)層的任務是實現(xiàn)它和操作系統(tǒng)層的函數(shù)接口。在實現(xiàn)方式上,線性文件系統(tǒng)和鏈式文件系統(tǒng)有較大區(qū)別。比如文件讀取mfread,線性文件系統(tǒng)直接讀取所要的字節(jié),而鏈式文件系統(tǒng)是每次先把對應的整個頁讀到文件緩沖區(qū),然

  

 

  后再把所需數(shù)據(jù)拷貝到讀到指定內存。文件刪除mfdelete,線性文件系統(tǒng)需要重新整理,不然就會因為大量的數(shù)據(jù)空洞(由于空間太小,無法放入新文件的小塊區(qū)域)使得系統(tǒng)很快沒有可用空間。鏈式文件系統(tǒng)只需修改文件系統(tǒng)的FAT和FRT,而不用做其他任何處理,當下次寫入操作用到該塊時,自動完成擦除。

  (3)驅動層

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

  結論

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

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

  (2)使用雙模式文件結構設計,使不同類型的數(shù)據(jù)處理效率同時達到最優(yōu);

  (3)使用地址映射表,屏蔽了壞塊帶來的隱患,增強了系統(tǒng)的健壯性;

  (4)對重要數(shù)據(jù)采用備份保護,保證不會因為斷電等異常導致系統(tǒng)的崩潰,增強了系統(tǒng)穩(wěn)定性;

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

  (6)進行分級差錯校驗,提高了系統(tǒng)的執(zhí)行效率;

  因此,本文所設計的FLASH存儲系統(tǒng),非常適合于嵌入式系統(tǒng)的應用。

存儲器相關文章:存儲器原理



上一頁 1 2 下一頁

關鍵詞: FLASH NAND

評論


相關推薦

技術專區(qū)

關閉