Flash損耗均衡的嵌入式文件系統(tǒng)設(shè)計
上述文件系統(tǒng)底層驅(qū)動函數(shù)中,凈簇的申請函數(shù)(unsigned long app_clus(void))直接影響到對存儲器存儲區(qū)域的使用分配。該函數(shù)的流程體現(xiàn)了對存儲器存儲區(qū)域的使用次數(shù)的平均分配。
函數(shù)功能描述:申請一個凈簇。
入口參數(shù):無。
出口參數(shù):0x100000,申請到凈簇的頁地址;NO_CLEAN_SECTOR,沒有干凈的存儲空間。
該函數(shù)的流程如圖4所示,程序從存儲區(qū)的第一頁開始到最后一頁申請一個凈簇,若成功,返回簇地址;若失敗,則進行臟簇的清理,然后從清理過的存儲區(qū)中再申請一個凈簇,成功則返回簇地址,失敗則進行錯誤處理,程序結(jié)束。本文引用地址:http://www.ex-cimer.com/article/150567.htm
3.3 Flash設(shè)備驅(qū)動
對文件系統(tǒng)的操作歸根結(jié)底是對存儲器的讀寫操作。文件操作時設(shè)備驅(qū)動程序為文件系統(tǒng)提供對存儲器的控制,一般包括讀、寫和復(fù)位操作。本文基于Flash芯片AT45DB081存儲器,為文件系統(tǒng)提供表3所列的驅(qū)動函數(shù)。
完成以上的軟硬件設(shè)計,基于PC機編寫一個客戶端測試軟件,通過自定的協(xié)議對文件進行操作,下載一個文件到文件系統(tǒng),之后讀取比較,從而驗證文件系統(tǒng)的正確性。
結(jié)語
本文的方案主要針對存儲器的耗損均衡控制進行了重點設(shè)計,延長了Flash存儲器的使用壽命。對于文件的校錯、糾錯等其他功能并未詳細設(shè)計,采用單級目錄,不支持多級目錄。整個方案已在由單片機ATmega128及Flash AT45DB081組成的系統(tǒng)上具體實現(xiàn)及驗證,取得很好的效果。本文件系統(tǒng)在基于Flash存儲器的日志型數(shù)據(jù)采集記錄應(yīng)用中具有較高的應(yīng)用價值。
評論