NAND flash memory is not an XIP device; it requires shadowing before the code can be executed. ROM code support for the NAND flash devices has the following characteristics:
- The GPMC is the communication interface.
- Device from 512 Mibit (64 MiB) to 64 Gibit (8 GiB)
- ×8 and ×16 bus width
- Support for large page size (2048 bytes + 64 spare bytes) or very large page size (4096 bytes + 128/218 spare bytes)
- Chip enable (CE) don't-care devices only
- Single-level cell (SLC) and multilevel cell (MLC) devices
- Device identification based on ONFI or ROM table
- Note that the full ONFI spec is not supported – specifically, the NAND geometry identification uses the first parameter page only and doesn’t check CRC on that page
- ECC correction: 8 bits per sector for most devices (16 bits per sector for devices with large spare area)
- Note that ECC detection/correction is not used on ONFI parameter pages
- GPMC timings are adjusted for NAND access.
- The GPMC clock is 133 MHz.
- The device is connected to CS0.
- The gpmc_wait0 wait-pin signal is connected to the NAND BUSY output.
- Four physical blocks are searched for an image. Block size depends on the device.
For NAND memory booting, no user intervention is needed; the information in the following subsections is included for debugging. Only the CH, which is not mandatory, lets the user change clock settings and GPMC parameters. Failure in CH copying causes a return to the main booting procedure, which selects the next device for booting.