nuttx/fs/spiffs/Kconfig

213 lines
6.4 KiB
Plaintext
Raw Normal View History

This commit brings in an inital port of the SPIFFS flash file system into NuttX. The file system is still untested at this point (and subject to some additional review). It is, however, marked EXPERIMENTAL should this should not cause a problem for anyone. Squashed commit of the following: fs/spiffs: Fix last compilation issue. Now compiles without error. It is still not quite ready for testing as there is additional code review that must be be performed. It is now marked as EXPERIMENTAL so that it can be brought onto the master branch with little risk. fs/spiffs: Remove some dead code. fs/spiffs: Weak start of analysis of spiffs_nucleus.c. Renamed to spiffs_core.c fs/spiffs: Rename spiffs_nucleus.c to spiffs_core.c fs/spiffs: Remove spiffs_config.h. All configuration settings are now available in the SPIFFS Kconfig options. fs/spiffs: Finished review, update, and repartitioning of spiffs_check.c. Added spiffs_check.h. fs/spiffs: Finished review, update, and repartitioning of spiffs_cache.c. Added spiffs_cache.h. fs/spiffs: Clean up some defines used in debug output statements. fs/spiffs: Finished review, update, and repartitioning of spiffs_gc.c. Added spiffs_gc.h. fs/spiffs: Now that VFS interface is completed, I have begun the long march of repartitioning the remaining functionality, reviewing logic, identifying dead code, and cleaning up loose ends. fs/spiffs: Initial integration of MTD interface, replacing the SPIFFS native flash interface. Lots of open issues such as the use of pages vs. blocks vs. erase blocks and units of addresses, offsets, and lengths that are passed in function calls. Remove SPIFFS_USE_MAGIC support. That option (which default to OFF anyway), wrote a magic value at the beginning of every sector and support verifiable identification of the file system. It was not being and used and removing it makes life simpler. fs/spiffs: Remove semaphore lock on the file object structure. Ultimately, the file access must modify the volume and access the volume structue which also has a exclusivity lock. So use of the volume lock alone should be sufficient. Integrated the SPIFFS rename logic into the NuttX VFS. Removed non-standard application calls or convert them to IOCTL commands. These were converted to IOCTL commands: (1) integrity check, (2) garbage collection, and (3) format flash. These were removed: (1) Integrity check callback. These provided a lot of good information about the state of the file system, but such callbacks are not compatible with a POSIX compliant file system. (2) Index maps. The index maps were a performance improvement feature. The user could provide the memory and request that a region of a a file use that memory for improved lookup performance when accessing parts of the file. The fallback is the less performance lookup by traversing the FLASH memory. (3) Removed the quick garbage collection interface (the code is still used internally). Only the full garbage collection is available to the user application via IOCTL. configs/sim/spiffs: A simulator configuration to use for testing SPIFFS. fs/spiffs: Integrate SPIFFS logic into NuttX VFS bind() and unbind() methods. fs/mount/fs_mount.c: Add SPIFFS to the list of drivers that require MTD vs block drivers. fs/spiffs: Trivial changes, mostly from analysis of how to integrate the rename() VFS method. fs/spiffs: Connect NuttX VFS unlink method to the SPIFFS_remove() function. Lots of name-changing. fs/spiffs: Remove non-standard errno support. Remove bogus SPIFFS_LOCK() and SPIFFS_UNLOCK() macros. fs/spiffs: Add NuttX VFS implementation for statfs() method. Clean up some of the accumulating compilation problems. fs/spiffs: Add stat(), truncate() methods. Dummy out unsupport mkdir() and rmdir() methods. fs/spiffs: Replace some of the custom error numbers with standard error numbers. fs/spiffs: Hooks read(), write(), fstat(), ioctl(), opendir(), closedir(), rewindif(), and readdir() into the NuttX VFS. fs/spiffs: Beginning the organization to work with the NuttX VFS. Lots of things are get broken! fs/spiffs: Add spiffs.c which will be the interface between SPIFFS and NuttX. No very close at present, however. fs/spiffs: Clean up some compile problems introduced by coding standard changes. fs/spiffs: A little closer to NuttX coding standard. fs/spiffs: Ran tools/indent.sh against all files. Closer to NuttX coding standard, but needs a lot more effort to be fully compliant. fs/spiffs: This commit brings in version 0.3.7 of Peter Anderson's SPIFFS. The initial commit includes the core FS files (with some definitions destributed to their correct header files) and hooks into the build system.
2018-09-25 02:05:09 +02:00
#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config FS_SPIFFS
bool "SPIFFS File System"
default n
depends on !DISABLE_MOUNTPOINT && ALLOW_BSD_COMPONENTS
select FS_LARGEFILE
This commit brings in an inital port of the SPIFFS flash file system into NuttX. The file system is still untested at this point (and subject to some additional review). It is, however, marked EXPERIMENTAL should this should not cause a problem for anyone. Squashed commit of the following: fs/spiffs: Fix last compilation issue. Now compiles without error. It is still not quite ready for testing as there is additional code review that must be be performed. It is now marked as EXPERIMENTAL so that it can be brought onto the master branch with little risk. fs/spiffs: Remove some dead code. fs/spiffs: Weak start of analysis of spiffs_nucleus.c. Renamed to spiffs_core.c fs/spiffs: Rename spiffs_nucleus.c to spiffs_core.c fs/spiffs: Remove spiffs_config.h. All configuration settings are now available in the SPIFFS Kconfig options. fs/spiffs: Finished review, update, and repartitioning of spiffs_check.c. Added spiffs_check.h. fs/spiffs: Finished review, update, and repartitioning of spiffs_cache.c. Added spiffs_cache.h. fs/spiffs: Clean up some defines used in debug output statements. fs/spiffs: Finished review, update, and repartitioning of spiffs_gc.c. Added spiffs_gc.h. fs/spiffs: Now that VFS interface is completed, I have begun the long march of repartitioning the remaining functionality, reviewing logic, identifying dead code, and cleaning up loose ends. fs/spiffs: Initial integration of MTD interface, replacing the SPIFFS native flash interface. Lots of open issues such as the use of pages vs. blocks vs. erase blocks and units of addresses, offsets, and lengths that are passed in function calls. Remove SPIFFS_USE_MAGIC support. That option (which default to OFF anyway), wrote a magic value at the beginning of every sector and support verifiable identification of the file system. It was not being and used and removing it makes life simpler. fs/spiffs: Remove semaphore lock on the file object structure. Ultimately, the file access must modify the volume and access the volume structue which also has a exclusivity lock. So use of the volume lock alone should be sufficient. Integrated the SPIFFS rename logic into the NuttX VFS. Removed non-standard application calls or convert them to IOCTL commands. These were converted to IOCTL commands: (1) integrity check, (2) garbage collection, and (3) format flash. These were removed: (1) Integrity check callback. These provided a lot of good information about the state of the file system, but such callbacks are not compatible with a POSIX compliant file system. (2) Index maps. The index maps were a performance improvement feature. The user could provide the memory and request that a region of a a file use that memory for improved lookup performance when accessing parts of the file. The fallback is the less performance lookup by traversing the FLASH memory. (3) Removed the quick garbage collection interface (the code is still used internally). Only the full garbage collection is available to the user application via IOCTL. configs/sim/spiffs: A simulator configuration to use for testing SPIFFS. fs/spiffs: Integrate SPIFFS logic into NuttX VFS bind() and unbind() methods. fs/mount/fs_mount.c: Add SPIFFS to the list of drivers that require MTD vs block drivers. fs/spiffs: Trivial changes, mostly from analysis of how to integrate the rename() VFS method. fs/spiffs: Connect NuttX VFS unlink method to the SPIFFS_remove() function. Lots of name-changing. fs/spiffs: Remove non-standard errno support. Remove bogus SPIFFS_LOCK() and SPIFFS_UNLOCK() macros. fs/spiffs: Add NuttX VFS implementation for statfs() method. Clean up some of the accumulating compilation problems. fs/spiffs: Add stat(), truncate() methods. Dummy out unsupport mkdir() and rmdir() methods. fs/spiffs: Replace some of the custom error numbers with standard error numbers. fs/spiffs: Hooks read(), write(), fstat(), ioctl(), opendir(), closedir(), rewindif(), and readdir() into the NuttX VFS. fs/spiffs: Beginning the organization to work with the NuttX VFS. Lots of things are get broken! fs/spiffs: Add spiffs.c which will be the interface between SPIFFS and NuttX. No very close at present, however. fs/spiffs: Clean up some compile problems introduced by coding standard changes. fs/spiffs: A little closer to NuttX coding standard. fs/spiffs: Ran tools/indent.sh against all files. Closer to NuttX coding standard, but needs a lot more effort to be fully compliant. fs/spiffs: This commit brings in version 0.3.7 of Peter Anderson's SPIFFS. The initial commit includes the core FS files (with some definitions destributed to their correct header files) and hooks into the build system.
2018-09-25 02:05:09 +02:00
---help---
Build the SPIFFS file system. This is a port of version 0.3.7 of
the SPIFFS file system by Peter Andersson. It was originally
released under the MIT license.
if FS_SPIFFS
comment "In-memory Cache Options"
config SPIFFS_CACHE_SIZE
int "Size of the cache"
default 8192
config SPIFFS_CACHE_HITSCORE
int "Cache Hit Score"
default 4
range 1 255
---help---
Temporal file cache hit score. Each time a file is opened, all
cached files will lose one point. If the opened file is found in
cache, that entry will gain CONFIG_SPIFFS_CACHE_HITSCORE points.
One can experiment with this value for the specific access patterns
of the application. However, it must be between 1 (no gain for
hitting a cached entry often) and 255.
config SPIFFS_CACHEDBG
bool "Enable cache debug output"
default n
depends on DEBUG_FS_INFO
---help---
Dumps cache debug output. Depends on CONFIG_DEBUG_FS_INFO
This commit brings in an inital port of the SPIFFS flash file system into NuttX. The file system is still untested at this point (and subject to some additional review). It is, however, marked EXPERIMENTAL should this should not cause a problem for anyone. Squashed commit of the following: fs/spiffs: Fix last compilation issue. Now compiles without error. It is still not quite ready for testing as there is additional code review that must be be performed. It is now marked as EXPERIMENTAL so that it can be brought onto the master branch with little risk. fs/spiffs: Remove some dead code. fs/spiffs: Weak start of analysis of spiffs_nucleus.c. Renamed to spiffs_core.c fs/spiffs: Rename spiffs_nucleus.c to spiffs_core.c fs/spiffs: Remove spiffs_config.h. All configuration settings are now available in the SPIFFS Kconfig options. fs/spiffs: Finished review, update, and repartitioning of spiffs_check.c. Added spiffs_check.h. fs/spiffs: Finished review, update, and repartitioning of spiffs_cache.c. Added spiffs_cache.h. fs/spiffs: Clean up some defines used in debug output statements. fs/spiffs: Finished review, update, and repartitioning of spiffs_gc.c. Added spiffs_gc.h. fs/spiffs: Now that VFS interface is completed, I have begun the long march of repartitioning the remaining functionality, reviewing logic, identifying dead code, and cleaning up loose ends. fs/spiffs: Initial integration of MTD interface, replacing the SPIFFS native flash interface. Lots of open issues such as the use of pages vs. blocks vs. erase blocks and units of addresses, offsets, and lengths that are passed in function calls. Remove SPIFFS_USE_MAGIC support. That option (which default to OFF anyway), wrote a magic value at the beginning of every sector and support verifiable identification of the file system. It was not being and used and removing it makes life simpler. fs/spiffs: Remove semaphore lock on the file object structure. Ultimately, the file access must modify the volume and access the volume structue which also has a exclusivity lock. So use of the volume lock alone should be sufficient. Integrated the SPIFFS rename logic into the NuttX VFS. Removed non-standard application calls or convert them to IOCTL commands. These were converted to IOCTL commands: (1) integrity check, (2) garbage collection, and (3) format flash. These were removed: (1) Integrity check callback. These provided a lot of good information about the state of the file system, but such callbacks are not compatible with a POSIX compliant file system. (2) Index maps. The index maps were a performance improvement feature. The user could provide the memory and request that a region of a a file use that memory for improved lookup performance when accessing parts of the file. The fallback is the less performance lookup by traversing the FLASH memory. (3) Removed the quick garbage collection interface (the code is still used internally). Only the full garbage collection is available to the user application via IOCTL. configs/sim/spiffs: A simulator configuration to use for testing SPIFFS. fs/spiffs: Integrate SPIFFS logic into NuttX VFS bind() and unbind() methods. fs/mount/fs_mount.c: Add SPIFFS to the list of drivers that require MTD vs block drivers. fs/spiffs: Trivial changes, mostly from analysis of how to integrate the rename() VFS method. fs/spiffs: Connect NuttX VFS unlink method to the SPIFFS_remove() function. Lots of name-changing. fs/spiffs: Remove non-standard errno support. Remove bogus SPIFFS_LOCK() and SPIFFS_UNLOCK() macros. fs/spiffs: Add NuttX VFS implementation for statfs() method. Clean up some of the accumulating compilation problems. fs/spiffs: Add stat(), truncate() methods. Dummy out unsupport mkdir() and rmdir() methods. fs/spiffs: Replace some of the custom error numbers with standard error numbers. fs/spiffs: Hooks read(), write(), fstat(), ioctl(), opendir(), closedir(), rewindif(), and readdir() into the NuttX VFS. fs/spiffs: Beginning the organization to work with the NuttX VFS. Lots of things are get broken! fs/spiffs: Add spiffs.c which will be the interface between SPIFFS and NuttX. No very close at present, however. fs/spiffs: Clean up some compile problems introduced by coding standard changes. fs/spiffs: A little closer to NuttX coding standard. fs/spiffs: Ran tools/indent.sh against all files. Closer to NuttX coding standard, but needs a lot more effort to be fully compliant. fs/spiffs: This commit brings in version 0.3.7 of Peter Anderson's SPIFFS. The initial commit includes the core FS files (with some definitions destributed to their correct header files) and hooks into the build system.
2018-09-25 02:05:09 +02:00
comment "Garbage Collection (GC) Options"
config SPIFFS_GC_MAXRUNS
int "Max GC runs"
default 5
---help---
Define maximum number of gc runs to perform to reach desired free
pages.
config SPIFFS_GC_DELWGT
int "Deleted pages weight"
default 5
---help---
Garbage collecting examines all pages in a block which and sums up
to a block score. Deleted pages normally gives positive score and
used pages normally gives a negative score (as these must be moved).
To have a fair wear-leveling, the erase age is also included in
score, whose factor normally is the most positive. The larger the
score, the more likely it is that the block will picked for garbage
collection.
This option provides the weight used for deleted pages.
config SPIFFS_GC_USEDWGT
int "Used pages weight"
default -1
---help---
Garbage collecting examines all pages in a block which and sums up
to a block score. Deleted pages normally gives positive score and
used pages normally gives a negative score (as these must be moved).
To have a fair wear-leveling, the erase age is also included in
score, whose factor normally is the most positive. The larger the
score, the more likely it is that the block will picked for garbage
collection.
This option provides the weight used for used pages.
config SPIFFS_GC_ERASEAGEWGT
int "Used pages weight"
default 50
---help---
Garbage collecting examines all pages in a block which and sums up
to a block score. Deleted pages normally gives positive score and
used pages normally gives a negative score (as these must be moved).
To have a fair wear-leveling, the erase age is also included in
score, whose factor normally is the most positive. The larger the
score, the more likely it is that the block will picked for garbage
collection.
This option provides the weight used weight used for time between
last erased and erase of this block.
config SPIFFS_GCDBG
bool "Enable garbage collection debug output"
default n
depends on DEBUG_FS_INFO
---help---
Dumps garbage collection debug output. Depends on CONFIG_DEBUG_FS_INFO
This commit brings in an inital port of the SPIFFS flash file system into NuttX. The file system is still untested at this point (and subject to some additional review). It is, however, marked EXPERIMENTAL should this should not cause a problem for anyone. Squashed commit of the following: fs/spiffs: Fix last compilation issue. Now compiles without error. It is still not quite ready for testing as there is additional code review that must be be performed. It is now marked as EXPERIMENTAL so that it can be brought onto the master branch with little risk. fs/spiffs: Remove some dead code. fs/spiffs: Weak start of analysis of spiffs_nucleus.c. Renamed to spiffs_core.c fs/spiffs: Rename spiffs_nucleus.c to spiffs_core.c fs/spiffs: Remove spiffs_config.h. All configuration settings are now available in the SPIFFS Kconfig options. fs/spiffs: Finished review, update, and repartitioning of spiffs_check.c. Added spiffs_check.h. fs/spiffs: Finished review, update, and repartitioning of spiffs_cache.c. Added spiffs_cache.h. fs/spiffs: Clean up some defines used in debug output statements. fs/spiffs: Finished review, update, and repartitioning of spiffs_gc.c. Added spiffs_gc.h. fs/spiffs: Now that VFS interface is completed, I have begun the long march of repartitioning the remaining functionality, reviewing logic, identifying dead code, and cleaning up loose ends. fs/spiffs: Initial integration of MTD interface, replacing the SPIFFS native flash interface. Lots of open issues such as the use of pages vs. blocks vs. erase blocks and units of addresses, offsets, and lengths that are passed in function calls. Remove SPIFFS_USE_MAGIC support. That option (which default to OFF anyway), wrote a magic value at the beginning of every sector and support verifiable identification of the file system. It was not being and used and removing it makes life simpler. fs/spiffs: Remove semaphore lock on the file object structure. Ultimately, the file access must modify the volume and access the volume structue which also has a exclusivity lock. So use of the volume lock alone should be sufficient. Integrated the SPIFFS rename logic into the NuttX VFS. Removed non-standard application calls or convert them to IOCTL commands. These were converted to IOCTL commands: (1) integrity check, (2) garbage collection, and (3) format flash. These were removed: (1) Integrity check callback. These provided a lot of good information about the state of the file system, but such callbacks are not compatible with a POSIX compliant file system. (2) Index maps. The index maps were a performance improvement feature. The user could provide the memory and request that a region of a a file use that memory for improved lookup performance when accessing parts of the file. The fallback is the less performance lookup by traversing the FLASH memory. (3) Removed the quick garbage collection interface (the code is still used internally). Only the full garbage collection is available to the user application via IOCTL. configs/sim/spiffs: A simulator configuration to use for testing SPIFFS. fs/spiffs: Integrate SPIFFS logic into NuttX VFS bind() and unbind() methods. fs/mount/fs_mount.c: Add SPIFFS to the list of drivers that require MTD vs block drivers. fs/spiffs: Trivial changes, mostly from analysis of how to integrate the rename() VFS method. fs/spiffs: Connect NuttX VFS unlink method to the SPIFFS_remove() function. Lots of name-changing. fs/spiffs: Remove non-standard errno support. Remove bogus SPIFFS_LOCK() and SPIFFS_UNLOCK() macros. fs/spiffs: Add NuttX VFS implementation for statfs() method. Clean up some of the accumulating compilation problems. fs/spiffs: Add stat(), truncate() methods. Dummy out unsupport mkdir() and rmdir() methods. fs/spiffs: Replace some of the custom error numbers with standard error numbers. fs/spiffs: Hooks read(), write(), fstat(), ioctl(), opendir(), closedir(), rewindif(), and readdir() into the NuttX VFS. fs/spiffs: Beginning the organization to work with the NuttX VFS. Lots of things are get broken! fs/spiffs: Add spiffs.c which will be the interface between SPIFFS and NuttX. No very close at present, however. fs/spiffs: Clean up some compile problems introduced by coding standard changes. fs/spiffs: A little closer to NuttX coding standard. fs/spiffs: Ran tools/indent.sh against all files. Closer to NuttX coding standard, but needs a lot more effort to be fully compliant. fs/spiffs: This commit brings in version 0.3.7 of Peter Anderson's SPIFFS. The initial commit includes the core FS files (with some definitions destributed to their correct header files) and hooks into the build system.
2018-09-25 02:05:09 +02:00
comment "Consistency Check Options"
config SPIFFS_CHECK_ONMOUNT
bool "Consistency check on mount"
default n
select SPIFFS_CHECK_OUTPUT
---help---
Perhaps a full, extended consistency check on mount. By default, a
simple scan of the file system only is performed.
config SPIFFS_CHECK_OUTPUT
bool "Enable consistency check SYSLOG output"
default n
config SPIFFS_DUMP
bool "Dump Logical FLASH Content"
default n
depends on SPIFFS_CHECK_OUTPUT
---help---
Enables support for the FIOC_DUMP IOCTL command which will dump a
terse summary of the state of each FLASH page.
comment "MTD Interface Options"
config SPIFFS_MTDDBG
bool "Enable MTD Interface DEBUG"
default n
depends on DEBUG_FS_INFO
---help---
Dumps MTD debug output. Depends on CONFIG_DEBUG_FS_INFO
config SPIFFS_MTDDUMP
bool "Enable MTD Data Dump"
default n
depends on SPIFFS_MTDDBG
---help---
Dumps every byte of data going to and coming from FLASH. You
probably do not want this unless you are debugging a particular
MTD interfacing issue.
This commit brings in an inital port of the SPIFFS flash file system into NuttX. The file system is still untested at this point (and subject to some additional review). It is, however, marked EXPERIMENTAL should this should not cause a problem for anyone. Squashed commit of the following: fs/spiffs: Fix last compilation issue. Now compiles without error. It is still not quite ready for testing as there is additional code review that must be be performed. It is now marked as EXPERIMENTAL so that it can be brought onto the master branch with little risk. fs/spiffs: Remove some dead code. fs/spiffs: Weak start of analysis of spiffs_nucleus.c. Renamed to spiffs_core.c fs/spiffs: Rename spiffs_nucleus.c to spiffs_core.c fs/spiffs: Remove spiffs_config.h. All configuration settings are now available in the SPIFFS Kconfig options. fs/spiffs: Finished review, update, and repartitioning of spiffs_check.c. Added spiffs_check.h. fs/spiffs: Finished review, update, and repartitioning of spiffs_cache.c. Added spiffs_cache.h. fs/spiffs: Clean up some defines used in debug output statements. fs/spiffs: Finished review, update, and repartitioning of spiffs_gc.c. Added spiffs_gc.h. fs/spiffs: Now that VFS interface is completed, I have begun the long march of repartitioning the remaining functionality, reviewing logic, identifying dead code, and cleaning up loose ends. fs/spiffs: Initial integration of MTD interface, replacing the SPIFFS native flash interface. Lots of open issues such as the use of pages vs. blocks vs. erase blocks and units of addresses, offsets, and lengths that are passed in function calls. Remove SPIFFS_USE_MAGIC support. That option (which default to OFF anyway), wrote a magic value at the beginning of every sector and support verifiable identification of the file system. It was not being and used and removing it makes life simpler. fs/spiffs: Remove semaphore lock on the file object structure. Ultimately, the file access must modify the volume and access the volume structue which also has a exclusivity lock. So use of the volume lock alone should be sufficient. Integrated the SPIFFS rename logic into the NuttX VFS. Removed non-standard application calls or convert them to IOCTL commands. These were converted to IOCTL commands: (1) integrity check, (2) garbage collection, and (3) format flash. These were removed: (1) Integrity check callback. These provided a lot of good information about the state of the file system, but such callbacks are not compatible with a POSIX compliant file system. (2) Index maps. The index maps were a performance improvement feature. The user could provide the memory and request that a region of a a file use that memory for improved lookup performance when accessing parts of the file. The fallback is the less performance lookup by traversing the FLASH memory. (3) Removed the quick garbage collection interface (the code is still used internally). Only the full garbage collection is available to the user application via IOCTL. configs/sim/spiffs: A simulator configuration to use for testing SPIFFS. fs/spiffs: Integrate SPIFFS logic into NuttX VFS bind() and unbind() methods. fs/mount/fs_mount.c: Add SPIFFS to the list of drivers that require MTD vs block drivers. fs/spiffs: Trivial changes, mostly from analysis of how to integrate the rename() VFS method. fs/spiffs: Connect NuttX VFS unlink method to the SPIFFS_remove() function. Lots of name-changing. fs/spiffs: Remove non-standard errno support. Remove bogus SPIFFS_LOCK() and SPIFFS_UNLOCK() macros. fs/spiffs: Add NuttX VFS implementation for statfs() method. Clean up some of the accumulating compilation problems. fs/spiffs: Add stat(), truncate() methods. Dummy out unsupport mkdir() and rmdir() methods. fs/spiffs: Replace some of the custom error numbers with standard error numbers. fs/spiffs: Hooks read(), write(), fstat(), ioctl(), opendir(), closedir(), rewindif(), and readdir() into the NuttX VFS. fs/spiffs: Beginning the organization to work with the NuttX VFS. Lots of things are get broken! fs/spiffs: Add spiffs.c which will be the interface between SPIFFS and NuttX. No very close at present, however. fs/spiffs: Clean up some compile problems introduced by coding standard changes. fs/spiffs: A little closer to NuttX coding standard. fs/spiffs: Ran tools/indent.sh against all files. Closer to NuttX coding standard, but needs a lot more effort to be fully compliant. fs/spiffs: This commit brings in version 0.3.7 of Peter Anderson's SPIFFS. The initial commit includes the core FS files (with some definitions destributed to their correct header files) and hooks into the build system.
2018-09-25 02:05:09 +02:00
comment "SPIFFS Core Options"
config SPIFFS_NO_BLIND_WRITES
bool "No blind writes"
default n
---help---
By default SPIFFS in some cases relies on the property of NOR flash
that bits cannot be set from 0 to 1 by writing and that controllers
will ignore such bit changes. This results in fewer reads as SPIFFS
can in some cases perform blind writes, with all bits set to 1 and
only those it needs reset set to 0. Most of the chips and
controllers allow this behavior, so the default is to use this
technique. If your controller is one of the rare ones that don't,
turn this option on and SPIFFS will perform a read-modify-write
instead.
config SPIFFS_PAGE_CHECK
bool "Check Page Headers"
default y
---help---
Always check header of each accessed page to ensure consistent state.
If enabled it will increase number of reads, will increase flash.
config SPIFFS_NAME_MAX
int "Maximum Name Length"
default 32
---help---
Object name maximum length. Note that this length include the zero
termination character, meaning maximum string of characters.
Note: This config affects the on-flash structure.
This commit brings in an inital port of the SPIFFS flash file system into NuttX. The file system is still untested at this point (and subject to some additional review). It is, however, marked EXPERIMENTAL should this should not cause a problem for anyone. Squashed commit of the following: fs/spiffs: Fix last compilation issue. Now compiles without error. It is still not quite ready for testing as there is additional code review that must be be performed. It is now marked as EXPERIMENTAL so that it can be brought onto the master branch with little risk. fs/spiffs: Remove some dead code. fs/spiffs: Weak start of analysis of spiffs_nucleus.c. Renamed to spiffs_core.c fs/spiffs: Rename spiffs_nucleus.c to spiffs_core.c fs/spiffs: Remove spiffs_config.h. All configuration settings are now available in the SPIFFS Kconfig options. fs/spiffs: Finished review, update, and repartitioning of spiffs_check.c. Added spiffs_check.h. fs/spiffs: Finished review, update, and repartitioning of spiffs_cache.c. Added spiffs_cache.h. fs/spiffs: Clean up some defines used in debug output statements. fs/spiffs: Finished review, update, and repartitioning of spiffs_gc.c. Added spiffs_gc.h. fs/spiffs: Now that VFS interface is completed, I have begun the long march of repartitioning the remaining functionality, reviewing logic, identifying dead code, and cleaning up loose ends. fs/spiffs: Initial integration of MTD interface, replacing the SPIFFS native flash interface. Lots of open issues such as the use of pages vs. blocks vs. erase blocks and units of addresses, offsets, and lengths that are passed in function calls. Remove SPIFFS_USE_MAGIC support. That option (which default to OFF anyway), wrote a magic value at the beginning of every sector and support verifiable identification of the file system. It was not being and used and removing it makes life simpler. fs/spiffs: Remove semaphore lock on the file object structure. Ultimately, the file access must modify the volume and access the volume structue which also has a exclusivity lock. So use of the volume lock alone should be sufficient. Integrated the SPIFFS rename logic into the NuttX VFS. Removed non-standard application calls or convert them to IOCTL commands. These were converted to IOCTL commands: (1) integrity check, (2) garbage collection, and (3) format flash. These were removed: (1) Integrity check callback. These provided a lot of good information about the state of the file system, but such callbacks are not compatible with a POSIX compliant file system. (2) Index maps. The index maps were a performance improvement feature. The user could provide the memory and request that a region of a a file use that memory for improved lookup performance when accessing parts of the file. The fallback is the less performance lookup by traversing the FLASH memory. (3) Removed the quick garbage collection interface (the code is still used internally). Only the full garbage collection is available to the user application via IOCTL. configs/sim/spiffs: A simulator configuration to use for testing SPIFFS. fs/spiffs: Integrate SPIFFS logic into NuttX VFS bind() and unbind() methods. fs/mount/fs_mount.c: Add SPIFFS to the list of drivers that require MTD vs block drivers. fs/spiffs: Trivial changes, mostly from analysis of how to integrate the rename() VFS method. fs/spiffs: Connect NuttX VFS unlink method to the SPIFFS_remove() function. Lots of name-changing. fs/spiffs: Remove non-standard errno support. Remove bogus SPIFFS_LOCK() and SPIFFS_UNLOCK() macros. fs/spiffs: Add NuttX VFS implementation for statfs() method. Clean up some of the accumulating compilation problems. fs/spiffs: Add stat(), truncate() methods. Dummy out unsupport mkdir() and rmdir() methods. fs/spiffs: Replace some of the custom error numbers with standard error numbers. fs/spiffs: Hooks read(), write(), fstat(), ioctl(), opendir(), closedir(), rewindif(), and readdir() into the NuttX VFS. fs/spiffs: Beginning the organization to work with the NuttX VFS. Lots of things are get broken! fs/spiffs: Add spiffs.c which will be the interface between SPIFFS and NuttX. No very close at present, however. fs/spiffs: Clean up some compile problems introduced by coding standard changes. fs/spiffs: A little closer to NuttX coding standard. fs/spiffs: Ran tools/indent.sh against all files. Closer to NuttX coding standard, but needs a lot more effort to be fully compliant. fs/spiffs: This commit brings in version 0.3.7 of Peter Anderson's SPIFFS. The initial commit includes the core FS files (with some definitions destributed to their correct header files) and hooks into the build system.
2018-09-25 02:05:09 +02:00
config SPIFFS_COPYBUF_STACK
int "Max Stack Allocation"
default 64
---help---
Size of buffer allocated on stack used when copying data. Lower
value generates more read/writes. No meaning having it bigger
than logical page size.
config SPIFFS_COMPAT_OLD_NUTTX
bool "Compatibility with older NuttX SPIFFS"
default n
---help---
2021-02-25 13:48:46 +01:00
Enable the compatibility with older NuttX versions.
(Older than NuttX 11.0.0, where this option was introduced.)
Note: For better compatibility, you may want to disable
CONFIG_SPIFFS_LEADING_SLASH because those versions of NuttX
didn't have the option.
Note: This config affects the on-flash structure.
config SPIFFS_LEADING_SLASH
bool "Prefix every filename with a slash"
default y
---help---
Assume and ensure that on-flash filenames are always prefixed
with a slash.
2021-02-25 13:48:46 +01:00
This enables the compatibility with images generated by
the following tools:
* mkspiffs
* ESP-IDF spiffsgen.py
Note: SPIFFS_NAME_MAX doesn't include the leading slash appended
by this option.
Note: This config affects the on-flash structure.
This commit brings in an inital port of the SPIFFS flash file system into NuttX. The file system is still untested at this point (and subject to some additional review). It is, however, marked EXPERIMENTAL should this should not cause a problem for anyone. Squashed commit of the following: fs/spiffs: Fix last compilation issue. Now compiles without error. It is still not quite ready for testing as there is additional code review that must be be performed. It is now marked as EXPERIMENTAL so that it can be brought onto the master branch with little risk. fs/spiffs: Remove some dead code. fs/spiffs: Weak start of analysis of spiffs_nucleus.c. Renamed to spiffs_core.c fs/spiffs: Rename spiffs_nucleus.c to spiffs_core.c fs/spiffs: Remove spiffs_config.h. All configuration settings are now available in the SPIFFS Kconfig options. fs/spiffs: Finished review, update, and repartitioning of spiffs_check.c. Added spiffs_check.h. fs/spiffs: Finished review, update, and repartitioning of spiffs_cache.c. Added spiffs_cache.h. fs/spiffs: Clean up some defines used in debug output statements. fs/spiffs: Finished review, update, and repartitioning of spiffs_gc.c. Added spiffs_gc.h. fs/spiffs: Now that VFS interface is completed, I have begun the long march of repartitioning the remaining functionality, reviewing logic, identifying dead code, and cleaning up loose ends. fs/spiffs: Initial integration of MTD interface, replacing the SPIFFS native flash interface. Lots of open issues such as the use of pages vs. blocks vs. erase blocks and units of addresses, offsets, and lengths that are passed in function calls. Remove SPIFFS_USE_MAGIC support. That option (which default to OFF anyway), wrote a magic value at the beginning of every sector and support verifiable identification of the file system. It was not being and used and removing it makes life simpler. fs/spiffs: Remove semaphore lock on the file object structure. Ultimately, the file access must modify the volume and access the volume structue which also has a exclusivity lock. So use of the volume lock alone should be sufficient. Integrated the SPIFFS rename logic into the NuttX VFS. Removed non-standard application calls or convert them to IOCTL commands. These were converted to IOCTL commands: (1) integrity check, (2) garbage collection, and (3) format flash. These were removed: (1) Integrity check callback. These provided a lot of good information about the state of the file system, but such callbacks are not compatible with a POSIX compliant file system. (2) Index maps. The index maps were a performance improvement feature. The user could provide the memory and request that a region of a a file use that memory for improved lookup performance when accessing parts of the file. The fallback is the less performance lookup by traversing the FLASH memory. (3) Removed the quick garbage collection interface (the code is still used internally). Only the full garbage collection is available to the user application via IOCTL. configs/sim/spiffs: A simulator configuration to use for testing SPIFFS. fs/spiffs: Integrate SPIFFS logic into NuttX VFS bind() and unbind() methods. fs/mount/fs_mount.c: Add SPIFFS to the list of drivers that require MTD vs block drivers. fs/spiffs: Trivial changes, mostly from analysis of how to integrate the rename() VFS method. fs/spiffs: Connect NuttX VFS unlink method to the SPIFFS_remove() function. Lots of name-changing. fs/spiffs: Remove non-standard errno support. Remove bogus SPIFFS_LOCK() and SPIFFS_UNLOCK() macros. fs/spiffs: Add NuttX VFS implementation for statfs() method. Clean up some of the accumulating compilation problems. fs/spiffs: Add stat(), truncate() methods. Dummy out unsupport mkdir() and rmdir() methods. fs/spiffs: Replace some of the custom error numbers with standard error numbers. fs/spiffs: Hooks read(), write(), fstat(), ioctl(), opendir(), closedir(), rewindif(), and readdir() into the NuttX VFS. fs/spiffs: Beginning the organization to work with the NuttX VFS. Lots of things are get broken! fs/spiffs: Add spiffs.c which will be the interface between SPIFFS and NuttX. No very close at present, however. fs/spiffs: Clean up some compile problems introduced by coding standard changes. fs/spiffs: A little closer to NuttX coding standard. fs/spiffs: Ran tools/indent.sh against all files. Closer to NuttX coding standard, but needs a lot more effort to be fully compliant. fs/spiffs: This commit brings in version 0.3.7 of Peter Anderson's SPIFFS. The initial commit includes the core FS files (with some definitions destributed to their correct header files) and hooks into the build system.
2018-09-25 02:05:09 +02:00
endif # FS_SPIFFS