- 相關推薦
嵌入式系統中的線性Flash文件系統設計
作者: WuYJ@263.net.cn
摘要:設計一種能夠在典型嵌入式環境下應用的線性文件系統,為嵌入式系統Flash空間的管理提供一種非常有效的手段。它包裝和通用文件系統類似的API接口,設計的實現獨立于實時操作系統(RTOS)和具體的Flash典型,可方便移植到不同的嵌入式應用中。
在嵌入式系統中,為了便于對閃存(Flash)空間進行管理,會采用文件的形式來訪問Flash。目前,可以購買到的Flash文件系統一般都是兼容DOS的文件系統(Flash File System,FFS),這對需要一個具有復雜的目錄層次,并且DDS文件兼容的系統來說是必要的;但是對大多數的嵌入式應用來說,這種文件系統太過奢侈。筆者在參與嵌入式系統項目的時候,設計了一種線性文件系統,它適用于大多數的嵌入式應用對Flash文件系統的需求。
線性文件系統設計基于三個目標:一是提供給應用程序通過文件名而不是物理地址訪問系統Flash的能力;二是文件系統的設計獨立于實時操作系統(RTOS),這樣可以很容易移植到不同的嵌入式應用中;三是設計統一的底層接口,適應不同的Flash類型。本文設計的線性文件系統為典型的嵌入式系統提供了所需的類文件系統能力。需要注意的是,本文件系統不支持復雜的Flash扇區擦寫次數均衡算法,沒有目錄層次,并且和其它的文件系統不兼容。
1 線性文件系統
線性文件系統的設計思路是這樣的:文件分為文件頭和文件數據區兩個部分,每個文件按照順序存放在Flash中,以單向鏈表來鏈接文件。文件的起始部分是文件頭,包含文件的屬性、指向下一個文件頭的指針、文件頭和文件數據區的32位循環冗余校驗和(CRC32)等。文件頭用一個32位的字來表示文件屬性,每位表示一種屬性,如數據文件或者是可執行文件,是否已刪除的文件等,具體可以根據應用的需要來定義文件的屬性;文件頭和文件數據區維護獨立的CRC32校驗,使文件系統能更精確檢測文件的完整性。文件的起始地址沒有特殊需求,分配給文件系統的Flash大小限制了文件的大小。另外,線性文件系統作為嵌入式系統的一個功能模塊,它為應用程序提供與標準文件系統類似的API接口,如:read()、write()、open()、close()、stat()和seek()等。對于同時在多片Flash的系統而言,每片Flash相當于一個目標,文件都可存儲在任何一片中(當然受物理空間限制),但不能跨片存儲。
圖1 Flash文件系統空間
在第一個文件創建之前,必須進行初始化,將所有分配給文件系統的Flash空間擦除。當創建第一個文件時,起
[1] [2] [3]
【嵌入式系統中的線性Flash文件系統設計】相關文章:
文件系統設計實驗心得10-08
星載嵌入式文件系統技術研究及實現04-30
彈載嵌入式系統設計技術05-01
嵌入式船舶電站監測系統的設計04-28
嵌入式GPS羅經的人機系統設計05-02
嵌入式系統與通信技術在汽車安全中的應用05-02
PPSM嵌入式RTOS中的窗口系統開發12-01
嵌入式系統報告10-18