mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-23 10:28:51 +09:00
![Sughosh Ganu](/assets/img/avatar_default.png)
The patch adds basic board support for TI's OMAP-L138 based Hawkboard. This board is pretty similar to the da850 EVM. Support for nand and network access is added in this version. The following bootup procedure is used. At reset, the Rom Boot Loader(RBL), initialises the ddr and the nand controllers and copies the second stage bootloader(nand_spl) to RAM. The secondary bootloader then copies u-boot from a predefined location in the nand flash to the RAM, and passes control to the u-boot image. Three config options are supported * hawkboard_config - Used to create the u-boot.bin. Tftp the u-boot.bin image to the RAM from u-boot, and flash to the nand flash at address 0xe0000. * hawkboard_nand_config - Used to generate the secondary bootloader(nand_spl) image. This creates an elf file u-boot-spl under nand_spl/. Create an AIS signed image using this file, and flash it to the nand flash at address 0x20000. The ais file should fit in one block. * hawkboard_uart_config - This is same as the first image, but with the TEXT_BASE as expected by the RBL(0xc1080000). Create the AIS Signed-off-by: Sughosh Ganu <urwithsughosh@gmail.com> Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
94 lines
3.3 KiB
Plaintext
94 lines
3.3 KiB
Plaintext
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
|