---------------------------------------------
UBL image Boot Image generation using mkimage
---------------------------------------------

This document describes how to set up an U-Boot image that can be directly
booted by a DaVinci processor via NAND boot mode, using an UBL header,
but without need for UBL.

For more details see section 11.2 "ARM ROM Boot Modes" of
http://focus.ti.com/lit/ug/sprufg5a/sprufg5a.pdf

Command syntax:
--------------
./tools/mkimage -l <u-boot_file>
		to list the UBL image file details

./tools/mkimage -T ublimage \
		-n <board specific configuration file> \
		-d <u-boot binary>  <output image file>

For example, for the davinci dm365evm board:
./tools/mkimage -n ./board/davinci/dm365evm/ublimage.cfg \
		-T ublimage \
		-d u-boot-nand.bin u-boot.ubl

You can generate the image directly when you compile u-boot with:

$ make u-boot.ubl

The output image can be flashed into the NAND.

Please check the DaVinci documentation for further details.

Board specific configuration file specifications:
-------------------------------------------------
1. This file must present in the $(BOARDDIR) and the name should be
	ublimage.cfg (since this is used in Makefile).
2. This file can have empty lines and lines starting with "#" as first
	character to put comments.
3. This file can have configuration command lines as mentioned below,
	any other information in this file is treated as invalid.

Configuration command line syntax:
---------------------------------
1. Each command line must have two strings, first one command or address
	and second one data string
2. Following are the valid command strings and associated data strings:-
	Command string		data string
	--------------		-----------
	MODE			UBL special mode, on of:
				safe
				Example:
				MODE	safe

	ENTRY			Entry point address for the user
				bootloader (absolute address) = TEXT_BASE
				nand_spl loader.
				Example:
				ENTRY	0x00000020

	PAGES			Number of pages (size of user bootloader
				in number of pages)
				Example:
				PAGES	27

	START_BLOCK		Block number where user bootloader is present
				Example:
				START_BLOCK	5

	START_PAGE		Page number where user bootloader is present
				(for RBL always 0)
				Example:
				START_PAGE	0

------------------------------------------------

Structure of the u-boot.ubl binary:

compile steps:

1) nand_spl code compile, with pad_to = (TEXT_BASE +
   (CONFIG_SYS_NROF_PAGES_NAND_SPL * pagesize))
   Example: cam_enc_4xx pad_to = 0x20 + (6 * 0x800) = 0x3020 = 12320
   -> u-boot-spl-16k.bin

   !! TEXT_BASE = 0x20, as the RBL starts at 0x20

2) compile u-boot.bin ("normal" u-boot)
   -> u-boot.bin

3) create u-boot-nand.bin = u-boot-spl-16k.bin + u-boot.bin

4) create u-boot.ubl, size = 1 page size NAND
   create UBL header and paste it before u-boot.bin

This steps are done automagically if you do a "make all"

-> You get an u-boot.ubl binary, which you can flash
   into your NAND.

Structure of this binary (Example for the cam_enc_4xx board with a NAND
page size = 0x800):

offset :    0x00000 | 0x800	  | 0x3800
content:    UBL     | nand_spl	  | u-boot code
	    Header  | code	  |

The NAND layout looks for example like this:

(Example for the cam_enc_4xx board with a NAND page size = 0x800, block
size = 0x20000 and CONFIG_SYS_NROF_UBL_HEADER 5):

offset :    0x80000 | 0xa0000	  | 0xa3000
content:    UBL     | nand_spl	  | u-boot code
	    Header  | code	  |
	    ^	      ^
	    ^	      0xa0000 = CONFIG_SYS_NROF_UBL_HEADER * 0x20000
	    ^
	    0x80000 = Block 4 * 0x20000

If the cpu starts in NAND boot mode, it checks the UBL descriptor
starting with block 1 (page 0).  When a valid UBL signature is found,
the corresponding block number (from 1 to 24) is written to the last 32
bits of ARM internal memory (0x7ffc-0x8000).  This feature is provided
as a basic debug mechanism.  If not found, it continues with block 2
... last possible block is 24

If a valid UBL descriptor is found, the UBL descriptor is read and
processed.  The descriptor gives the information required for loading
and control transfer to the nand_spl code.  The nand_spl code is then
read and processed.

Once the user-specified start-up conditions are set, the RBL copies the
nand_spl into ARM internal RAM, starting at address 0x0000: 0020.
							    ^^^^

The nand_spl code itself now does necessary intializations, and at least,
copies the u-boot code from NAND into RAM, and jumps to it ...

------------------------------------------------
Author: Heiko Schocher <hs@denx.de>
