283 lines
8.8 KiB
Plaintext
283 lines
8.8 KiB
Plaintext
# 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
|