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 |
|
GPU firmware |
start.elf or recovery.elf |
Loads CPU bootloader and boots CPU |
|
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)