嵌入式文件系統(tǒng)znFAT介紹_第1頁
嵌入式文件系統(tǒng)znFAT介紹_第2頁
嵌入式文件系統(tǒng)znFAT介紹_第3頁
嵌入式文件系統(tǒng)znFAT介紹_第4頁
嵌入式文件系統(tǒng)znFAT介紹_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論