Raspberry Pi Bootloader

Der Raspberry Pi nutzt einen komplizierten mehrstufigen Startvorgang mit proprietären Blobs.

Raspberry Pi boards require a closed-source binary to boot. I understand it this is handled by VideoCore IV GPU, and so far the Raspberry Pi foundation are not release source code for the bootloader, possibly due to legal reason (e.g. NDA to Broadcom).

How does Raspberry Pi boot?
What is the boot sequence?
Raspberry PI 3 Model B: SD card setup

  • Raspberry Pi Bootloader bootcode.bin (Closed-Source, proprietären Firmware von Broadcom)
  • Raspberry Pi Bootloader rpi-open-firmware (Open-Source)
  • RPi U-Boot Bootloader
  • BCM2835
  • ArduCAM
  • ODROID-W
  • Hardkernel
  • VideoCore IV GPU

Stage

Filename

Description

Source

FSBL

Mounts SD and loads SSBL

ROM

SSBL

bootcode.bin

Loads GPU firmware and boots GPU

https://github.com/raspberrypi/firmware/tree/master/boot

GPU firmware

start.elf or recovery.elf

Loads CPU bootloader and boots CPU

https://github.com/raspberrypi/firmware/tree/master/boot

User code Usually the Linux kernel, but could also be u-boot

u-boot.bin

u-boot

You can either use our prebuilt U-boot which works, or compile your own using the instructions above

config.txt

u-boot parameters

Add enable_uart=1 and kernel=u-boot.bin to the bottom of config.txt (Sample: http://codepad.org/ykVYFSyP)

uboot.env

u-boot saved environment

Generated by u-boot (default environment) bootcmd copied to bootcmd_orig bootcmd and bootdelay removed

Freie Firmware für Raspberry Pi startet Linux-Kernel
Blob-less Raspberry Pi Linux Is A Step Closer
Raspberry Pi Bootloader License Precludes it to Run on Competing Broadcom BCM283x Boards
Preliminary Open Source Bootloader for Raspberry Pi Boards Released
Kristina Brooks: Blobless Linux on Raspberry Pi (rpi-open-firmware)

github

github.com/christinaa/rpi-open-firmware, Open source VPU side bootloader for Raspberry Pi

RPi U-Boot

RPi U-Boot
u-boot for Raspberry Pi 3
Building and Booting Upstream Linux and U-Boot for Raspberry Pi 2/3 ARM Boards, With proprietary bootloader files bootcode.bin, fixup.dat, start.elf

seL4Wiki / Hardware / Rpi3
The seL4 Microkernel

Boot Process

The Linux Boot Process (SysVinit vs. upstart vs. systemd)

Leave a Reply

Your email address will not be published. Required fields are marked *