It is generally not recommended to hard-code physical on-NAND locations
in case of factory bad blocks or block failures in the field.
 Instead it is preferable to set up
partitions on the chip with a generous safety
margin and to store data in a location-independent way. This is
commonly achieved by placing logical tags in the spare area of each
page, or using a log-structured filesystem such as YAFFS. Such
strategies remove the dependence on physical addressing, at the cost of
The upshot of this is that you cannot reliably create a simple
binary image to bulk-program in the factory. A more complicated
programming operation is required to take account of your chip
partitions, logical addressing strategy and any bad blocks which
may be encountered during write.