1 /*---------------------------------------------------------------------------/ 2 / FatFs Functional Configurations 3 /---------------------------------------------------------------------------*/ 4 5 #define FFCONF_DEF 86631 /* Revision ID */ 6 7 /*---------------------------------------------------------------------------/ 8 / Function Configurations 9 /---------------------------------------------------------------------------*/ 10 11 #if defined(CONFIG_FS_FATFS_READ_ONLY) 12 #define FF_FS_READONLY CONFIG_FS_FATFS_READ_ONLY 13 #else 14 #define FF_FS_READONLY 0 15 #endif 16 /* This option switches read-only configuration. (0:Read/Write or 1:Read-only) 17 / Read-only configuration removes writing API functions, f_write(), f_sync(), 18 / f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree() 19 / and optional writing functions as well. */ 20 21 #define FF_FS_MINIMIZE 0 22 /* This option defines minimization level to remove some basic API functions. 23 / 24 / 0: Basic functions are fully enabled. 25 / 1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename() 26 / are removed. 27 / 2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1. 28 / 3: f_lseek() function is removed in addition to 2. */ 29 30 31 #define FF_USE_FIND 0 32 /* This option switches filtered directory read functions, f_findfirst() and 33 / f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */ 34 35 36 #if defined(CONFIG_FS_FATFS_MKFS) 37 #define FF_USE_MKFS CONFIG_FS_FATFS_MKFS 38 #else 39 #define FF_USE_MKFS 1 40 #endif 41 /* This option switches f_mkfs() function. (0:Disable or 1:Enable) */ 42 43 44 #define FF_USE_FASTSEEK 0 45 /* This option switches fast seek function. (0:Disable or 1:Enable) */ 46 47 48 #define FF_USE_EXPAND 0 49 /* This option switches f_expand function. (0:Disable or 1:Enable) */ 50 51 52 #define FF_USE_CHMOD 0 53 /* This option switches attribute manipulation functions, f_chmod() and f_utime(). 54 / (0:Disable or 1:Enable) Also FF_FS_READONLY needs to be 0 to enable this option. */ 55 56 57 #define FF_USE_LABEL 0 58 /* This option switches volume label functions, f_getlabel() and f_setlabel(). 59 / (0:Disable or 1:Enable) */ 60 61 62 #define FF_USE_FORWARD 0 63 /* This option switches f_forward() function. (0:Disable or 1:Enable) */ 64 65 66 #define FF_USE_STRFUNC 0 67 #define FF_PRINT_LLI 0 68 #define FF_PRINT_FLOAT 0 69 #define FF_STRF_ENCODE 0 70 /* FF_USE_STRFUNC switches string functions, f_gets(), f_putc(), f_puts() and 71 / f_printf(). 72 / 73 / 0: Disable. FF_PRINT_LLI, FF_PRINT_FLOAT and FF_STRF_ENCODE have no effect. 74 / 1: Enable without LF-CRLF conversion. 75 / 2: Enable with LF-CRLF conversion. 76 / 77 / FF_PRINT_LLI = 1 makes f_printf() support long long argument and FF_PRINT_FLOAT = 1/2 78 makes f_printf() support floating point argument. These features want C99 or later. 79 / When FF_LFN_UNICODE >= 1 with LFN enabled, string functions convert the character 80 / encoding in it. FF_STRF_ENCODE selects assumption of character encoding ON THE FILE 81 / to be read/written via those functions. 82 / 83 / 0: ANSI/OEM in current CP 84 / 1: Unicode in UTF-16LE 85 / 2: Unicode in UTF-16BE 86 / 3: Unicode in UTF-8 87 */ 88 89 90 /*---------------------------------------------------------------------------/ 91 / Locale and Namespace Configurations 92 /---------------------------------------------------------------------------*/ 93 94 #if defined(CONFIG_FS_FATFS_CODEPAGE) 95 #define FF_CODE_PAGE CONFIG_FS_FATFS_CODEPAGE 96 #else 97 #define FF_CODE_PAGE 437 98 #endif 99 /* This option specifies the OEM code page to be used on the target system. 100 / Incorrect code page setting can cause a file open failure. 101 / 102 / 437 - U.S. 103 / 720 - Arabic 104 / 737 - Greek 105 / 771 - KBL 106 / 775 - Baltic 107 / 850 - Latin 1 108 / 852 - Latin 2 109 / 855 - Cyrillic 110 / 857 - Turkish 111 / 860 - Portuguese 112 / 861 - Icelandic 113 / 862 - Hebrew 114 / 863 - Canadian French 115 / 864 - Arabic 116 / 865 - Nordic 117 / 866 - Russian 118 / 869 - Greek 2 119 / 932 - Japanese (DBCS) 120 / 936 - Simplified Chinese (DBCS) 121 / 949 - Korean (DBCS) 122 / 950 - Traditional Chinese (DBCS) 123 / 0 - Include all code pages above and configured by f_setcp() 124 */ 125 126 #if defined(CONFIG_FS_FATFS_LFN) 127 #if CONFIG_FS_FATFS_LFN_MODE_BSS 128 #define FF_USE_LFN 1 129 #elif CONFIG_FS_FATFS_LFN_MODE_STACK 130 #define FF_USE_LFN 2 131 #elif CONFIG_FS_FATFS_LFN_MODE_HEAP 132 #define FF_USE_LFN 3 133 #else 134 #error Invalid LFN buffer location 135 #endif /* CONFIG_FS_FATFS_LFN_MODE_BSS */ 136 #else 137 #define FF_USE_LFN 0 138 #endif /* defined(CONFIG_FS_FATFS_LFN) */ 139 #if defined(CONFIG_FS_FATFS_MAX_LFN) 140 #define FF_MAX_LFN CONFIG_FS_FATFS_MAX_LFN 141 #else 142 #define FF_MAX_LFN 255 143 #endif /* defined(CONFIG_FS_FATFS_MAX_LFN) */ 144 /* The FF_USE_LFN switches the support of long file name (LFN). 145 / 146 / 0: Disable LFN. FF_MAX_LFN has no effect. 147 / 1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe. 148 / 2: Enable LFN with dynamic working buffer on the STACK. 149 / 3: Enable LFN with dynamic working buffer on the HEAP. 150 / 151 / To enable the LFN, ffunicode.c needs to be added to the project. The LFN function 152 / requiers certain internal working buffer occupies (FF_MAX_LFN + 1) * 2 bytes and 153 / additional (FF_MAX_LFN + 44) / 15 * 32 bytes when exFAT is enabled. 154 / The FF_MAX_LFN defines size of the working buffer in UTF-16 code unit and it can 155 / be in range of 12 to 255. It is recommended to be set it 255 to fully support LFN 156 / specification. 157 / When use stack for the working buffer, take care on stack overflow. When use heap 158 / memory for the working buffer, memory management functions, ff_memalloc() and 159 / ff_memfree() exemplified in ffsystem.c, need to be added to the project. */ 160 161 162 #define FF_LFN_UNICODE 0 163 /* This option switches the character encoding on the API when LFN is enabled. 164 / 165 / 0: ANSI/OEM in current CP (TCHAR = char) 166 / 1: Unicode in UTF-16 (TCHAR = WCHAR) 167 / 2: Unicode in UTF-8 (TCHAR = char) 168 / 3: Unicode in UTF-32 (TCHAR = DWORD) 169 / 170 / Also behavior of string I/O functions will be affected by this option. 171 / When LFN is not enabled, this option has no effect. */ 172 173 174 #define FF_LFN_BUF 255 175 #define FF_SFN_BUF 12 176 /* This set of options defines size of file name members in the FILINFO structure 177 / which is used to read out directory items. These values should be suffcient for 178 / the file names to read. The maximum possible length of the read file name depends 179 / on character encoding. When LFN is not enabled, these options have no effect. */ 180 181 182 #define FF_FS_RPATH 0 183 /* This option configures support for relative path. 184 / 185 / 0: Disable relative path and remove related functions. 186 / 1: Enable relative path. f_chdir() and f_chdrive() are available. 187 / 2: f_getcwd() function is available in addition to 1. 188 */ 189 190 191 /*---------------------------------------------------------------------------/ 192 / Drive/Volume Configurations 193 /---------------------------------------------------------------------------*/ 194 195 #if defined(CONFIG_FS_FATFS_VOLUMES) 196 #define FF_VOLUMES CONFIG_FS_FATFS_VOLUMES 197 #else 198 #define FF_VOLUMES 8 199 #endif 200 /* Number of volumes (logical drives) to be used. */ 201 202 203 #define FF_STR_VOLUME_ID 1 204 #define FF_VOLUME_STRS "RAM","NAND","CF","SD","SD2","USB","USB2","USB3" 205 /* FF_STR_VOLUME_ID switches support for volume ID in arbitrary strings. 206 / When FF_STR_VOLUME_ID is set to 1 or 2, arbitrary strings can be used as drive 207 / number in the path name. FF_VOLUME_STRS defines the volume ID strings for each 208 / logical drives. Number of items must not be less than FF_VOLUMES. Valid 209 / characters for the volume ID strings are A-Z, a-z and 0-9, however, they are 210 / compared in case-insensitive. If FF_STR_VOLUME_ID >= 1 and FF_VOLUME_STRS is 211 / not defined, a user defined volume string table needs to be defined as: 212 / 213 / const char* VolumeStr[FF_VOLUMES] = {"ram","flash","sd","usb",... 214 */ 215 216 217 #define FF_MULTI_PARTITION 0 218 /* This option switches support for multiple volumes on the physical drive. 219 / By default (0), each logical drive number is bound to the same physical drive 220 / number and only an FAT volume found on the physical drive will be mounted. 221 / When this function is enabled (1), each logical drive number can be bound to 222 / arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk() 223 / funciton will be available. */ 224 225 226 #define FF_MIN_SS 512 227 #if defined(CONFIG_FS_FATFS_MAX_SS) 228 #define FF_MAX_SS CONFIG_FS_FATFS_MAX_SS 229 #else 230 #define FF_MAX_SS 512 231 #endif /* defined(CONFIG_FS_FATFS_MAX_SS) */ 232 /* This set of options configures the range of sector size to be supported. (512, 233 / 1024, 2048 or 4096) Always set both 512 for most systems, generic memory card and 234 / harddisk, but a larger value may be required for on-board flash memory and some 235 / type of optical media. When FF_MAX_SS is larger than FF_MIN_SS, FatFs is configured 236 / for variable sector size mode and disk_ioctl() function needs to implement 237 / GET_SECTOR_SIZE command. */ 238 239 240 #define FF_LBA64 0 241 /* This option switches support for 64-bit LBA. (0:Disable or 1:Enable) 242 / To enable the 64-bit LBA, also exFAT needs to be enabled. (FF_FS_EXFAT == 1) */ 243 244 245 #define FF_MIN_GPT 0x10000000 246 /* Minimum number of sectors to switch GPT as partitioning format in f_mkfs and 247 / f_fdisk function. 0x100000000 max. This option has no effect when FF_LBA64 == 0. */ 248 249 250 #define FF_USE_TRIM 0 251 /* This option switches support for ATA-TRIM. (0:Disable or 1:Enable) 252 / To enable Trim function, also CTRL_TRIM command should be implemented to the 253 / disk_ioctl() function. */ 254 255 256 257 /*---------------------------------------------------------------------------/ 258 / System Configurations 259 /---------------------------------------------------------------------------*/ 260 261 #define FF_FS_TINY 1 262 /* This option switches tiny buffer configuration. (0:Normal or 1:Tiny) 263 / At the tiny configuration, size of file object (FIL) is shrinked FF_MAX_SS bytes. 264 / Instead of private sector buffer eliminated from the file object, common sector 265 / buffer in the filesystem object (FATFS) is used for the file data transfer. */ 266 267 268 #if defined(CONFIG_FS_FATFS_EXFAT) 269 #define FF_FS_EXFAT CONFIG_FS_FATFS_EXFAT 270 #else 271 #define FF_FS_EXFAT 0 272 #endif 273 /* This option switches support for exFAT filesystem. (0:Disable or 1:Enable) 274 / To enable exFAT, also LFN needs to be enabled. (FF_USE_LFN >= 1) 275 / Note that enabling exFAT discards ANSI C (C89) compatibility. */ 276 277 278 #define FF_FS_NORTC 1 279 #define FF_NORTC_MON 1 280 #define FF_NORTC_MDAY 1 281 #define FF_NORTC_YEAR 2020 282 /* The option FF_FS_NORTC switches timestamp functiton. If the system does not have 283 / any RTC function or valid timestamp is not needed, set FF_FS_NORTC = 1 to disable 284 / the timestamp function. Every object modified by FatFs will have a fixed timestamp 285 / defined by FF_NORTC_MON, FF_NORTC_MDAY and FF_NORTC_YEAR in local time. 286 / To enable timestamp function (FF_FS_NORTC = 0), get_fattime() function need to be 287 / added to the project to read current time form real-time clock. FF_NORTC_MON, 288 / FF_NORTC_MDAY and FF_NORTC_YEAR have no effect. 289 / These options have no effect in read-only configuration (FF_FS_READONLY = 1). */ 290 291 292 #define FF_FS_NOFSINFO 0 293 /* If you need to know correct free space on the FAT32 volume, set bit 0 of this 294 / option, and f_getfree() function at first time after volume mount will force 295 / a full FAT scan. Bit 1 controls the use of last allocated cluster number. 296 / 297 / bit0=0: Use free cluster count in the FSINFO if available. 298 / bit0=1: Do not trust free cluster count in the FSINFO. 299 / bit1=0: Use last allocated cluster number in the FSINFO if available. 300 / bit1=1: Do not trust last allocated cluster number in the FSINFO. 301 */ 302 303 304 #define FF_FS_LOCK 0 305 /* The option FF_FS_LOCK switches file lock function to control duplicated file open 306 / and illegal operation to open objects. This option must be 0 when FF_FS_READONLY 307 / is 1. 308 / 309 / 0: Disable file lock function. To avoid volume corruption, application program 310 / should avoid illegal open, remove and rename to the open objects. 311 / >0: Enable file lock function. The value defines how many files/sub-directories 312 / can be opened simultaneously under file lock control. Note that the file 313 / lock control is independent of re-entrancy. */ 314 315 316 /* #include <somertos.h> // O/S definitions */ 317 #define FF_FS_REENTRANT 0 318 #define FF_FS_TIMEOUT 1000 319 #define FF_SYNC_t HANDLE 320 /* The option FF_FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs 321 / module itself. Note that regardless of this option, file access to different 322 / volume is always re-entrant and volume control functions, f_mount(), f_mkfs() 323 / and f_fdisk() function, are always not re-entrant. Only file/directory access 324 / to the same volume is under control of this function. 325 / 326 / 0: Disable re-entrancy. FF_FS_TIMEOUT and FF_SYNC_t have no effect. 327 / 1: Enable re-entrancy. Also user provided synchronization handlers, 328 / ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj() 329 / function, must be added to the project. Samples are available in 330 / option/syscall.c. 331 / 332 / The FF_FS_TIMEOUT defines timeout period in unit of time tick. 333 / The FF_SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*, 334 / SemaphoreHandle_t and etc. A header file for O/S definitions needs to be 335 / included somewhere in the scope of ff.h. */ 336 337 338 339 /*--- End of configuration options ---*/ 340