| # Copyright (c) 2016 Intel Corporation |
| # Copyright (c) 2020 Nordic Semiconductor ASA |
| # Copyright (c) 2023 Husqvarna AB |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| config FAT_FILESYSTEM_ELM |
| bool "ELM FAT file system support" |
| depends on FILE_SYSTEM |
| select DISK_ACCESS |
| help |
| Use the ELM FAT File system implementation. |
| |
| if FAT_FILESYSTEM_ELM |
| |
| menu "ELM FAT file system settings" |
| visible if FAT_FILESYSTEM_ELM |
| |
| config FS_FATFS_READ_ONLY |
| bool "Read-only support for all volumes" |
| help |
| Excludes write code from ELM FAT file system driver. |
| Select this when using FAT for read-only access to slightly |
| reduce code size. |
| This option affects FF_FS_READONLY defined in ffconf.h, inside |
| ELM FAT module. |
| |
| config FS_FATFS_MKFS |
| bool "mkfs support for FAT FS" |
| depends on !FS_FATFS_READ_ONLY |
| default y if FILE_SYSTEM_MKFS |
| help |
| Adds code for creating disks with FAT file system. |
| This option affects FF_USE_MKFS defined in ffconf.h, inside |
| ELM FAT module. |
| |
| config FS_FATFS_MOUNT_MKFS |
| bool "Allow formatting volume when mounting fails" |
| default y |
| select FS_FATFS_MKFS |
| help |
| This option adds code that allows fs_mount to attempt to format |
| a volume if no file system is found. |
| If formatting is not needed, disabling this flag will slightly |
| reduce application size. |
| Note: This option is destructive to data and will automatically |
| destroy your disk, if mount attempt fails. In case when your |
| disk can be detached from a device and recovered using other |
| system, it may be worth disabling this option. |
| When this option is disabled, disk needs to be FAT formatted |
| prior to connecting to a device, otherwise it will not be |
| mountable. |
| |
| if FS_FATFS_MKFS |
| |
| config FS_FATFS_MAX_ROOT_ENTRIES |
| int "Max number of entries in FAT FS root directory" |
| default 512 |
| range 1 32768 |
| help |
| Sets how many root directory entries will be allocated when |
| formatting new FAT system to a device. |
| Note that this should be multiply of FS_FATFS_MAX_SS / 32. |
| |
| endif # FS_FATFS_MKFS |
| |
| config FS_FATFS_EXFAT |
| bool "ExFAT support" |
| select FS_FATFS_LFN |
| help |
| Enable the exFAT format support for FatFs. |
| |
| config FS_FATFS_NUM_FILES |
| int "Maximum number of opened files" |
| default 4 |
| help |
| Affects how many file objects area available for parallel |
| use by FAT driver. Each object is of size sizeof(FIL), where |
| FIL is defined in ff.h of ELM FAT driver, and is pre-allocated |
| at compile-time. |
| This affects use of fs_open on FAT type mounted file systems. |
| |
| config FS_FATFS_NUM_DIRS |
| int "Maximum number of opened directories" |
| default 4 |
| help |
| Affects how many directory objects area available for parallel |
| use by FAT driver. Each object is of size sizeof(DIR), where |
| DIR is defined in ff.h of ELM FAT driver, and is pre-allocated |
| at compile-time. |
| This affects use of fs_opendir on FAT type mounted file systems. |
| |
| config FS_FATFS_HAS_RTC |
| bool "Timestamping support" |
| help |
| Enable file system timestamping instead of using a hardcoded date |
| for all operations. Requires an application supplied implementation |
| of `get_fattime`. Format of the uint32_t bits are as follows: |
| 31:25 = Year from 1980 |
| 24:21 = Month (1..12) |
| 20:16 = Day of month (1..31) |
| 15:11 = Hour (0..23) |
| 10: 5 = Minute (0..59) |
| 4: 0 = Seconds/2 (0..29) |
| |
| config FS_FATFS_EXTRA_NATIVE_API |
| bool "Additional native API functions" |
| help |
| Enable the following additional native API functions that do not have |
| an equivalent in the Zephyr VFS API: |
| * `f_getlabel` |
| * `f_setlabel` |
| * `f_expand` |
| * `f_findfirst` |
| * `f_findnext` |
| |
| config FS_FATFS_LFN |
| bool "Long filenames (LFN)" |
| help |
| Without long filenames enabled, file names are limited to 8.3 format. |
| This option increases working buffer size. |
| |
| if FS_FATFS_LFN |
| |
| choice FS_FATFS_LFN_MODE |
| prompt "LFN memory mode" |
| default FS_FATFS_LFN_MODE_BSS |
| |
| config FS_FATFS_LFN_MODE_BSS |
| bool "Static buffer" |
| help |
| Enable LFN with static working buffer on the BSS. Always NOT thread-safe. |
| This option affects FF_USE_LFN defined in ffconf.h, inside |
| ELM FAT module, by setting its value to 1. |
| |
| config FS_FATFS_LFN_MODE_STACK |
| bool "Stack buffer" |
| help |
| Enable LFN with dynamic working buffer on the STACK. |
| This option affects FF_USE_LFN defined in ffconf.h, inside |
| ELM FAT module, by setting its value to 2. |
| |
| config FS_FATFS_LFN_MODE_HEAP |
| bool "Heap buffer" |
| depends on HEAP_MEM_POOL_SIZE > 0 |
| help |
| Enable LFN with dynamic working buffer on the HEAP. |
| This option affects FF_USE_LFN defined in ffconf.h, inside |
| ELM FAT module, by setting its value to 3. |
| |
| endchoice |
| |
| config FS_FATFS_FF_USE_LFN |
| int |
| default 1 if FS_FATFS_LFN_MODE_BSS |
| default 2 if FS_FATFS_LFN_MODE_STACK |
| default 3 if FS_FATFS_LFN_MODE_HEAP |
| help |
| Translates FS_FATFS_LFN_MODE selection to FF_USE_LFN, defined in ffconf.h, |
| inside ELM FAT module. |
| |
| config FS_FATFS_MAX_LFN |
| int "Max filename length" |
| range 12 $(UINT8_MAX) |
| default $(UINT8_MAX) |
| help |
| The working buffer occupies (FS_FATFS_MAX_LFN + 1) * 2 bytes and |
| additional 608 bytes at exFAT enabled. |
| It should be set 255 to support full featured LFN operations. |
| |
| endif # FS_FATFS_LFN |
| |
| config FS_FATFS_CODEPAGE |
| int "FatFS code page (character set)" |
| default 437 |
| help |
| Valid code page values: |
| 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) |
| 0 - Include all supported code pages |
| This option affects FF_CODE_PAGE defined in ffconf.h, inside |
| ELM FAT module. |
| |
| config FS_FATFS_MAX_SS |
| int "Maximum supported sector size" |
| range 512 4096 |
| default 512 |
| help |
| Value set here will be used as maximum supported read/write |
| sector size, with 512 being minimum value. |
| Option affects write/read granularity and will increase |
| size of buffers used by FAT driver, which in practice affects |
| how much RAM each FATFS object, used with FAT mount point, |
| requires, which is this value plus some constant amount, |
| independent from this setting. |
| This will affect your compile time RAM allocation, when |
| mount point is defined as static/global life time variable, |
| or stack. |
| When this value is set to 512, all mount points will use |
| 512 as sector size, all other values will cause FAT driver |
| to query device for sector size on mount. |
| This option affects FF_MAX_SS defined in ffconf.h, inside |
| ELM FAT module. |
| |
| config FS_FATFS_MIN_SS |
| int "Minimum expected sector size" |
| range 512 FS_FATFS_MAX_SS |
| default 512 |
| help |
| Specifies minimum sector size the FAT FS driver is expected to |
| support. Set this to FS_FATFS_MAX_FS when you have single |
| device with FAT FS or all connected devices use the same |
| sector size, to have slight reduction in code in FAT FS driver. |
| The reduction comes from the fact that FAT FS does not have to |
| query every connected device for sector size. |
| This option affects FF_MIN_SS defined in ffconf.h, inside |
| ELM FAT module. |
| |
| config FS_FATFS_WINDOW_ALIGNMENT |
| int "Memory alignment for the member \"win\" in FATFS" |
| default 1 |
| help |
| Specifies alignment, in bytes of FAT FS window buffer that is |
| used for device's read/write operations. MMC controllers may |
| require read/write buffer to start at memory address with |
| specific alignment, for example 16 or 512 bytes, the value |
| provided here is used as such alignment. Note that the window |
| buffer is internal element of FATFS structure, which means |
| that, in worst scenario, value provided here may cause FATFS |
| structure to have size of twice the value. |
| |
| config FS_FATFS_REENTRANT |
| bool "FatFs reentrant" |
| depends on !FS_FATFS_LFN_MODE_BSS |
| help |
| Enable the FatFs re-entrancy (thread safe) option for file/directory |
| access for each volume. Will create a zephyr mutex object for each |
| FatFs volume and a FatFs system mutex. |
| |
| config FS_FATFS_LBA64 |
| bool "Support for 64-bit LBA" |
| depends on FS_FATFS_EXFAT |
| help |
| This option enables support for 64-bit LBA, which also |
| enables GPT support. |
| |
| config FS_FATFS_MULTI_PARTITION |
| bool "Support for multiple volumes on the physical drive" |
| help |
| When this function is enabled, each logical drive number can |
| be bound to arbitrary physical drive and partition listed |
| in the VolToPart[] of the fatfs module. The VolToPart[] is expected to be |
| provided by Zephyr application. |
| The mount points have to be numbered in this case. |
| For example, 2 FAT partition on SD disk (3) in terms of Zephyr: |
| {3, 1} - mount point "/0:" |
| {3, 2} - mount point "/1:" |
| When disabled (default), each logical drive number is bound to the same |
| physical drive number and only an FAT volume found on the physical drive |
| will be mounted. |
| |
| endmenu |
| |
| endif # FAT_FILESYSTEM_ELM |