NAND Device Manager
NAND Device Manager from Blunk Microsystems supports the following features:
- Reliable bad block manager. Detects both initial bad blocks and blocks that fail during operation. Performs bad block recovery without user intervention. After detection, bad blocks are neither programmed nor erased. Software layers above TargetNDM see no bad blocks, simplifying their operation.
- Divides flash into partitions with partition information (type, name, first block, and number of blocks) stored non-volatilely. Rich API for managing partitions. Partitions can be created at first initialization or added and deleted during operation. Partitions can span multiple devices.
- Mixed partition types. One could be a TargetXFS volume for its UNIX-like file system features. A second could use TargetFAT for sharing files with a PC on a sector basis over a USB link. Another could be a user-defined volume for storing boot code.
- Hosts multiple volumes without needing to reserve the maximum number of bad blocks for each volume or assuming blocks failures will be distributed evenly. Increases system reliability and utilization percentage.
- Bulk programming of NAND devices for manufacturing via "skip bad block" method. Includes PC tool for creating binary image files for bulk programming.
- “Thin” driver layer performs only the basic operations NAND flash devices support: read, program, erase block, etc. Provided sample drivers are easily ported to any device. Includes driver test program proven useful in detecting both software and hardware flash interface errors.
- Supports Single Level Cell (SLC) and Multi-Level Cell (MLC) NAND flash.
- Software ECC library for 1-bit and 4-bit correction per 512 bytes. ECC is performed in the driver layer, so hardware ECC can be used if available. Available Verilog for 1-bit HW ECC.
- Optional transfer_page() driver routine for faster garbage collection on NAND devices that support page buffer updates to avoid copying data on and off the flash.
- Optional read_pages() and write_pages() driver routines for higher throughput via concurrent page accesses on NAND devices that support this.
- For efficient DMA use, all buffers passed to the driver are aligned on cache line boundaries.
- Optimized for fast initialization and mount times. Supports NVRAM use, if available, to reduce startup time.
- Source code is 100% ANSI C and has been tested using PC-lint and multiple ANSI C compil-ers.
- 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. Includes source code, user's manual, sample drivers, and one year of technical support.