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