Summary
=======
The README is for the boot procedure used for various DA850 (or compatible
parts such as the AM1808) based boards.

In the context of U-Boot, the board is booted in three stages. The initial
bootloader which executes upon reset is the ROM Boot Loader (RBL) and sits
in the internal ROM. The RBL initializes the internal memory and then
depending on the exact board and pin configurations will initialize another
controller (such as SPI or NAND) to continue the boot process by loading
the secondary program loader (SPL).  The SPL will initialize the system
further (some clocks, SDRAM) and then load the full u-boot from a
predefined location in persistent storage to DDR 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 AIS format allows for
other things such as programming the clocks and SDRAM if the header is
programmed for it.  We do not take advantage of this and instead use SPL as
it allows for additional flexibility (run-time detect of board revision,
loading the next image from a different media, etc).


Compilation
===========
The exact build target you need will depend on the board you have.  For
Logic PD boards, or other boards which store the ethernet MAC address at
the end of SPI flash, run 'make da850evm'.  For boards which store the
ethernet MAC address in the i2c EEPROM located at 0x50, run
'make da850_am18xxevm'.  Once this build completes you will have a
u-boot.ais file that needs to be written to the correct persistent
storage.


Flashing the images to SPI
==========================
The AIS image can be written to SPI flash using the following commands.
Assuming that the network is configured and enabled and the u-boot.ais file
is tftp'able.

U-Boot > sf probe 0
U-Boot > sf erase 0 +320000
U-Boot > tftp u-boot.ais
U-Boot > sf write c0700000 0 $filesize

Flashing the images to NAND
===========================
The AIS image can be written to NAND using the u-boot "nand" commands.

Example:

OMAPL138_LCDK requires the AIS image to be written to the second block of
the NAND flash.

From the "nand info" command we see that the second block would start at
offset 0x20000:

  U-Boot > nand info
      sector size      128 KiB (0x20000)
      Page size       2048 b

From the tftp command we see that we need to copy 0x74908 bytes from
memory address 0xc0700000 (0x75000 if we align a page of 2048):

  U-Boot > tftp u-boot.ais
      Load address: 0xc0700000
      Bytes transferred = 477448 (74908 hex)

The commands to write the image from memory to NAND would be:

  U-Boot > nand erase 0x20000 0x75000
  U-Boot > nand write 0xc0700000 0x20000 0x75000

Alternatively, MTD partitions may be defined. Using "mtdparts" to
conveniently have a bootloader partition starting at the second block
(offset 0x20000):

  setenv mtdids nand0=davinci_nand.0
  setenv mtdparts mtdparts=davinci_nand.0:128k(bootenv),2m(bootloader)

In this case the commands would be simplified to:

  U-Boot > tftp u-boot.ais
  U-Boot > nand erase.part bootloader
  U-Boot > nand write 0xc0700000 bootloader

Flashing the images to MMC
==========================
If the boot pins are set to boot from mmc, the RBL will try to load the
next boot stage form the first couple of sectors of an external mmc card.
As sector 0 is usually used for storing the partition information, the
AIS image should be written at least after the first sector, but before the
first partition begins. (e.g: make sure to leave at least 500KB of unallocated
space at the start of the mmc when creating the partitions)

CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR is used by SPL, and should
point to the sector were the u-boot image is located. (eg. After SPL)

There are 2 ways to copy the AIS image to the mmc card:

 1 - Using the TI tool "uflash"
	$ uflash -d /dev/mmcblk0  -b ./u-boot.ais -p OMAPL138  -vv

 2 - using the "dd" command
	$ dd if=u-boot.ais of=/dev/mmcblk0 seek=117 bs=512 conv=fsync

uflash writes the AIS image at offset 117. For compatibility with uflash,
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR is set to take into account this
offset, and the dd command is adjusted accordingly.

Recovery
========

In the case of a "bricked" board, you need to use the TI tools found
here[1] to write the u-boot.ais file.  An example of recovering to the SPI
flash of an AM1808 would be:

$ mono sfh_OMAP-L138.exe -targetType AM1808 -p /dev/ttyUSB0 \
	-flash_noubl /path/to/u-boot.ais

For other target types and flash locations:

$ mono sfh_OMAP-L138.exe -h

Links
=====
[1]
 http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility_for_OMAP-L138
