FatfsCube構成の詳細

周囲

  • FatFs R0.11
  • STM32CubeMX 5.6.1
  • STM32F103C8T6

公式構成文書

http://elm-chan.org/fsw/ff/doc/config.html

構成オプション

機能構成

FF_FS_READONLY

読み取り/書き込み(0)または読み取り専用(1)。読み取り専用構成では、書き込みAPI関数f_write、f_sync、f_unlink、f_mkdir、f_chmod、f_rename、f_truncate、f_getfree、およびオプションの書き込み関数も削除されます。

FF_FS_MINIMIZE

このオプションは、以下に示すように、いくつかの基本的なAPI関数を削除するための最小レベルを定義します。

説明

0

すべての基本的なAPI関数が利用可能です。

1個

f_stat、f_getfree、f_unlink、f_mkdir、f_chmod、f_utime、f_truncate、およびf_rename関数は削除されました。

2

1に加えて、f_opendir、f_readdir、およびf_closedir関数も削除されました。

3

2に加えて、f_lseek関数も削除されます。

FF_USE_STRFUNC

このオプションは、文字列関数f_gets、f_putc、f_puts、およびf_printfを切り替えます。

説明

0

文字列関数を無効にします。

1個

LF-CRLF変換を実行しない文字列関数を有効にします。

2

文字列機能を有効にするには、LF-CRLF変換を使用します。

FF_USE_FIND

フィルタリングされたディレクトリ読み取り関数f_findfirstおよびf_findnextを無効(0)または有効(1)にします。FF_FS_MINIMIZEも0または1である必要があります。

FF_USE_MKFS

f_mkfs関数を無効(0)または有効(1)にします。

FF_USE_FASTSEEK

クイック検索機能を無効(0)または有効(1)にして、f_lseek、f_read、およびf_write関数のアクセラレーションモードを有効にします。詳細については、こちらをお読みください

FF_USE_EXPAND

f_expand関数を無効(0)または有効(1)にします。

FF_USE_CHMOD

メタデータ制御関数f_chmodおよびf_utimeを無効(0)または有効(1)にします。FF_FS_READONLYも0でなければなりません。

FF_USE_LABEL

ボリュームラベルの場合、f_getlabelおよびf_setlabelはAPI関数を無効(0)または有効(1)にします。

FF_USE_FORWARD

f_forward関数を無効(0)または有効(1)にします。

名前空間とロケールの構成

FF_CODE_PAGE

このオプションは、ターゲットシステムで使用されるOEMコードページを指定します。コードページの設定が正しくないと、ファイルを開くことができません。パス名として非ASCII文字が使用されていない場合、または文字エンコードがUnicodeの場合、コードページの設定に違いはありません。とにかく437に設定してください。

 

コードページ

0

以下のすべてのコードページを含み、f_setcp()によって設定されます

437

アメリカ

720

アラブ

737

ギリシャ語

771

KBL

775

バルト海

850

ラテン語1

852

ラテン語2

855

キリル

857

七面鳥

860

ポルトガル語

861

アイスランド語

862

ヘブライ語

863

カナダフランス語

864

アラブ

865

北欧スタイル

866

ロシア

869

ギリシャ語2

932

日本語(DBCS)

936

簡体字中国語(DBCS)

949

韓国語(DBCS)

950

繁体字中国語(DBCS)

FF_USE_LFN

このオプションは、長いファイル名(LFN)のサポートを切り替えます。LFNが有効になっている場合は、Unicodeサポートモジュールffunicode.cをプロジェクトに追加する必要があります。スタックを作業バッファーとして使用する場合は、スタックオーバーフローに注意してください。ヒープメモリを作業バッファとして使用する場合は、メモリ管理関数(ff_memallocおよびff_memfree)をプロジェクトに追加する必要があります。

 

説明

0

LFNを無効にします。使用できるのは8.3形式のパス名のみです。

1個

BSSの静的作業バッファーでLFNを有効にします。常にスレッドセーフであるとは限りません。

2

スタック上の動的作業バッファでLFNを有効にします。

3

HEAPの動的作業バッファーでLFNを有効にします。

FF_MAX_LFN

LFN関数では、ファイル名を取得するために内部作業バッファーが必要です。このオプションはバッファのサイズを定義します。値の範囲はLFNのUTF-16エンコーディング単位で、範囲は12〜255です。exFATが有効な場合、バッファーは(FF_MAX_LFN + 1)* 2バイトを占有し、(FF_MAX_LFN + 44)/ 15 * 32バイトを占有します。LFN仕様を完全にサポートするには、255に設定することをお勧めします。LFNが有効になっていない場合、このオプションは効果がありません。

