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?! |