FATFS 開源FAT文件系統

詳見官網:http://elm-chan.org/fsw/ff/00index_e.html  

FATFS是一個專爲小型嵌入式系統調計的通用文件系統模塊。FATFS是用ANSI C(標準C語言)相兼容的語法書寫,並且完全地實現了與磁盤IO層分離,因此它是與硬件無關的。它完全不需要任何修改就能被集成到低成本的微控器(MCU)中,例如 AVR, 8051, PIC, ARM, Z80, 68k等。

FATFS分爲全功能和精簡版的

特性

與WINDOWS FAT相兼容的文件系統。

與平臺無關,便於移植。

對代碼存儲器的大小和運行時所需RAM的大小及其它硬件性能要求很低,

所以FATFS可以很好地運用在低成本的嵌入式系統中。

多樣化的配置

多卷標的支持(包含多磁盤和多分區)。

在DBCS中包含了多種OEM碼頁。

長文件名(LFN)支持,支持OEM碼和UNICODE。

可集成到實時操作系統(RTOS)中。

多樣化的扇區大小支持。

只讀模式、最小化API、可配置的I/O緩衝等等。

應用層程序結口如下

f_mount - 註冊和取消工作區

f_open - 打開或者創建文件

f_close -關閉一個文件

f_read - 從文件中讀取數據

f_write -向 文件中寫入數據

f_lseek - 移動文件讀指針(RP),擴展文件大小

f_truncate - 縮減文件大小

f_sync - 清空緩存數據,實現數據同步

f_opendir - 打開一個目錄

f_readdir - 列舉目錄中的條目(包括文件和子目錄)。

f_getfree - 獲取可用簇

f_stat - 獲取文件屬性

f_mkdir - 創建文件

f_unlink - 刪除文件或者目錄

f_chmod - 更改屬性

f_utime -更改時間戳

f_rename - 重命名或者移動一個文件或目錄

f_mkfs - 格式化磁盤

f_forward - 將文件數據直接送入數據流中

f_chdir - 改變當前所在目錄

f_chdrive - 改變當前所在驅動器

f_gets -讀字符串

f_putc - 寫一個字符

f_puts - 寫字符串

f_printf - 寫入一個格式化字符串

磁盤I/O接口

disk_initialize - 磁盤初始化

disk_status - 獲取磁盤屬性

disk_read - 讀扇區

disk_write - 寫扇區

disk_ioctl - 獨立的磁盤控制資源

get_fattime - 獲取時間

相關資源

FATFS是一個免費的開源軟件,可用於教學,研究和開發。

你可以任意地修改或者發佈它,你能夠無限制的在非盈利或者商業產品中使用它。

你能在本文上方的下載鏈接中獲取最新版本。

 

 

f_open
創建/打開一個用於訪問文件的文件對象

FRESULT f_open (
 FIL* FileObject,         /* 空白文件對象結構指針 */
 const XCHAR* FileName,   /* 文件名指針 */
 BYTE ModeFlags           /* 模式標誌 */
);
參數
FileObject
將被創建的文件對象結構的指針。
FileName
NULL結尾的字符串指針,該字符串指定了將被創建或打開的文件名。
ModeFlags
指定文件的訪問類型和打開方法。它是由下列標誌的一個組合指定的。
模式 描述
FA_READ 指定讀訪問對象。可以從文件中讀取數據。
與FA_WRITE結合可以進行讀寫訪問。
FA_WRITE 指定寫訪問對象。可以向文件中寫入數據。
與FA_READ結合可以進行讀寫訪問。
FA_OPEN_EXISTING 打開文件。如果文件不存在,則打開失敗。(默認)
FA_OPEN_ALWAYS 如果文件存在,則打開;否則,創建一個新文件。
FA_CREATE_NEW 創建一個新文件。如果文件已存在,則創建失敗。
FA_CREATE_ALWAYS 創建一個新文件。如果文件已存在,則它將被截斷並覆蓋。
注意:當 _FS_READONLY == 1 時,模式標誌 FA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYS 是無效的。

 

例: 

sprintf(name,"Pen_%03d.pen",iFile);

//如果文件存在,則打開;否則,創建一個新文件。   且文件讀和寫
    f_res = f_open(&file, name, FA_OPEN_ALWAYS | FA_WRITE | FA_READ);      //FA_CREATE_ALWAYS  FA_CREATE_NEW

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章