新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式文件系統(tǒng)在工程機(jī)械監(jiān)控器上的移植

嵌入式文件系統(tǒng)在工程機(jī)械監(jiān)控器上的移植

作者: 時(shí)間:2016-10-10 來(lái)源:網(wǎng)絡(luò) 收藏

2.6 文件管理的程序
這部分是關(guān)于文件系統(tǒng)的文件基本操作程序,主要包括:初始化文件指針系統(tǒng),查找已打開(kāi)的指定文件的文件句柄,刪除文件,查找以讀寫(xiě)方式打開(kāi)的指定文件的文件句柄,只讀方式打開(kāi)文件,讀寫(xiě)方式打開(kāi)文件,移動(dòng)文件讀/寫(xiě)位置,以指定方式打開(kāi)文件,關(guān)閉指定文件,從文件讀一個(gè)字節(jié),讀取文件,寫(xiě)一個(gè)字節(jié)到文件,寫(xiě)文件,關(guān)閉所有打開(kāi)的文件,判斷文件是否讀/寫(xiě)到文件尾,從文件指針當(dāng)前位置讀取一頁(yè),從文件指針當(dāng)前位置寫(xiě)入一頁(yè)。在這部分函數(shù)里,著重修改的是兩個(gè)函數(shù):讀取文件FileRead()和寫(xiě)文件FileWrite()。第一個(gè)函數(shù)的原型是這樣的:
a.JPG
不難看出,這個(gè)函數(shù)讀取文件的時(shí)候是一個(gè)一個(gè)字符讀的,而且每讀一個(gè)字符都要從盤(pán)里讀而不是從緩存里讀,這樣不僅速度慢,而且對(duì)磁盤(pán)的操作太頻繁,容易減少磁盤(pán)的壽命。為了解決這個(gè)問(wèn)題,對(duì)上述函數(shù)進(jìn)行了修改。首先創(chuàng)建了一個(gè)新函數(shù):從文件指針當(dāng)前位置讀取一頁(yè)FileGetPage(),這個(gè)函數(shù)一次性最大能夠讀取一個(gè)Page大小的文件。然后,在FileRead函數(shù)里判斷,如果要讀取的文件大小不足一個(gè)Page,就用memcpy()這個(gè)庫(kù)函數(shù)將文件里要讀取的內(nèi)容直接拷貝到緩沖區(qū);如果要讀取的文件超過(guò)一個(gè)Page,就計(jì)算出有N個(gè)Page,然后循環(huán)N次調(diào)用FileGetPage(),最后將不足一個(gè)Page的部分用memcpy()這個(gè)庫(kù)函數(shù)去拷貝。
根據(jù)相同的思路,又創(chuàng)建了一個(gè)新函數(shù):從文件指針當(dāng)前位置寫(xiě)入一頁(yè)FileWritePage(),并對(duì)ZLG—FS原來(lái)的FileWrite()函數(shù)進(jìn)行了修改。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),這樣修改以后,大大提高了文件系統(tǒng)的讀寫(xiě)速度。原來(lái)讀取一個(gè)幾兆的文件需要半個(gè)多小時(shí),現(xiàn)在不到一分鐘就可以完成了。
2.7 目錄管理的程序
Dir.c文件是關(guān)于FAT文件系統(tǒng)的目錄基本操作程序,主要包括:用戶(hù)文件/目錄名轉(zhuǎn)換為系統(tǒng)名,獲取FDT所在目錄的開(kāi)始簇號(hào)及系統(tǒng)內(nèi)名稱(chēng),獲取指定目錄的驅(qū)動(dòng)器(驅(qū)動(dòng)器號(hào)為0、1、2等),改變當(dāng)前邏輯盤(pán),獲取指定目錄開(kāi)始簇號(hào),建立目錄,刪除目錄,改變當(dāng)前目錄。這里面有幾個(gè)函數(shù)作過(guò)微小的修改,在此不細(xì)述。
2.8 文件系統(tǒng)在嵌入式系統(tǒng)上面的
在智能中,使用的嵌入式系統(tǒng)是μC/OS—II。正好ZLG—FS提供了其文件系統(tǒng)在μC/OS—II上面的移植程序,就是文件OSFile. c,該文件里面的函數(shù)和File.c里面的函數(shù)功能類(lèi)似,只不過(guò)都打上了μC/OS—II系統(tǒng)的烙印,這些函數(shù)都通過(guò)調(diào)用Together(a,b,c)來(lái)完成對(duì)文件的一些操作。Together(a,b,c)是為簡(jiǎn)化接口函數(shù)編寫(xiě)的一個(gè)宏。最后一個(gè)函數(shù)是OSFileTask(),該函數(shù)是在系統(tǒng)主程序里調(diào)用的,作用是創(chuàng)建一個(gè)文件系統(tǒng)服務(wù)任務(wù),對(duì)文件的所有操作都可以在該任務(wù)里以命令的形式被執(zhí)行。這一模塊的程序基本不需要修改。

結(jié)語(yǔ)
在整個(gè)文件系統(tǒng)的移植過(guò)程中,首先要將文件系統(tǒng)里的程序全部吃透、消化,然后再根據(jù)自己的需要進(jìn)行修改,邊修改邊做實(shí)驗(yàn),通過(guò)這個(gè)過(guò)程還可以學(xué)習(xí)他人好的編程方法。移植完后,通過(guò)實(shí)驗(yàn)驗(yàn)證了的移植效果良好、系統(tǒng)穩(wěn)定。

本文引用地址:http://2s4d.com/article/201610/306067.htm

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