MC9S12UF32的嵌入式文件系統(tǒng)數(shù)據(jù)存儲(chǔ)模塊
在表2中,對(duì)ff.h中主要配置宏的含義進(jìn)行了說(shuō)明,同時(shí)給出了本文所介紹的數(shù)據(jù)存儲(chǔ)模塊采用的取值。本文引用地址:http://butianyuan.cn/article/151973.htm
4 FatFS文件系統(tǒng)的使用
FatFS文件系統(tǒng)中涉及2個(gè)基本的數(shù)據(jù)結(jié)構(gòu):文件系統(tǒng)(磁盤(pán))的數(shù)據(jù)結(jié)構(gòu)FATFS和文件的數(shù)據(jù)結(jié)構(gòu)FIL。這兩個(gè)結(jié)構(gòu)是FatFS軟件主要的RAM開(kāi)銷,F(xiàn)ATFS數(shù)據(jù)結(jié)構(gòu)中有針對(duì)磁盤(pán)的512字節(jié)讀寫(xiě)緩存,F(xiàn)IL則有針對(duì)每個(gè)文件的緩存。而采用Tiny FatFS配置則不會(huì)開(kāi)設(shè)文件讀寫(xiě)緩存,節(jié)約RAM。
依次使用f_mount、f_open、f_rcad/f_write、f_close可以完成基本的讀寫(xiě)。FatFS允許對(duì)同一文件同時(shí)復(fù)數(shù)讀取,但完全不支持對(duì)同一文件同時(shí)復(fù)數(shù)的寫(xiě)入操作,因?yàn)檫@會(huì)引起文件系統(tǒng)錯(cuò)誤。具體每一個(gè)函數(shù),特別是字符串讀寫(xiě)、格式化讀寫(xiě)等,可以參見(jiàn)原始幫助和例程。
此外,由于嵌入式系統(tǒng)具有突然掉電的可能性,一些關(guān)鍵代碼段可能導(dǎo)致文件系統(tǒng)錯(cuò)誤,所以要注意調(diào)用f_sync()及時(shí)寫(xiě)入。當(dāng)然,如果是一組連續(xù)的f_write()寫(xiě)入,而每次寫(xiě)完都f_sync(),則會(huì)極大地影響速度,可以全部寫(xiě)完后f_sync()。
V0.07以后版本的FatFS,增加了以下新的功能:
①_FS_TINY。Tiny模式變成了一個(gè)宏選項(xiàng),而不是獨(dú)立的代碼包。
②_FS_RPATH。決定是否有當(dāng)前路徑的概念,這將影響兩個(gè)相關(guān)函數(shù)的參數(shù)。
③_USE_LFN。啟用長(zhǎng)文件名支持,可為1或2,為2時(shí)可重入。由于長(zhǎng)文件名存在堆棧上,而且啟用LFN會(huì)依據(jù)代碼頁(yè)增加一個(gè)很大的轉(zhuǎn)換表,占掉幾十~幾百KB,所以不推薦。
④_LFN_UNICODE。長(zhǎng)文件名使用Unicode,實(shí)驗(yàn)階段,尚未正式寫(xiě)入文檔。
結(jié)語(yǔ)
MC9S12UF32單片機(jī)內(nèi)部集成的SDHC模塊,可將SD總線轉(zhuǎn)換為單片機(jī)內(nèi)部的IP總線,開(kāi)發(fā)者只需要對(duì)SD協(xié)議的基本內(nèi)容有所了解,通過(guò)讀寫(xiě)相應(yīng)的寄存器就可以方便地實(shí)現(xiàn)對(duì)SD卡的底層讀寫(xiě),大大簡(jiǎn)化了硬件的開(kāi)發(fā)過(guò)程。同時(shí),獨(dú)立于硬件平臺(tái)的FatFS軟件包可以方便地移植到各種嵌入式系統(tǒng)中,研發(fā)者只需要對(duì)該軟件包的diskio.c和ff.h進(jìn)行修改,即可完成移植,從而使用FatFS提供的豐富且易于使用的各種接口函數(shù)。
應(yīng)用上述主要技術(shù)實(shí)現(xiàn)的具有嵌入式文件系統(tǒng)的數(shù)據(jù)模塊如圖4所示。
該模塊體積小巧、存儲(chǔ)數(shù)據(jù)的靈活性和通用性很高,可以通過(guò)模塊自帶的串行通信接口接收數(shù)據(jù),并以文件的形式存儲(chǔ)起來(lái)。用戶既可以直接通過(guò)USB接口將本模塊識(shí)別為U盤(pán)進(jìn)行數(shù)據(jù)讀寫(xiě)和分析,也可以將micro SD卡拔出,在任意一個(gè)具有micro SD讀卡器功能的設(shè)備上讀寫(xiě)數(shù)據(jù)。上述功能特性使得這款數(shù)據(jù)存儲(chǔ)模塊具有很良好的應(yīng)用前景。
評(píng)論