Wednesday, June 9, 2010

Beagleboard: 1st stage bootstrap code (aka The BOOTROM)

Bringing up Beagleboard hardware to life happens in several stages. When the board is first powered up, the CPU execution starts from a pre-flashed ROM code called the BootROM.

As descibed in the OMAP TRM, BootROM code resides in an internal ROM within the OMAP 3530 chipset and is considered as the bootstrap code of the chip. This code initializes some of the very basic modules required for executing the later boot code stages. This includes setting up initial clocks, reset and power connections, configure multiplexed hardware pins involved in setting up boot memory space for the next stages.

BootROM code also comes with very basic drivers for certain boot peripherals like the MMC module, NAND/OneNAND, USB or the UART ports.
Using the configuration of OMAP Boot Switch SYS.BOOT[5], any of the above modules can be used for loading the next stage bootloader.
In case of Beagleboard, we can choose the order in which the BootROM looks for the 2nd stage boot code using the provided USER button.

  • User button not pressed: NAND -> USB -> UART -> MMC
  • User button is pressed: USB -> UART -> MMC -> NAND
In a normal linux configuration, 2nd stage bootloader is called the XLOADER.

No comments:

Post a Comment