文章總列表

Embedded System Studying note 1/26

About FAT

File Allocation Table 是微軟的招牌檔案系統 (FS)
從 DOS 時代用到現在, 隨便找一台電腦都能讀寫
如果能讓嵌入式系統讀寫 FAT
如此嵌入式系統很容易和電腦互通, 很有移植的價值

我有抓了微軟的 FAT spec 來讀
http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

讀得差不多, 也比對 spec 和 SD 卡的資料後, 我相信微軟說的是對的
但我沒打算寫FS, 畢竟我不是專業資訊玩家, 自己刻 FS 太辛苦了
Internet時代, 業餘玩家要懂得站在巨人的肩榜上...


----


About FatFs
http://elm-chan.org/fsw/ff/00index_e.html

FatFs 是一套不用錢的嵌入式 FAT filesystem, 可以支援 FAT12/16/32
我的 SD card driver 寫完以後, 希望能讓我的系統支援 FAT
這樣我的 ARM9 和電腦就有一個方便的介面互通

大陸人有個網站有提供移植的方法
看起來移植的難度不高, 看完了我信心大增
http://home.eeworld.com.cn/?uid-78216-action-viewspace-itemid-13069


----


這套 library 的移植很簡單, 只要提供以下的東西...

1. SD card 初始化函數
2. 讀寫 sector 的程式

這兩組函數很早就在我的 SD driver 裡了
移植到 FatFs 只要填類似下面的 API 就大致完成了..

DSTATUS disk_initialize (BYTE drv)
{

switch
(drv) {
case
SDMMC:
if
(SD_card_init() == -1)
return
STA_NOINIT;
else
return
0; // function OK

default
:
return
STA_NOINIT;
}
}



----


移植完下面幾支 function

disk_initialize()
disk_status()
disk_read()
disk_write()
disk_ioctl()
get_fattime()

我試著跑網站上的 file-copy 的範例, 超順利, 一次就OK
列出 SD 卡裡所有的檔案也沒問題
這樣看來 FatFs 應該是順利移植上來了 :)


----


TODO:

SD driver 的 Read/ Write 現在都是 blocking & polling 的暴力寫法
一定要想辦法讓 SD driver 跑在 low-priority task...

留言

這個網誌中的熱門文章

STM32 UART + DMA,使用HAL實作TX/RX,以及不定長度接收

幼犬書桌椅選擇心得 升降桌 兒童桌椅

CANON G3000 廢墨瓶改裝