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