
Hello Christian,
Sorry for the late answer ...
Wolfgang Denk wrote:
Dear Christian Riesch,
In message BANLkTimhJSs_URkzB-q5y7GQzawSWe005g@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:
- ROM bootloader (RBL): starts reading from flash
- 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.
- 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:
- 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 ...
- 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.
- u-boot loads the Linux kernel.
bye, Heiko
[1]: http://focus.ti.com/lit/an/spraba5a/spraba5a.pdf