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 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(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 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

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

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

  Both the images get compiled with hawkboard_config, with the TOPDIR
  containing the u-boot images, and the spl image under the spl
  directory.

  The spl image 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 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 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 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 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
