




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第第頁嵌入式文件系統(tǒng)znFAT介紹今天給大家介紹一款適用于(單片機(jī))的(嵌入式)文件系統(tǒng)——znFAT。這款文件系統(tǒng)由嵌入式大佬于振南開發(fā),并在gi(te)e開源共享的。
gitee倉庫地址為(復(fù)制到瀏覽器打開):
/dbembed/znfat一、介紹
znFAT并非一個(gè)標(biāo)新立異的東西,它絕大部分與現(xiàn)行的微軟FAT32文件系統(tǒng)高度兼容。這意味著,它可實(shí)現(xiàn)與Windows、(Linux)等主流(操作系統(tǒng))之間的文件無界互通。
znFAT因其獨(dú)特的嵌入式應(yīng)用背景與功能需求,在設(shè)計(jì)與實(shí)現(xiàn)上都引入了大量的創(chuàng)新思想與技術(shù),其中所流露出來的各種開發(fā)技巧,對(duì)于廣大工程師更是一筆巨大的精神與知識(shí)財(cái)富。代碼目錄文件:其中znFAT.c與znFAT.h是znFAT的主體。前者是對(duì)各種功能函數(shù)的具體實(shí)現(xiàn),后者對(duì)相關(guān)數(shù)據(jù)結(jié)構(gòu)、宏進(jìn)行定義。
mytype.h對(duì)數(shù)據(jù)類型進(jìn)行重定義;
deviceio.c通過一些底層函數(shù)接口與存儲(chǔ)設(shè)備扇區(qū)讀寫驅(qū)動(dòng)進(jìn)行對(duì)接;
congfig.h可以對(duì)znFAT進(jìn)行相關(guān)的配置。
相關(guān)的頭文件是znFAT在實(shí)現(xiàn)過程中要使用的一些代碼資源,比如漢字碼表、功能扇區(qū)模板數(shù)據(jù)等。
二、關(guān)鍵代碼解析
znFAT_Init函數(shù)(在znFAT.c文件中)功能:文件系統(tǒng)初始化函數(shù),將完成文件系統(tǒng)初始化參數(shù)集合的裝入,為以后的文件操作作好準(zhǔn)備。
1、定位DBR扇區(qū)(主要是找到BPB所在扇區(qū))
讀取物理0扇區(qū)通過判斷是否是MBR扇區(qū),若是MBR則從中提取BPB扇區(qū)號(hào),若不是MBR而是DBR則BPB扇區(qū)號(hào)為0;判斷是否是MBR的依據(jù)是前三個(gè)字節(jié)是否是:
DBR_MARK{0XEB,0X58,0X90}//DBR的標(biāo)志碼2、得到BPB所在扇區(qū)號(hào)后,通過讀取BPB扇區(qū)得到文件系統(tǒng)的信息
首先,判斷此文件系統(tǒng)的類型是否是FAT32文件系統(tǒng),若是FAT32文件系統(tǒng)則依據(jù)讀出BPB來填充全局結(jié)構(gòu)體。
UINT32BPB_Sector_No;
//DBR(BPB)所在扇區(qū)號(hào)UINT32BytesPe(rS)ector;//每個(gè)扇區(qū)的字節(jié)數(shù)UINT32FATsectors;
//FAT表所占扇區(qū)數(shù)UINT32SectorsPerClust;//每簇的扇區(qū)數(shù)UINT32Firs(tF)ATSector;//第一個(gè)FAT表所在扇區(qū)UINT32FirstDirSector;//第一個(gè)目錄所在扇區(qū)UINT32Total_SizeKB;
//磁盤的總?cè)萘浚瑔挝粸镵B然后查找FSINFO信息,若找到FSINFO扇區(qū)則依據(jù)讀出的內(nèi)容填充結(jié)構(gòu)體。UINT32FSINFO_Sec;
//FSINFO扇區(qū)所在的扇區(qū)UINT32Free_nCluster;
//空閑簇的個(gè)數(shù)UINT32Next_Free_Cluster;//下一空簇如果一個(gè)磁盤格式化后沒有卷標(biāo),則其存儲(chǔ)空間就沒有一點(diǎn)占用,此時(shí)FSINFO記錄的剩余空簇?cái)?shù)為XFFFFFFFF。
三、znFAT的移植
移植過程比較簡(jiǎn)單,主要有兩步:
數(shù)據(jù)類型重定義與(ROM)數(shù)據(jù)讀取函數(shù)的實(shí)現(xiàn);
存儲(chǔ)設(shè)備物理扇區(qū)讀/寫驅(qū)動(dòng)。
1、數(shù)據(jù)類型重定義與ROM數(shù)據(jù)讀取函數(shù)的實(shí)現(xiàn)
根據(jù)目標(biāo)平臺(tái)實(shí)際的數(shù)據(jù)類型對(duì)mytype.h中的類型進(jìn)行重新定義,包括無符號(hào)整型、有符號(hào)整型與ROM數(shù)據(jù)類型。存儲(chǔ)在(芯片)ROM中的數(shù)據(jù),比如漢字編碼表,就是ROM數(shù)據(jù)類型。以(STM32)單片機(jī)為例,類型重定義如下:
2、存儲(chǔ)設(shè)備物理扇區(qū)讀/寫驅(qū)動(dòng)
znFAT的整體結(jié)構(gòu)分為3層:物理層、實(shí)現(xiàn)層、應(yīng)用層。
物理層是整個(gè)znFAT的根基,znFAT通過它來操作存儲(chǔ)設(shè)備,為其正常運(yùn)轉(zhuǎn)提供扇區(qū)讀/寫服務(wù)。
移植工作主要在實(shí)現(xiàn)和調(diào)試物理層,只要物理層沒問題,那么后續(xù)工作就很簡(jiǎn)單了。znFAT在物理層只留出一個(gè)設(shè)備驅(qū)動(dòng)(接口),不關(guān)心實(shí)際是什么存儲(chǔ)設(shè)備,也不關(guān)心驅(qū)動(dòng)程序?qū)崿F(xiàn)的具體細(xì)節(jié),它只認(rèn)識(shí)扇區(qū)地址與標(biāo)準(zhǔn)的512字節(jié)的扇區(qū)數(shù)據(jù)。
四、常見問題
1、znFAT的穩(wěn)定性、正確性等指標(biāo)是如何保證的?
znFAT自發(fā)布之后基本沒有出現(xiàn)過問題。在實(shí)際工程項(xiàng)目中的應(yīng)用也有很多,經(jīng)歷了諸如大數(shù)據(jù)量、長(zhǎng)時(shí)間、頻率讀/寫等嚴(yán)峻的嘗試,最終表面它是沒有問題,且是穩(wěn)定的。
2、znFAT能否應(yīng)用于FlashROM或U盤,還是只能用于(SD)卡?
znFAT對(duì)物理存儲(chǔ)設(shè)備進(jìn)行了抽象,它根本不關(guān)心具體存儲(chǔ)設(shè)備是什么,只關(guān)心是否能夠通過連續(xù)的地址正確讀/寫它的扇區(qū)。
3、znFAT編譯之后,超出了的單片機(jī)的ROM和(RAM)容量怎么辦?
znFAT本身占用的RAM資源最小可達(dá)到900字節(jié),最多1300字節(jié)左右;ROM資源占用一般為20~60KB。影響他們的主要原因?yàn)椋簔nFAT的不同工作模式;目標(biāo)芯片(CPU)與編譯器的差異。
4、znFAT是否支持長(zhǎng)文件名?
znFAT對(duì)長(zhǎng)文件名的支持非常全面,使用者可以對(duì)長(zhǎng)文件名的最大長(zhǎng)度進(jìn)行配置,以面用于存儲(chǔ)長(zhǎng)文件名的緩沖區(qū)占用過多內(nèi)存。另外,該文件系統(tǒng)還設(shè)計(jì)了長(zhǎng)文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海各區(qū)初中言議論文考題選
- 4.3 平面鏡成像 說課稿 2025年初中人教版物理八年級(jí)上冊(cè)
- 賓館消防安全管理制度
- 合作協(xié)議的定價(jià)
- 任務(wù)未完成檢討書
- 委托書無效可以變更
- 寵物運(yùn)輸國內(nèi)服務(wù)協(xié)議
- 航運(yùn)貨物延誤答辯狀
- 二零二五年度北京市體育館體育活動(dòng)組織及推廣合同
- 模具產(chǎn)業(yè)園項(xiàng)目可行性研究報(bào)告
- (一模)東北三省三校2025年高三第一次聯(lián)合模擬考試 生物試卷(含答案)
- 金屬熔融崗位培訓(xùn)課件
- 污水處理廠工程設(shè)備安裝施工方案及技術(shù)措施
- 2025年海南海口市水務(wù)局招聘事業(yè)單位人員35人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年關(guān)聯(lián)公司資金往來協(xié)議
- 交警大隊(duì)合同范本
- 產(chǎn)業(yè)轉(zhuǎn)移課件-2024-2025學(xué)年高三一輪復(fù)習(xí)人教版(2019)地理選擇性必修2
- 2025年02月中國科協(xié)所屬單位公開招聘社會(huì)在職人員14人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025-2030年中國電動(dòng)滑板車市場(chǎng)運(yùn)行動(dòng)態(tài)及發(fā)展規(guī)劃分析報(bào)告
- 2025年江蘇鹽城市交通投資建設(shè)控股集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 事故隱患內(nèi)部舉報(bào)獎(jiǎng)勵(lì)制度
評(píng)論
0/150
提交評(píng)論