Merge branch 'feature/fatfs_kconfig_options' into 'master'

fatfs: expose some configuration values in Kconfig

See merge request !1415
This commit is contained in:
Angus Gratton 2017-11-11 02:48:15 +08:00
commit bd9c5d9adc
2 changed files with 55 additions and 5 deletions

View file

@ -105,4 +105,49 @@ config FATFS_MAX_LFN
help
Maximum long filename length. Can be reduced to save RAM.
config FATFS_FS_LOCK
int "Number of simultaneously open files protected by lock function"
default 0
range 0 65535
help
This option sets the FATFS configuration value _FS_LOCK.
The option _FS_LOCK switches file lock function to control duplicated file open
and illegal operation to open objects.
* 0: Disable file lock function. To avoid volume corruption, application
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.
Note that the file lock control is independent of re-entrancy.
config FATFS_TIMEOUT_MS
int "Timeout for acquiring a file lock, ms"
default 10000
help
This option sets FATFS configuration value _FS_TIMEOUT, scaled to milliseconds.
Sets the number of milliseconds FATFS will wait to acquire a mutex when
operating on an open file. For example, if one task is performing a lenghty
operation, another task will wait for the first task to release the lock,
and time out after amount of time set by this option.
config FATFS_PER_FILE_CACHE
bool "Use separate cache for each file"
default y
help
This option affects FATFS configuration value _FS_TINY.
If this option is set, _FS_TINY is 0, and each open file has its own cache,
size of the cache is equal to the _MAX_SS variable (512 or 4096 bytes).
This option uses more RAM if more than 1 file is open, but needs less reads
and writes to the storage for some operations.
If this option is not set, _FS_TINY is 1, and single cache is used for
all open files, size is also equal to _MAX_SS variable. This reduces the
amount of heap used when multiple files are open, but increases the number
of read and write operations which FATFS needs to make.
endmenu

View file

@ -1,3 +1,4 @@
#include <sys/param.h>
#include "sdkconfig.h"
/*---------------------------------------------------------------------------/
/ FatFs - FAT file system module configuration file
@ -177,9 +178,13 @@
/ arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk()
/ funciton will be available. */
/* SD card sector size */
#define _SS_SDCARD 512
/* wear_levelling library sector size */
#define _SS_WL CONFIG_WL_SECTOR_SIZE
#define _MIN_SS 512
#define _MAX_SS 4096
#define _MIN_SS MIN(_SS_SDCARD, _SS_WL)
#define _MAX_SS MAX(_SS_SDCARD, _SS_WL)
/* These options configure the range of sector size to be supported. (512, 1024,
/ 2048 or 4096) Always set both 512 for most systems, all type of memory cards and
/ harddisk. But a larger value may be required for on-board flash memory and some
@ -211,7 +216,7 @@
/ System Configurations
/---------------------------------------------------------------------------*/
#define _FS_TINY 0
#define _FS_TINY (!CONFIG_FATFS_PER_FILE_CACHE)
/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny)
/ At the tiny configuration, size of file object (FIL) is reduced _MAX_SS bytes.
/ Instead of private sector buffer eliminated from the file object, common sector
@ -238,7 +243,7 @@
/ These options have no effect at read-only configuration (_FS_READONLY = 1). */
#define _FS_LOCK 0
#define _FS_LOCK CONFIG_FATFS_FS_LOCK
/* The option _FS_LOCK switches file lock function to control duplicated file open
/ and illegal operation to open objects. This option must be 0 when _FS_READONLY
/ is 1.
@ -251,7 +256,7 @@
#define _FS_REENTRANT 1
#define _FS_TIMEOUT 1000
#define _FS_TIMEOUT (CONFIG_FATFS_TIMEOUT_MS / portTICK_PERIOD_MS)
#define _SYNC_t SemaphoreHandle_t
/* The option _FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs
/ module itself. Note that regardless of this option, file access to different