Embedded NAND Flash File System
A best-of-class state-of-the-art NAND flash file system, liteFS-NAND includes the following features;
- A reliable, high performance, re-entrant UNIX-like embedded file system with a full POSIX and ANSI C compliant application program interface. Use of NAND flash for the backing store is invisible to the application layer.
- Guaranteed file system integrity across unexpected shutdowns. Only data written since the last synchronizing operation can be lost. Closed files, directory structures, and files open for reading are never at risk. An unexpected power loss rolls the volume back to its state at the most recent synchronization, except for any user data that has been overwritten.
- For fully atomic updates, liteFS-NAND can be configured to write modified user data to new logical sectors, so that in between explicit synchronizations, groups of file system updates are atomic. If power is lost prior to completion, the exact volume state at the previous synchronization is restored.
- Implements program-erase wear-leveling to prevent early device failure. Erase cycles are spread evenly across all erasable blocks. The wear count is maintained from the first time a flash volume is formatted. The current wear count and other statistics are provided by vstat().
- Performs read-wear leveling to avoid the bit errors that can result from repetitively reading the same flash location. When a read-count threshold is reached, the affected data is copied to a new location, refreshing its voltage margins.
- Blocks are automatically recycled, their data copied to a new block, when the driver indicates that a corrected bit error threshold is met. This is another protection against data loss due to accumulated read-wear causing bit errors that exceed the ECC strength.
- Supports background garbage collection, to reclaim dirty flash sectors during idle periods or by a low priority task. Otherwise, block erasures are performed just-in-time.
- Manages bad blocks, both initial bad blocks and those that fail during operation. Recovery is performed without user intervention. Once detected, bad blocks are neither programmed nor erased.
- Supports the POSIX "self", "group", and "other" file access protections, allowing applications to restrict some access to privileged tasks.
- Caches both user data and file system metadata for a configurable fixed RAM footprint that performs well with all volume sizes, up to and including Terabytes.
- Optional task-based buffering provides constant streaming rates in spite of intermittent halts in device throughput due to program or erase delays, by either reading-ahead or writing-behind. Enabled by an open() flag, this buffering is otherwise transparent to the application.
- Supports all Single Level Cell (SLC) and Multiple Level Cell (MLC) NAND devices. Performs in-order page writes, avoids partial programming (programming the same page more than once between block erasures), and uses only 16 spare bytes per page.
- Other features: Per-task Current Working Directory support. Use with an RTOS or in polled mode. Sample applications and a driver test application. >= 242 character file names. Includes full 100% ANSI C source code and one-year of technical support.
- At-a-glance image of liteFS-NAND system components.
liteFS-NAND is royalty free. It may only be distributed as fully linked executable code. $5K license limits distribution to 10,000 units and use to one site or three programmers. $5K upgrade removes unit, site, and seat limitations.