FF_LFN_UNICODE

此选项切换API上文件名的字符编码。当选择Unicode时,FF_CODE_PAGE实际上没有任何意义,除了与旧系统(例如MS-DOS和不支持LFN的系统)兼容。FatFs支持最多U + 10FFFF的代码点。

 

字符编码

TCHAR

0

当前CP中的ANSI / OEM

烧焦

1个

UTF-16中的Unicode

WCHAR

2

UTF-8中的Unicode

烧焦

3

UTF-32中的Unicode

双字

此选项还会影响字符串I / O函数的行为(请参阅FF_STRF_ENCODE)。如果未启用LFN,则此选项无效,并且FatF在API上的ANSI / OEM代码下工作。有关更多信息,请阅读此处

FF_LFN_BUF,FF_SFN_BUF

这组选项在FILINFO结构中定义文件名成员fname []和altname []的大小,该结构用于读取目录项。这些值应足以读取文件名。读取文件名的最大可能长度取决于API上的字符编码,如下所示:

 

编码方式

LFN长度

SFN长度

SBCS的ANSI / OEM

255项目

12项

DBCS的ANSI / OEM

510项目

12项

UTF-16 / 32中的Unicode

255项目

12项

UTF-8中的Unicode

765项目

34项目

如果名称成员的大小不足以使用LFN,则将该项目视为没有LFN。未启用LFN时,这些选项无效。

FF_STRF_ENCODE

当API上的字符编码为Unicode(FF_LFN_UNICODE> = 1)时,字符串I / O函数f_gets,f_putc,f_puts和f_printf转换其中的字符编码。该选项定义了通过这些功能读写文件的字符编码的假设。当未启用LFN或FF_LFN_UNICODE == 0时,字符串函数无需任何编码转换即可工作,并且此选项无效。

文件上的字符编码

0

当前代码页中的ANSI / OEM

1个

UTF-16LE中的Unicode

2

UTF-16BE中的Unicode

3

UTF-8中的Unicode

FF_FS_RPATH

此选项配置相对路径功能。有关更多信息,请阅读此处

描述

0

禁用相对路径功能并删除相关功能。

1个

启用相对路径功能。f_chdir和f_chdrive功能可用。

2

f_getcwd函数除了1外还可用

卷/驱动器配置

FF_VOLUMES

此选项配置要使用的卷数(逻辑驱动器最多10个)。

FF_STR_VOLUME_ID

此选项切换对字符串卷ID的支持。当为驱动器前缀启用卷ID的任意字符串时,FF_VOLUME_STRS的预定义字符串或用户定义的字符串也可以用作路径名中的驱动器前缀。不论此选项如何,数字驱动器号始终有效,并且该选项还可以启用驱动器前缀的任何一种格式。

描述

0

只能使用数字ID中的DOS / Windows样式驱动器前缀。

0:/文件名

1个

也可以使用字符串ID中的DOS / Windows样式驱动器前缀。

flash:/文件名

2

也可以使用字符串ID中的Unix样式驱动器前缀。

/ flash /文件名

FF_VOLUME_STRS

此选项定义每个逻辑驱动器的卷ID字符串。项数不能小于FF_VOLUMES。卷ID字符串的有效字符为AZ,az和0-9,但是,它们在不区分大小写的情况下进行比较。如果FF_STR_VOLUME_ID == 0,则此选项无效。如果FF_STR_VOLUME_ID> = 1并且未定义此选项,则需要定义用户定义的卷字符串表,如下所示。该表不应即时修改。

/ *用户定义的0:1:2:3:3:卷ID字符串* / 
const char * VolumeStr [FF_VOLUMES] = {“ ram”,“ flash”,“ sdc”,“ usb”};

FF_MULTI_PARTITION

禁用(0)或启用(1)。此选项切换多分区功能。默认情况下(0),每个逻辑驱动器号都绑定到相同的物理驱动器号,并且仅安装物理驱动器中的一个卷。启用后,每个逻辑驱动器都绑定到用​​户定义的分区解析表VolToPart []中列出的物理驱动器上的分区。此外f_fdisk功能可按可用。有关更多信息,请阅读此处

FF_MIN_SS,FF_MAX_SS

这组选项定义了用于低级磁盘I / O接口,disk_read和disk_write函数的扇区大小范围。有效值为512、1024、2048和4096。FF_MIN_SS定义最小扇区大小,FF_MAX_SS定义最大扇区大小。始终将存储卡和硬盘都设置为512。但是,板载闪存和某些类型的光学介质可能需要更大的值。当FF_MAX_SS> FF_MIN_SS时,启用对可变扇区大小的支持,并且需要对disk_ioctl函数实施GET_SECTOR_SIZE命令。

