NOTICE: This website will be shut down in the near future. Product content has moved to Forum content and FAQs have been moved to We encourage you to create a user account on to use the new community forums and access NXP microcontroller content. We greatly appreciate your contributions and look forward to seeing you at our new web location.


Production NAND programming for the LPC32x0

NOTE: This document is a work in progress. Some areas may not yet be complete.

This online application note provides a possible approach to production burning of NAND FLASH devices for use with the LPC32x0 boot ROM for boot from FLASH. By production burning, the intention is to burn the boot images in NAND FLASH prior to the FLASH device being placed on the production board.

To do this, the production burn process needs to take into consideration the following aspects of the LPC32x0, the NAND devices, and the software expected to operate on the LPC32x0.

Device specific

* New NAND devices may contain factory marked bad blocks that vary per device in location and quantity

LPC32x0 specific

   * The LPC32x0 has 2 NAND controllers - SLC and MLC - and each has different ECC algorithm, storage, and layout requirements
   * The MLC data and ECC location is non-changeable
   * The SLC data and ECC location is configurable
   * The MLC data and ECC requirements will overwrite factory bad block markers
   * The LPC32x0 can boot from NAND with only a MLC data/ECC formatted page
   * The LCP32x0 can boot from NAND with a maximum size of a single block minus 1 page, or 56K. For small block devices, this means 15.5K max boot size, while large block devices can boot 56K.

System/software specific

  * Operating systems such as Linux usually slice up NAND into partitions. Depending on bad block location, the storage of data in these partitions in specific NAND blocks may vary per device/system
   * Some extra space in a partition needs to be allocated for bad blocks
   * Some Operating Systems require the spare data area to be configured also (MTD OOB data area in Linux for JFFS2)

Your rating: None Average: 4 (1 vote)