incubator-nuttx/fs/nxffs/Kconfig

117 lines
3.9 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config FS_NXFFS
bool "NXFFS file system"
default n
depends on !DISABLE_MOUNTPOINT
---help---
Enable NuttX FLASH file system (NXFF) support.
if FS_NXFFS
config NXFFS_SCAN_VOLUME
bool "Scan volume"
default n
---help---
Scan the media for bad blocks on start-up. If too many bad or
unformatted blocks are found, then re-format the volume. Otherwise,
the volume will be reformatted only if no NXFFS file system is
found.
Why might you want to do this? If too many bad blocks accumulate
over time, then attempting to reformat my be the only way to
recover. And what if you power down the device while formatting
the FLASH so that you have only a partially formatted device?
Scanning the volume can get you out of these situations.
The down side is that scanning the volume can adversely affect
your start-up time. An option is to just erase the FLASH and
reboot in these cases. That can be done with MDIOC_BULKERASE
IOCTL command.
config NXFFS_NAND
bool "Enable NAND support"
default n
depends on EXPERIMENTAL
---help---
NAND differs from other other FLASH types several ways. For one
thing, NAND requires error correction (ECC) bytes that must be set
in order to work around bit failures. This affects NXFFS in two
ways:
First, write failures are not fatal. Rather, they should be tried by
bad blocks and simply ignored. This is because unrecoverable bit
failures will cause read failures when reading from NAND. Setting
this option will enable this behavior.
Secondly, NXFFS will write a block many times. It tries to keep
bits in the erased state and assumes that it can overwrite those
bits to change them from the erased to the non-erased state. This
works will with NOR-like FLASH. NAND behaves this way too. But the
problem with NAND is that the ECC bits cannot be re-written in this
way. So once a block has been written, it cannot be modified. This
behavior has NOT been fixed in NXFFS. Currently, NXFFS will attempt
to re-write the ECC bits causing the ECC to become corrupted because
the ECC bits cannot be overwritten without erasing the entire block.
This may prohibit NXFFS from ever being used with NAND.
config NXFFS_REFORMAT_THRESH
int "Reformat percentage"
default 20
range 0 100
depends on NXFFS_SCAN_VOLUME
---help---
This defines the threshold for re-formatting. Is less than this
percentage of good blocks are found, then the volume is re-
formatted.
config NXFFS_PREALLOCATED
bool "Single, preallocated volume"
default y
---help---
If CONFIG_NXFSS_PREALLOCATED is defined, then this is the single, pre-
allocated NXFFS volume instance. Currently required because full,
dynamic allocation of NXFFS volumes in not yet supported.
config NXFFS_ERASEDSTATE
hex "FLASH erased state"
default 0xff
---help---
The erased state of FLASH.
This must have one of the values of 0xff or 0x00.
Default: 0xff.
config NXFFS_PACKTHRESHOLD
int "Re-packing threshold"
default 32
---help---
When packing flash file data,
don't both with file chunks smaller than this number of data bytes.
Default: 32.
config NXFFS_MAXNAMLEN
int "Maximum file name length"
default 255
---help---
The maximum size of an NXFFS file name.
Default: 255.
config NXFFS_TAILTHRESHOLD
int "Tail threshold"
default 8192
---help---
Clean-up can either mean packing files together toward the end of
the file or, if files are deleted at the end of the file, clean up
can simply mean erasing the end of FLASH memory so that it can be
re-used again. However, doing this can also harm the life of the
FLASH part because it can mean that the tail end of the FLASH is
re-used too often. This threshold determines if/when it is worth
erased the tail end of FLASH and making it available for re-use
(and possible over-wear). Default: 8192.
endif