MC9S12UF32的嵌入式文件系統(tǒng)數(shù)據(jù)存儲(chǔ)模塊
具體移植過(guò)程如下:
(1)存儲(chǔ)媒介初始化函數(shù)
DSTATUS disk_initialize(BYTE drv)
由于采用的存儲(chǔ)媒介是SD卡,所以該函數(shù)的實(shí)際功能是對(duì)SD卡進(jìn)行初始化。drv是存儲(chǔ)介質(zhì)號(hào)碼,由于Tiny-FatFS只支持一個(gè)存儲(chǔ)介質(zhì),所以此處drv始終取O值。執(zhí)行無(wú)誤,則返回值=O;執(zhí)行中出現(xiàn)錯(cuò)誤,則返回非O值。
(2)狀態(tài)檢測(cè)函數(shù)
DSTATUS disk_status(BYTE drv)
該函數(shù)用于檢測(cè)是否支持當(dāng)前的存儲(chǔ)介質(zhì)。此處的drv仍然恒為O。對(duì)Tiny-FatFS而言,只要drv為O,就認(rèn)為支持當(dāng)前介質(zhì),函數(shù)直接返回O值即可。
(3)讀扇區(qū)函數(shù)
DRESULT disk read(BYTE drv,BYTE*buff,DWORD seetor,BYTE.count)
該函數(shù)是在“單片機(jī)從SD卡讀取一個(gè)扇區(qū)”的函數(shù)基礎(chǔ)上編寫(xiě)而成的,其功能是從SD卡讀取一個(gè)或多個(gè)扇區(qū)的數(shù)據(jù)。*buff用于存儲(chǔ)已經(jīng)讀取的數(shù)據(jù),sector是待讀取扇區(qū)的起始扇區(qū)數(shù),count是需要讀取的扇區(qū)數(shù)。如果執(zhí)行無(wú)誤則返回O值,否則返回非O值。
(4)寫(xiě)扇區(qū)函數(shù)
DRESULT disk_write(BYTE drv,const BYTE*buff。DWORD sector,BYTE count)
與disk_read相似,該函數(shù)是在“單片機(jī)向SD卡寫(xiě)入一個(gè)扇區(qū)”的函數(shù)基礎(chǔ)上編寫(xiě)而成的,其功能是向SD卡導(dǎo)入一個(gè)或多個(gè)扇區(qū)的數(shù)據(jù)。*buff用于保存將要寫(xiě)入的數(shù)據(jù),sector是待寫(xiě)入扇區(qū)的起始扇區(qū)數(shù),count是需要寫(xiě)入的扇區(qū)數(shù)。如果執(zhí)行無(wú)誤,則返回0值;否則,返回非0值。
(5)存儲(chǔ)介質(zhì)控制函數(shù)
DRESULT disk_ioctl(BYTE drv,BYTE ctrl,VoiI*buff)
ctrl是控制代碼,*buff用于保存或接收需要控制的數(shù)據(jù)數(shù)據(jù)。使用者可以在此函數(shù)里添加自己需要的功能代碼,例如獲得存儲(chǔ)介質(zhì)的容量、扇區(qū)數(shù)等。如果是簡(jiǎn)單的應(yīng)用,也可以不執(zhí)行任何功能,直接返回0值。本文采用的就是這一方法。
(6)實(shí)時(shí)鐘函數(shù)
DWORD disk_fattime(Void)
該函數(shù)將讀取的實(shí)時(shí)鐘信息保存在一個(gè)32位無(wú)符號(hào)整數(shù)中,并將其作為函數(shù)的返回值。時(shí)鐘信息在這32位中的具體分布如表1所列。本文引用地址:http://m.butianyuan.cn/article/151973.htm
3.3 FatFS的裁減與配置Tiny-FatFS
FatFs提供了豐富的庫(kù)函數(shù),可以實(shí)現(xiàn)創(chuàng)建、讀取文件夾,創(chuàng)建、讀寫(xiě)文件,移動(dòng)文件指針,向文件中寫(xiě)入或讀取字符串,甚至是類似與C語(yǔ)言fprintf()的格式化輸入等各種功能。使用者可以根據(jù)自己的需求設(shè)置相應(yīng)的宏,對(duì)FatFs進(jìn)行裁減,僅保留需要的功能函數(shù),從而精簡(jiǎn)文件系統(tǒng)的內(nèi)存開(kāi)銷。FatFS提供的函數(shù)與宏的對(duì)應(yīng)關(guān)系如圖3所示。
FatFS的裁減,不僅僅是函數(shù)層面的。更重要的是,在內(nèi)部機(jī)制上形成一個(gè)精簡(jiǎn)版本,稱為T(mén)iny-FatFS。它與標(biāo)準(zhǔn)版FatFS相比,主要的區(qū)別在于Tiny-FatFS僅支持一個(gè)物理存儲(chǔ)介質(zhì),而且不再針對(duì)每個(gè)開(kāi)啟的文件建立512字節(jié)的緩存,整個(gè)文件系統(tǒng)和物理介質(zhì)使用同一個(gè)緩存。顯然,Tiny-FatFs需要的內(nèi)存開(kāi)銷比標(biāo)準(zhǔn)版FatFS更低,只要1 KB左右的RAM??梢哉f(shuō),Tinyr-FatFS是專門(mén)為小型嵌入式系統(tǒng)而設(shè)計(jì)的文件系統(tǒng)模塊。本文介紹的數(shù)據(jù)存儲(chǔ)系統(tǒng)使用的正是Tiny-FatFS版本。
評(píng)論