新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 如何基于FLASH介質嵌入式存儲方案的設計與實現?

        如何基于FLASH介質嵌入式存儲方案的設計與實現?

        作者: 時間:2018-08-07 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201808/385633.htm

        整個邏輯分區中,INDEX,FAT,FRT表中的內容非常重要。

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

        層次接口

        整個存儲系統分成三層,如圖2所示。

        (1)操作系統層

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

        (2)文件系統層

        文件系統層的任務是實現它和操作系統層的函數接口。在實現方式上,線性文件系統和鏈式文件系統有較大區別。比如文件讀取mfread,線性文件系統直接讀取所要的字節,而鏈式文件系統是每次先把對應的整個頁讀到文件緩沖區,然后再把所需數據拷貝到讀到指定內存。文件刪除mfdelete,線性文件系統需要重新整理,不然就會因為大量的數據空洞(由于空間太小,無法放入新文件的小塊區域)使得系統很快沒有可用空間。鏈式文件系統只需修改文件系統的FAT和 FRT,而不用做其他任何處理,當下次寫入操作用到該塊時,自動完成擦除。


        (3)驅動層

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

        結論

        通過上面的設計,所實現的存儲系統具有以下的特點:

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

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

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

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

        (5)采用塊交換技術,節約系統成本;

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

        因此,本文所設計的FLASH存儲系統,非常適合于系統的應用。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 哈巴河县| 麻栗坡县| 临泽县| 北海市| 湄潭县| 宜君县| 阿拉善左旗| 绩溪县| 沾化县| 龙江县| 桑植县| 镇原县| 衢州市| 青浦区| 湖北省| 兖州市| 中山市| 东乡县| 黑山县| 保定市| 玛多县| 德令哈市| 丹巴县| 盖州市| 宕昌县| 莒南县| 肃北| 天等县| 齐齐哈尔市| 龙里县| 姜堰市| 巴南区| 开平市| 疏附县| 肥城市| 湄潭县| 泸西县| 舟曲县| 巧家县| 阿勒泰市| 中超|