| ----------------------------- |
| NAND boot on PPC440 platforms |
| ----------------------------- |
| |
| This document describes the U-Boot NAND boot feature as it |
| is implemented for the AMCC Sequoia (PPC440EPx) board. |
| |
| The PPC440EP(x)/GR(x) cpu's can boot directly from NAND FLASH, |
| completely without NOR FLASH. This can be done by using the NAND |
| boot feature of the 440 NAND flash controller (NDFC). |
| |
| Here a short description of the different boot stages: |
| |
| a) IPL (Initial Program Loader, integrated inside CPU) |
| ------------------------------------------------------ |
| Will load first 4k from NAND (SPL) into cache and execute it from there. |
| |
| b) SPL (Secondary Program Loader) |
| --------------------------------- |
| Will load special U-Boot version (NUB) from NAND and execute it. This SPL |
| has to fit into 4kByte. It sets up the CPU and configures the SDRAM |
| controller and the NAND controller so that the special U-Boot image can be |
| loaded from NAND to SDRAM. |
| This special image is build in the directory "nand_spl". |
| |
| c) NUB (NAND U-Boot) |
| -------------------- |
| This NAND U-Boot (NUB) is a special U-Boot version which can be started |
| from RAM. Therefore it mustn't (re-)configure the SDRAM controller. |
| |
| On 440EPx the SPL is copied to internal SRAM before the NAND controller |
| is set up. While still running from cache, I experienced problems accessing |
| the NAND controller. |
| |
| |
| Example: Build and install NAND boot image for Sequoia (440EPx): |
| |
| a) Configure for sequoia with NAND boot support: |
| # make sequoia_nand_config |
| |
| b) Build image(s) |
| # make |
| |
| This will generate the SPL image in the "nand_spl" directory: |
| nand_spl/u-boot-spl.bin |
| Also another image is created spanning a whole NAND block (16kBytes): |
| nand_spl/u-boot-spl-16k.bin |
| The main NAND U-Boot image is generated in the toplevel directory: |
| u-boot.bin |
| A combined image of u-boot-spl-16k.bin and u-boot.bin is also created: |
| u-boot-nand.bin |
| |
| This image should be programmed at offset 0 in the NAND flash: |
| |
| # tftp 100000 /tftpboot/sequoia/u-boot-nand.bin |
| # nand erase 0 60000 |
| # nand write 100000 0 60000 |
| |
| |
| September 07 2006, Stefan Roese <sr@denx.de> |