Summary
=======
The README is for the boot procedure used for TI's OMAP-L138 based
hawkboard. The hawkboard comes with a 128MiB Nand flash and a 128MiB
DDR SDRAM along with a host of other controllers.

The hawkboard is booted in three stages. The initial bootloader which
executes upon reset is the Rom Boot Loader(RBL) which sits in the
internal ROM of the omap. The RBL initialises the memory and the nand
controller, and copies the image stored at a predefined location(block
1) of the nand flash. The image loaded by the RBL to the memory is the
AIS signed nand_spl image. This, in turns copies the u-boot binary
from the nand flash to the memory and jumps to the u-boot entry point.

AIS is an image format defined by TI for the images that are to be
loaded to memory by the RBL. The image is divided into a series of
sections and the image's entry point is specified. Each section comes
with meta data like the target address the section is to be copied to
and the size of the section, which is used by the RBL to load the
image. At the end of the image the RBL jumps to the image entry
point.

The secondary stage bootloader(nand_spl) which is loaded by the RBL
then loads the u-boot from a predefined location in the nand to the
memory and jumps to the u-boot entry point.

The reason a secondary stage bootloader is used is because the ECC
layout expected by the RBL is not the same as that used by
u-boot/linux. This also implies that for flashing the nand_spl image,
we need to use the u-boot which uses the ECC layout expected by the
RBL[1]. Booting u-boot over UART(UART boot) is explained here[2].


Compilation
===========
Three images might be needed

* nand_spl - This is the secondary bootloader which boots the u-boot
  binary.

  hawkboard_nand_config

  The nand_spl ELF gets generated under nand_spl/u-boot-spl. This
  needs to be processed with the AISGen tool for generating the AIS
  signed image to be flashed. Steps for generating the AIS image are
  explained here[3].

* u-boot binary - This is the image flashed to the nand and copied to
  the memory by the nand_spl.

  hawkboard_config

* u-boot for uart boot - This is same as the u-boot binary generated
  above, with the sole difference of the CONFIG_SYS_TEXT_BASE being
  0xc1080000, as expected by the RBL.

  hawkboard_uart_config


Flashing the images to Nand
===========================
The nand_spl AIS image needs to be flashed to the block 1 of the
Nand flash, as that is the location the RBL expects the image[4]. For
flashing the nand_spl, boot over the u-boot specified in [1], and
flash the image

=> tftpboot 0xc0700000 <nand_spl_ais.bin>
=> nand erase 0x20000 0x20000
=> nand write.e 0xc0700000 0x20000 <nand_spl_size>

The u-boot binary is flashed at location 0xe0000(block 6) of the nand
flash. The nand_spl loader expects the u-boot at this location. For
flashing the u-boot binary

=> tftpboot 0xc0700000 u-boot.bin
=> nand erase 0xe0000 0x40000
=> nand write.e 0xc0700000 0xe0000 <u-boot-size>


Links
=====

[1]
 http://code.google.com/p/hawkboard/downloads/detail?name=u-boot_uart_ais_v1.bin

[2]
 http://elinux.org/Hawkboard#Booting_u-boot_over_UART

[3]
 http://elinux.org/Hawkboard#Signing_u-boot_for_UART_boot

[4]
 http://processors.wiki.ti.com/index.php/RBL_UBL_and_host_program#RBL_booting_from_NAND_and_ECC.2FBad_blocks
