为了减小树莓派的成本,板子上没有非易失性存储,使用SD卡存储固件。
上电时CPU被复位,VideoCore IV GPU负责启动系统,内置ROM中的第一阶段的bootloader首先开始执行,它负责加载SD卡中第一个FAT32或者FAT16分区中的第二阶段bootloader(bootcode.bin)执行。
第二阶段的bootloader bootcode.bin运行在VideoCore GPU,它负责加载第三阶段bootloader start.elf
第三阶段bootloader start.elf执行所有的动作,它也运行在GPU上,它读取config.txt,执行相关硬件初始化,,准备ARM执行环境(执行一小段armstub),载入内核,跳转到内核运行。
参考
Understanding the Raspberry Pi Boot Process.
https://wiki.beyondlogic.org/index.php?title=Understanding_RaspberryPi_Boot_Process
https://github.com/swarren/rpi-3-aarch64-demo