Fork us on GitHub Follow us on Google+ Follow us on Facebook Follow us on Twitter

Das U-Boot Bootloader

Das U-Boot is a bootloader for embedded PowerPC, ARM, MIPS and x86 devices. It comes pre-installed in Openmoko FreeRunner. It can boot several different operating systems. Our goal is to use U-Boot to boot HelenOS on the FreeRunner.

Relevant chapters in the DULG Manual:

U-Boot on Openmoko status

Openmoko uses a private fork of U-Boot (source available in their Git repository) which is not part of the up-stream sources. U-Boot is deprecated as a booting solution for Openmoko. Nevertheless it still comes as the default loader.

Openmoko plan to replace U-Boot with Qi, a stripped down version of Openmoko U-Boot. It has practically no features (no boot menu, no DFU, no API) but it presumably supports u-Boot images as the primary means of booting.

Qi does much less HW initialization than U-Boot so it may be necessary to add more HW initialization to HelenOS to support it. (E.g. turning on display backlight).

Machine state on image entry

The uImage can specify:

  • address at which it should be loaded
  • address of the entry point

U-Boot transfers control to the entry point. Upon this transfer CPSR[7:0] = 0xd3 = 0b 1101 0111. In other words:

Field Value Meaning
I 1 IRQ interrupts are disabled
F 1 FIQ interrupts are disabled
T 0 ARM execution (not Thumb)
M 0b10111 Processor is in Abort mode?!
Last modified 8 years ago Last modified on 2010-06-19T21:19:58Z