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時,本設定無效。
FatFs 檔案系統 ffconf h的配置
define use strfunc 1 啟用字串函式,但是不進行lf crlf轉換的。define use mkfs 1 啟用 1 f mkfs功能。在邏輯驅動器上建立fat卷 define use fastseek 1 啟用 1 快速查詢功能可啟用f lseek,f read和f write功能...
linux看tcp連線情況
netstat n awk tcp end 82.195 netstat n awk tcp end time wait 34305 close wait 2 fin wait1 162 fin wait2 70 established 552 syn recv 211 closing 87 las...
nginx核心模組配置 主模組配置
官方文件位址 中文文件位址 建議兩個文件個都看看防止遺漏中文文件不全 nginx的程序結構 啟動nginx的時候,會啟動乙個master程序,這個程序不處理任何客戶端的 請求,主要用來產生worker程序,乙個worker程序用來處理乙個request。n nginx模組分為 核心模組 事件模組 標...