There are many options to configure the functions of FatFs for each project. The configuration options are defined in the ffconf.h.
Read/Write (0) or Read-only (1). Read-only configuration removes writing API functions, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename, f_truncate, f_getfree and optional writing functions as well.
This option defines minimization level to remove some basic API functions as follows:
Value | Description |
---|---|
0 | All basic API functions are available. |
1 | f_stat, f_getfree, f_unlink, f_mkdir, f_chmod, f_utime, f_truncate and f_rename function are removed. |
2 | f_opendir, f_readdir and f_closedir function are removed in addition to 1. |
3 | f_lseek function is removed in addition to 2. |
This option switches string functions, f_gets, f_putc, f_puts and f_printf.
Value | Description |
---|---|
0 | Disable string functions. |
1 | Enable string functions without LF-CRLF conversion. |
2 | Enable string functions with LF-CRLF conversion. |
Disable (0) or Enable (1) filtered directory read functions, f_findfirst and f_findnext. Also _FS_MINIMIZE needs to be 0 or 1.
Disable (0) or Enable (1) f_mkfs function.
Disable (0) or Enable (1) fast seek function to enable accelerated mode of f_lseek, f_read and f_write function. For more information, read here.
Disable (0) or Enable (1) , f_enpand function. Also _FS_READONLY needs to be 0.
Disable (0) or Enable (1) metadata manipulation functions, f_chmod and f_utime. Also _FS_READONLY needs to be 0.
Disable (0) or Enable (1) volume label functions, f_getlabel and f_setlabel.
Disable (0) or Enable (1) f_forward function.
This option specifies the OEM code page to be used on the target system. Incorrect setting of the code page can cause a file open failure. If any extended character is not used at all, there is no difference between any code pages.
Value | Description |
---|---|
1 | ASCII (valid at non-LFN cfg.) |
437 | U.S. |
720 | Arabic |
737 | Greek |
771 | KBL |
775 | Baltic |
850 | Latin 1 |
852 | Latin 2 |
855 | Cyrillic |
857 | Turkish |
860 | Portuguese |
861 | Icelandic |
862 | Hebrew |
863 | Canadian French |
864 | Arabic |
865 | Nordic |
866 | Russian |
869 | Greek 2 |
932 | Japanese (DBCS) |
936 | Simplified Chinese (DBCS) |
949 | Korean (DBCS) |
950 | Traditional Chinese (DBCS) |
This option switches the support for long file name (LFN). When enable the LFN, Unicode support functions option/unicode.c need to be added to the project. The working buffer occupies (_MAX_LFN + 1) * 2 bytes and additional 608 bytes when exFAT enabled. When use stack for the working buffer, take care on stack overflow. When use heap memory for the working buffer, memory management functions, ff_memalloc and ff_memfree, need to be added to the project.
Value | Description |
---|---|
0 | Disable LFN. Only 8.3 format can be used. |
1 | Enable LFN with static working buffer on the BSS. Always NOT thread-safe. |
2 | Enable LFN with dynamic working buffer on the STACK. |
3 | Enable LFN with dynamic working buffer on the HEAP. |
This option defines the size of LFN working buffer from 12 to 255 in unit of character. This option has no effect when LFN is disabled.
ANSI/OEM (0) or Unicode (1). This option switches character encoding on the API. To use Unicode (UTF16) string for the path name, enable LFN and set this option to 1. This option also affects behavior of string I/O functions. When LFN is disabled, this option must be 0. For more information, read here.
When Unicode API is selected by setting _LFN_UNICODE 1, this option defines the assumption of character encoding on the file to be read/written via string I/O functions, f_gets, f_putc, f_puts and f_printf. This option has no effect when _LFN_UNICODE = 0.
Value | Description |
---|---|
0 | ANSI/OEM |
1 | UTF-16LE |
2 | UTF-16BE |
3 | UTF-8 |
This option configures relative path function. For more information, read here.
Value | Description |
---|---|
0 | Disable relative path function and remove related functions. |
1 | Enable relative path function. f_chdir and f_chdrive function is available. |
2 | f_getcwd function is available in addition to 1 |
This option configures number of volumes (logical drives, from 1 to 10) to be used.
Disable (0) or Enable (1). This option switches the support for string volume ID. When enabled, also pre-defined strings in _VOLUME_STRS can be used as drive identifier in the path name.
This option defines the drive ID strings for each logical drives. Number of items must not be less than _VOLUMES. Valid characters for the drive ID string are: A-Z and 0-9.
Disable (0) or Enable (1). This option switches multi-partition function. By default (0), each logical drive number is bound to the same physical drive number and only an FAT volume in the physical drive is mounted. When enabled, each logical drive is bound to the partition on the physical drive listed in the user defined partition resolution table VolToPart[]. Also f_fdisk funciton will be available. For more information, read here.
This set of options defines the size of sector on low level disk I/O interface, disk_read and disk_write function. Valid values are 512, 1024, 2048 and 4096. _MIN_SS defines minimum sector size and _MAX_SS defines the maximum sector size. Always set both 512 for any type of memory card and harddisk. But a larger value may be required for on-board flash memory and some type of optical media. When _MAX_SS > _MIN_SS, FatFs is configured to variable sector size and GET_SECTOR_SIZE command must be implemented to the disk_ioctl function.
Disable (0) or Enable (1). This option switches ATA-TRIM function. To enable Trim function, also CTRL_TRIM command should be implemented to the disk_ioctl function.
0 to 3. If you need to know correct free space on the FAT32 volume, set bit 0 of this option, and f_getfree function at first time after volume mount will force a full FAT scan. Bit 1 controls the use of last allocated cluster number.
Value | Description |
---|---|
bit0=0 | Use free cluster count in the FSINFO if available. |
bit0=1 | Do not trust free cluster count in the FSINFO. |
bit1=0 | Use last allocated cluster number in the FSINFO to find a free cluster if available. |
bit1=1 | Do not trust last allocated cluster number in the FSINFO. |
Normal (0) or Tiny (1). At the tiny configuration, size of the file object FIL is reduced _MAX_SS bytes. Instead of private data buffer eliminated from the file object, common sector buffer in the file system object FATFS is used for the file data transfer.
This option switches support for the exFAT file system in addition to the FAT file system, Enabled(1) or Disabled(1). To enable this feature, also LFN must be enabled and configureing _LFN_UNICODE = 1 and _MAX_LFN = 255 is recommended for full-featured exFAT function. Note that enabling exFAT discards C89 compatibility because of need for 64-bit integer type.
Use RTC (0) or Do not use RTC (1). This option controls timestamp function. If the system does not have an RTC function or valid timestamp is not needed, set _FS_NORTC to 1 to disable the timestamp function. Any object modified by FatFs will have a fixed timestamp value defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR. To use the timestamp function, set _FS_NORTC = 0 and add get_fattime function to the project to get the current time form real-time clock. This option has no effect at read-only configuration.
This set of options defines the time to be used at no RTC systems. This option has no effect at read-only configuration or _FS_NORTC = 0.
This option switches file lock function to control duplicated file open and illegal operations to open objects. Note that the file lock function is independent of re-entrancy. This option must be 0 at read-only configuration.
Value | Description |
---|---|
0 | Disable file lock function. To avoid volume corruption, application program should avoid illegal open, remove and rename to the open objects. |
>0 | Enable file lock function. The value defines how many files/sub-directories can be opened simultaneously under file lock control. Illigal operations to the open object will be rejected with FR_LOCKED. |
Disable (0) or Enable (1). This option switches the re-entrancy (thread safe) of the FatFs module itself. Note that file/directory access to the different volume is always re-entrant and it can work simultaneously regardless of this option but volume control functions, f_mount, f_mkfs and f_fdisk, are always not re-entrant. Only file/directory access to the same volume, in other words, exclusive use of each file system object, is under control of this function. To enable this feature, also user provided synchronization handlers, ff_req_grant, ff_rel_grant, ff_del_syncobj and ff_cre_syncobj, need to be added to the project. Sample code is available in option/syscall.c.
Number of time ticks to abort the file function with FR_TIMEOUT when wait time is too long. This option has no effect when _FS_REENTRANT = 0.
This option defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*, SemaphoreHandle_t and etc. A header file for O/S definitions needs to be included somewhere in the scope of ff.c. This option has no effect when _FS_REENTRANT = 0.