[转载] FatFs模块功能配置选项
本文使用的FatFs版本為:V0.12b(2016年9月4發布)
Fatfs模塊的功能可以裁剪,通過配置宏定義實現,宏定義位于文件ffconf.h中。
1.功能配置
1.1 _FS_READONLY
使能或禁用與寫相關函數。
當設置為只讀(1)時,API函數f_write、f_sync、f_unlink、f_mkdir、f_chmod、f_rename、f_truncate、f_getfree。
1.2 _FS_MINIMIZE
函數功能裁剪。
1.3 _USE_STRFUNC
用于使能或禁用字符串函數:f_gets、f_putc、f_puts和f_printf
1.4 _USE_FIND
使能或禁用在指定目錄內搜索指定文件函數:f_findfirst和f_findnext
1.5 _USE_MKFS
使能或禁用f_mkfs函數
1.6 _USE_FASTSEEK
使能或禁用快速搜索功能,使能后,可以加快f_lseek、f_read和f_write函數執行。
1.7 _USE_EXPAND
使能或禁用f_expand函數,該函數可以為文件分配連續數據區域。
1.8 _USE_CHMOD
使能或禁用元數據控制函數:f_chmod和f_utime。
1.9 _USE_LABEL
使能或禁用卷標簽API函數:f_getlabel和f_setlabel。
1.10 _USE_FORWARD
使能或禁用f_forward函數。
2.命名空間和本地環境配置
2.1 _CODE_PAGE
規定目標系統使用的OEM代碼。如果該代碼設置的不正確,可能會引起文件打開失敗。如果沒有根本沒有使用擴展字符,則使用任何代碼都沒區別。
2.2 _USE_LFN
使能或禁用長文件名(LFN)。當使能長文件名后,需要向工程添加包含Unicode支持函數的option/unicode.c文件。工作緩沖區增加(_MAX_LFN + 1) * 2個字節,如果使能exFAT,額外多需要608字節緩存。如果工作緩存使用棧內存,需當心棧溢出;如果工作緩沖使用堆內存,需要向工程添加內存管理函數ff_memalloc和ff_memfree。
2.3 _MAX_LFN
定義長文件名工作緩沖區大小,可以為12~255字節。當禁用長文件名時,此選項無效。
2.4 _LFN_UNICODE
使能或禁用Unicode。如果要使用Unicode(UTF16)字符串路徑名,需要使能LFN和設置本選項為1。此選項還影響字符串I/O功能函數。如果禁用長文件名,此選項必須為0。
2.5 _STRF_ENCODE
通過設置_LFN_UNICODE為1使能Unicode API函數時,這個選項定義通過字符串I/O函數讀寫的文件字符編碼。字符串I/O函數有f_gets、f_putc、f_puts和f_printf。當_LFN_UNICODE等于0時,此選項不起作用。
2.6 _FS_RPATH
配置相對路徑函數。
3.卷/驅動器配置
3.1 _VOLUMES
配置可用卷的數目,可設置為1~10。
3.2 _STR_VOLUME_ID
使能或禁用字符串卷標識。要使能字符串卷標識,需要預先定義標識字符串,使用宏_VOLUME_STRS定義。
3.3 _VOLUME_STRS
定義每一個邏輯驅動器ID。ID數目不能少于_VOLUMES。驅動器ID有效字符只能為A-Z和0-9。比如:
#define _VOLUME_STRS?? ?"RAM","NAND","CF","SD","SD2","USB","USB2","USB3"
3.4 _MULTI_PARTITION
使能或禁止多分區函數。默認禁止,此時每個邏輯驅動器數目一定與物理驅動器數目相同,并且物理驅動器僅能安裝FAT卷。如果使能,物理設備上可以有多個邏輯扇區,每個邏輯驅動器一定要預先定義在分區解析表VolToPart[]中。同時,f_disk函數有效。
3.5 _MIN_SS、_MAX_SS
定義扇區大小,有效值為512、1024、2048、4096,需要根據硬件配置來定義。_MIN_SS定義最小扇區大小,_MAX_SS定義最大扇區大小。都設置為512可以兼容所有SD卡和硬盤,但是在某些片上Flash和其它存儲設備可能需要更大值。當_MAX_SS > _MIN_SS,FatFs被配置為扇區大小可變的并且必須在函數disk_ioctl中實現GET_SECTOR_SIZE命令。
3.6 _USE_TRIM
使能或禁用ATA-TRIM函數。TRIM指令被文件系統用來通知設備哪些邏輯地址不再被占用,可以被設備回收為空閑空間。對于FatFs來說,使用函數f_unlink移除一個文件時,只是將對應的FAT區域設置為空,文件實際上在扇區中。如果想在移除文件時強制擦除扇區,只需將_USE_TRIM設置為1。如果使能TRIM函數,必須在函數disk_ioctl中實現CTRL_TRIM命令。
3.7 _FS_NOFSINFO
使能或禁用空閑簇計數和最后分配的簇計數。
4.系統配置
4.1 _FS_TINY
配置FatFs為正常模式或者微型(TINY)模式。配置為微型模式后,對內存需求變小,文件對象數據結構FIL會減少_MAX_SS字節。程序復用FATFS數據結構中的緩沖區代替FIL數據結構中去除掉的緩沖區。
4.2 _FS_EXFAT
使能或禁用exFAT文件系統。要使能exFAT文件系統,必須使能長文件名功能并且配置_LFN_UNICODE = 1。如果要使用全功能版的exFAT,推薦_MAX_LFN = 255。注意,使能exFAT意味著不再兼容C89,因為要用到64位整形數。
4.3 _FS_NORTC
使能或禁用時間戳函數。使能時間戳函數需要硬件RTC,并且需要提供底層函數get_fattime。如果系統沒有硬件RTC或者不需要時間戳功能,設置_FS_NORTC為1禁用時間戳函數。此時,如果FatFs修改任何文件,使用固定的時間戳,固定時間戳由宏_NORTC_MON、_NORTC_MDAY和_NORTC_YEAR定義。
4.4 _NORTC_MON、_NORTC_MDAY和_NORTC_YEAR
如果系統沒有RTC,這些宏用來定義固定時間戳。只讀或者_FS_NORTC=0時,這些宏無意義。
比如:
#define _NORTC_MON?? ?1
#define _NORTC_MDAY?? ?1
#define _NORTC_YEAR?? ?2016
4.5 _FS_LOCK
使能或禁用文件鎖功能。控制重復打開文件和非法打開文件對象。注意:文件鎖功能不具有可重入性。只讀模式下,這個宏必須為0。
4.6 _FS_REENTRANT
使能或禁用FatFs模塊的可重入特性。注意,訪問不同卷上的文件/目錄總是可重入的,無論是否使能本參數,卷控制函數f_mount、f_mkfs和f_fdisk總是不可重入的。要使能可重入特性,用戶必須提供同步處理,要向工程中添加ff_req_grant、ff_rel_grant、ff_del_syncobj和ff_cre_syncobj函數。可以在文件option/syscall.c中找到示例。
4.7 _FS_TIMEOUT
設置超時時間,單位為系統時鐘滴答周期,當宏_FS_REENTRANT=0時,本設置無效。
4.8 _SYNC_t
定義同步對象類型,取決于O/S。比如HANDLE、ID、OS_EVENT*、SemaphoreHandle_t等等。需要在ff.c中包含O/S相關的頭文件。當宏_FS_REENTRANT=0時,本設置無效。
---------------------?
作者:zhzht19861011?
來源:CSDN?
原文:https://blog.csdn.net/zhzht19861011/article/details/52910541?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的[转载] FatFs模块功能配置选项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】【FS】FATFS文件系统介绍(
- 下一篇: VS2017 安装,建议大家都看一下这个