为了降低成本,树莓派省去了传统计算机用于存储引导程序的板载 BIOS,而是直接将启动相关程序放在 SD 卡中。(树莓派另外提供了一款具有 4GB eMMC 板载 Flash 存储的 Compute Module。)

树莓派具有一颗博通 BCM2835 系统芯片。当系统启动时,ARM1176JZF-S CPU 会处于复位状态,由 VideoCore IV GPU 核心负责启动系统。
启动的第一阶段,会先从系统芯片内部加载第一阶段启动程序,这个程序负责加载存放在 SD 卡中的第二阶段启动程序 bootcode.bin。bootcode.bin 在 VideoCore GPU 上执行,并继续加载第三阶段启动程序 start.elf。
start.elf 会读取系统配置文件 config.txt。当 config.txt 加载并解析完成之后,start.elf 会继续读取 cmdline.txt 和内核文件 kernel.img。其中,cmdline.txt 包含内核运行参数,而 kernel.img 会被加载到内存中。当内核加载完成后,CPU 结束复位状态,Linux 内核开始正式运行,系统启动完成。
启动流程:
- 系统加电。
- 加载系统芯片中的第一阶段启动程序。
- 第一阶段启动程序加载 SD 卡上的
bootcode.bin。 bootcode.bin执行,并加载第三阶段启动程序start.elf。start.elf读取并解析config.txt。- 读取
cmdline.txt,加载内核文件,CPU 开始运行,系统启动成功。
评论0
欢迎分享你的看法,也欢迎补充不同的实践经验。