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