I discovered that the Raspberry Pi doesn鈥檛 boot the same way traditional PC鈥檚 do. This was interesting and I thought I鈥檇 share. At a high level, Raspberry Pi booting is firmware-driven, not BIOS-driven like a PC. On Raspberry Pi, the GPU (VideoCore) is powered first and is the root of trust for booting. The ARM CPU is not the initial execution environment. This is a deliberate architectural choice dating back to the original Pi. Boot sequence (simplified): 1. Power applied Power management IC brings up rails\ VideoCore GPU comes up first ARM CPU is held in reset 2. VideoCore ROM Executes (GPU Side) Immutable GPU boot ROM runs This code: Initializes minimal SDRAM Reads boot configuration Locates next-stage bootloader The ARM cores are still powered down. 3. GPU Loads Firmware GPU reads EEPROM bootloader EEPROM bootloader then loads firmware from SD / USB / Network The loaded firmware files are GPU Binaries- not ARM code! 4. GPU Configures the System The GPU: Parses config.txt Applies device tree overlays Allocates memory split (GPU vs ARM) Initializes clocks and peripherals Loads the ARM kernel image into RAM At this point, the system hardware layout is defined by the GPU, not the CPU. 5. GPU Releases the ARM CPU from Reset Only after: Firmware is loaded Memory is mapped Kernel is staged 鈥oes the GPU release the ARM core(s) and set their entry point. This is when the CPU first executes instructions. 6. ARM CPU Starts Linux CPU jumps directly into: kernel7.img / kernel8.img Linux takes over GPU becomes a peripheral (mailbox, display, VPU, etc.) This explains several Raspberry Pi oddities: The Raspberry Pi has No BIOS / UEFI The config.txt is not a Linux File Kernel Replacement Is Trivial Boot failures before Linux is loaded are invisible to Linux Even with the EEPROM bootloader: The GPU still executes first The EEPROM code is executed by the GPU ARM remains gated until kernel handoff EEPROM just replaces bootcode.bin; it does not change authority. The trust chain for...
First seen: 2025-12-12 08:41
Last seen: 2025-12-12 08:41