[U-Boot] da850evm: u-boot does not start without UBL since commit f1d2b313c9eb6808d30c16a9eb5251240452a56c

Heiko Schocher hs at denx.de
Tue Jun 21 09:29:35 CEST 2011


Hello Christian,

Sorry for the late answer ...

Wolfgang Denk wrote:
> Dear Christian Riesch,
> 
> In message <BANLkTimhJSs_URkzB-q5y7GQzawSWe005g at mail.gmail.com> you wrote:
>>> What is AIS ?
>> I apologize for using that many abbreviations in my mail and not
>> explaining them :-/
>>
>> AIS is short for Application Image Script [1]. It is a boot script
>> that is processed by the ROM bootloader on Texas Instrument's
>> AM1808/DA850/OMAP-L138 processors. The script allows configuration of
>> boot modes, PLLs, DDR memory, Pinmuxes etc and loading the an
>> application like u-boot from flash to RAM and executing it. Using a
>> suitable AIS one can configure PLL and DDR memory and then directly
>> start u-boot on these processors, without using Texas Instruments's
>> user boot loader (UBL) [2].
>>
>> In the default configuration of the da850evm the boot sequence is like this:
>> 1) ROM bootloader (RBL): starts reading from flash
>> 2) In the SPI-flash, a very simple AIS is present. This AIS tells the
>> RBL to load the UBL from flash and to start it.
>> 3) The UBL does a lot of hardware initialization and then loads u-boot
>> from flash and starts it.

Ok.

>> 4) u-boot does a lot of hardware initialization that has already been
>> done by the UBL and then loads the Linux kernel.

Hmm.. why does U-Boot code again such initialization? This is
wrong ... this should be cleaned up!

Ok, I do actually a similiar job for an TI DM368 based board,
booting from NAND flash. I am using instead the UBL, now the
nand_spl code from u-boot, bootsequence is:

1) ROM bootloader (RBL) searches for an UBL Header in NAND,
   which contains the info where to find in the NAND flash the
   "UBL" (User Boot Loader). If such an header is found:

2) loading the UBL(now nand_spl code) from NAND to internal RAM
   and start executing it.

3) The UBL (nand_spl code) inits RAM, clocks... and loads U-Boot
   from NAND to RAM and jumps to it ...


So I actually create with "make board_config" an u-boot.ubl image,
which contains this ubl header(created with mkimage), nand_spl code
and u-boot, burn this into nand, and boot it ...

>> For my application I would like to get rid of the UBL since most of
>> the configuration it does is also done by u-boot (although there seems
>> to be a bug in it) or can be done by AIS (like PLL and DDR memory
>> configuration), the resulting boot sequence will be:
>> 1) ROM bootloader (RBL): starts reading from flash

How detects the RBL that there is something in the SPI flash,
isn;t there such a header like on the DM368?

Ah, looked in [1] and there is nothing similiar ...

>> 2) In the SPI-flash, an AIS is present. This AIS tells the RBL to
>> configure PLLs and DDR memory and to  load u-boot from flash and to
>> start it.

Maybe you can use here the "simple AIS header" as above in step 2
(maybe create this simple header with the mkimage tool?) and use
something like the nand_spl code calling it spi_spl which do all
necessary setups (DDR, PLL,...) in C-Code? So we can get rid off
this external AIS tool, UBL and do *all* things in/with U-boot?

Please look also into the "SPL framework re-design" thread.

>> 3) u-boot loads the Linux kernel.

bye,
Heiko

[1]: http://focus.ti.com/lit/an/spraba5a/spraba5a.pdf
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list