During development there are often situations in which a device is left in an unbootable state. Its flash memory has been erased, or incorrectly written, such that the unit performs no useful operation on startup. Generally, this is also how the units will be initially after assembly. Once in this state specialised tools are required to program the units. Typically, this would be JTAG, involving some kind of external JTAG adapter. This works well, as JTAG gives full access to all elements of the CPU. However, it is not without its drawbacks.
- As standard it requires a 20-way connector, which is quite large in board real-estate.
- It requires dedicated CPU pins to be routed appropriately.
- The software is often not easy to automate reliably for programming units in the factory.
- It requires an external JTAG adapter, and associated software. These are often not easily usable by an inexperienced operator.
- NAND support, for read, write & erase of the on-module NAND devices.
- U-Boot environment support. This allows automatic programing of U-Boot environment variables.
- YAFFS2 image support, allowing creation & writing of a YAFFS2 filesystem directly to the NAND flash.