FF_LBA64

此选项将媒体访问接口切换到64位LBA,并启用GUID分区表(GPT)进行分区管理(已启用(1)或已禁用(0))。需要启用exFAT文件系统才能启用此功能。

FF_MIN_GPT

该选项指定在驱动器上使用f_mkfs和f_fdisk函数创建分区时确定分区格式的阈值。当驱动器上的扇区数等于或大于此值时,驱动器将在GPT中分区。当FF_LBA64 == 0时,此选项无效。

FF_USE_TRIM

禁用(0)或启用(1)。此选项切换ATA-TRIM功能。要启用Trim功能,还应该对disk_ioctl函数实施CTRL_TRIM命令。

系统配置

FF_FS_TINY

普通(0)或微小(1)。微小的配置减少了FIL结构,文件对象和FF_MAX_SS字节的大小。FATFS结构中的公用扇区缓冲区(文件系统对象)不是从文件对象中删除的专用扇区缓冲区,而是用于文件数据传输。

FF_FS_EXFAT

除FAT / FAT32文件系统外,此选项还支持exFAT文件系统,即启用(1)或禁用(0)。要启用exFAT,还必须启用LFN,并建议将FF_LFN_UNICODE> = 1和FF_MAX_LFN == 255配置为功能齐全的exFAT功能。请注意,启用exFAT会放弃ANSI C(C89)兼容性,并且由于需要64位整数类型而需要C99。

FF_FS_NORTC

使用RTC(0)或不使用RTC(1)。此选项控制时间戳功能。如果系统没有任何RTC功能,或者不需要有效的时间戳,请将FF_FS_NORTC设置为1可禁用时间戳功能。FatFs修改的每个对象都将具有由FF_NORTC_MON,FF_NORTC_MDAY和FF_NORTC_YEAR定义的固定时间戳。要使用时间戳功能,请设置FF_FS_NORTC == 0并将get_fattime函数添加到项目中以从RTC获取当前时间。此选项对只读配置无效。

FF_NORTC_MON,FF_NORTC_MDAY,FF_NORTC_YEAR

这组选项定义了没有RTC系统使用的时间。该选项对只读配置或FF_FS_NORTC == 0无效。

FF_FS_NOFSINFO

0到3。如果您需要知道FAT32卷上的正确可用空间,请设置此选项的位0,并且在卷装入后第一次启动f_getfree函数将强制执行完整的FAT扫描。位1控制最后分配的群集号的使用。

描述

位0 = 0

如果可用,请在FSINFO中使用可用的群集计数。

位0 = 1

不要信任FSINFO中的可用群集计数。

位1 = 0

使用FSINFO中最后分配的群集号查找可用的群集(如果有)。

位1 = 1

不要信任FSINFO中最后分配的集群号。

FF_FS_LOCK

此选项切换文件锁定功能以控制重复文件的打开和非法操作以打开对象。请注意,文件锁定功能与重新输入无关。在只读配置下,此选项必须为0。

描述

0

禁用文件锁定功能。为避免文件因错误的文件操作而崩溃,应用程序需要避免非法打开,删除并重命名为打开的对象。

> 0

启用文件锁定功能。该值定义在文件锁定控制下可以同时打开多少个文件/子目录。对打开对象的非法操作将被FR_LOCKED拒绝。

FF_FS_REENTRANT

禁用(0)或启用(1)。此选项可切换FatFs模块本身的重新进入(线程安全)。请注意,始终可以重新进入对不同卷的文件/目录访问权限,并且无论该选项如何,它都可以同时工作,但是,卷管理功能f_mount,f_mkfs和f_fdisk始终不可以重入。此功能控制着仅文件/目录访问同一卷,换句话说,每个文件系统对象的独占使用。为了启用此功能,用户还提供了同步处理程序ff_req_grant,ff_rel_grant,ff_del_syncobj和ff_cre_syncobj,需要添加到项目中。ffsystem.c中提供了示例代码。

FF_FS_TIMEOUT

等待时间过长时,使用FR_TIMEOUT中止文件功能的时间间隔。当FF_FS_REENTRANT == 0时,此选项无效。

FF_SYNC_t

此选项定义与O / S相关的同步对象类型。例如HANDLE,ID,OS_EVENT *,SemaphoreHandle_t等。用于O / S定义的头文件需要包含在ff.c范围内的某个位置。当FF_FS_REENTRANT == 0时,此选项无效。

 

 

大部分来自官网

from: https://blog.csdn.net/shaynerain

おすすめ

転載: blog.csdn.net/shaynerain/article/details/107111154