NAND Flash Translation Layer
TargetFTL-NDM™, Blunk Microsystems’ Flash Translation Layer for NAND memories, includes the following features:
- Works under TargetFAT™ and TargetXFS™ to implement reliable, re-entrant file systems on NAND flash. Works standalone to provide a block mode driver for third party file systems. Use of NAND flash media for the backing store is invisible to application layer.
- Provides guaranteed power-fail recovery when used with TargetFAT and TargetXFS, ensuring file system integrity across unexpected shutdowns. Only data written since the last synchronizing operation (fclose(), fflush(), etc.) can be lost. Closed files, directory structures, and files open for reading are never at risk.
- Second-generation virtual to physical page mapping algorithm uses caching for high performance and a minimal customizable RAM footprint. Supports volumes ranging from KBs to TBs in size.
- FTL page map entries are compile-time configurable as 3 or 4 bytes, based on the volume size, for optimal performance and highest flash utilization. (3-byte entries support volumes up to 8GB in size.)
- Integrated with TargetNDM which provides bad block management and the driver interface to the flash memory. ECC error correction is provided at the level of the TargetNDM driver, its hardware interface, or the flash chip itself.
- Erase wear-leveling to prolong life of the flash media. Both dynamic wear-leveling (wear count based free block selection) and static wear-leveling (copying unchanged data to a new block in response to a low block wear count limit) are done, starting when the volume is first initialized. Within a limit, no block will have a higher erase count than other blocks.
- Performs read-wear leveling to avoid errors from repetitively reading the same location. When a read-count threshold is reached, the block is selected for the next garbage collection operation. Copying data to a new location refreshes it. Supports custom read-wear limits.
- As another protection against accumulated read wear, block recycles are automatically performed if the flash driver reports that a corrected bit error threshold is reached. Prevents data loss from later bit errors that exceed the ECC strength.
- Supports all Single Level Cell (SLC) and Multi-Level Cell (MLC) NAND devices. Performs in-order page writes, avoids partial programming (programming a page more than once between block erasures), and uses only 16 spare bytes per page.
- Concurrent use of multiple FTL volumes, each in their own TargetNDM partition. FTL volumes can be permanently installed or added and deleted as needed. Uses per-volume access semaphores to support multi-tasking environments.
- Optional transfer_page() driver routine supports faster garbage collection for NAND flash devices that can perform on-chip transfers, avoiding copying data on and off the chip.
- Background garbage collection. Recycle operations, which convert dirty sectors to free sectors, may be performed in the background by calling vclean() from a low priority task or, for best performance before a planned streaming write, from the application.
- 'resume' operates at startup if the free page count is critically low. Free pages are required for FTL operation. Worst case is when a recycle is interrupted by powerloss. Resume recovers free pages lost by the interrupted recycle operation, guaranteeing the recycle will finish.
- For greater reliability, blocks are erased before their first use since the last start-up, except for block numbers written to erased-block list during unmount. Protects against interrupted page write and block erase commands.
- Scripted testing of powerfail recovery, fatal error handling, ECC error handling, out-of-memory conditions, multitasking reentrancy, and file operation corner cases and regression tests. Tested on big and little-endian CPUs.
- Footprint table shows RAM and .text use for a variety of common configurations. 30-day evaluation allows testing footprint and performance for your target and configuration.
- Binary volume image tool for creating image files for pre-production programming of flash devices using automated programmers from Data I/O, BP Microsystems, etc.
- Optimized for fast initialization and mount times.
- Source code is 100% ANSI C and has been tested using PC-lint and multiple ANSI C compilers.
- Developed using TargetOS™, Blunk Microsystems’ full-featured royalty-free real time operating system. Easily ported to other operating systems and to polling environments that do not use a kernel.
- Royalty-free license. Includes source code, user's manual, sample application, and one year of technical support.