TargetNDM™ NAND Device Manager

Overview

TargetNDM is a bad block manager for NAND flash memory. It makes NAND flash appear to upper layers as having nothing but good blocks. It also supports partitioning of the flash media, with each partition having always good blocks.

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 for detecting both software and hardware flash interface errors.

  • Supports all parallel and serial Single Level Cell (SLC) and Multi-Level Cell (MLC) NAND flash 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.

  • 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.

  • Optional copy_page() driver routine for faster garbage collection on NAND devices that support page buffer updates to avoid copying data on and off the flash.

  • For efficient DMA use, all buffers passed to the driver are aligned on CPU cache line boundaries.

  • Optimized for fast initialization and mount times. Supports NVRAM use, if available, to reduce startup time.

  • Developed using TargetOS™-Lite, Blunk’s free RTOS. Easily ported to other RTOSes or used in polled mode, without a kernel.

  • Source code is 100% Standard C and has been tested using PC-lint and multiple Standard C compilers, including GCC.

  • Royalty-free license. Includes complete source code, sample applications, sample drivers, user’s manual, and one year of technical support. Electronic delivery via customer-specific web portal.