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