The Raspberry Pi boot process is initiated by the GPU core, which is on when the device is first turned on.
- The GPU reads the first-stage bootloader from the ROM on the SoC and executes it.
- The first-stage bootloader reads the second-stage bootloader (bootcode.bin) from the SD card and loads it into the L2 cache and runs it.
- The second-stage bootloader enables SDRAM and reads the third-stage bootloader (loader.bin) from the SD card into RAM, and runs it.
- The third-stage bootloader reads the GPU firmware (start.elf). start.elf reads config.txt, cmdline.txt and kernel.img. The third-stage bootloader doesn’t do much, but it is needed to load start.elf at the top of memory (ARM uses SDRAM from address zero)