数字营销 · Web开发 · 基础设施

树莓派的启动流程

简单介绍树莓派从系统加电到 Linux 内核启动的基本流程,了解 GPU、bootcode.bin、start.elf、config.txt 以及内核文件在启动过程中的作用。

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

树莓派B+模型图

树莓派具有一颗博通 BCM2835 系统芯片。当系统启动时,ARM1176JZF-S CPU 会处于复位状态,由 VideoCore IV GPU 核心负责启动系统。

启动的第一阶段,会先从系统芯片内部加载第一阶段启动程序,这个程序负责加载存放在 SD 卡中的第二阶段启动程序 bootcode.binbootcode.bin 在 VideoCore GPU 上执行,并继续加载第三阶段启动程序 start.elf

start.elf 会读取系统配置文件 config.txt。当 config.txt 加载并解析完成之后,start.elf 会继续读取 cmdline.txt 和内核文件 kernel.img。其中,cmdline.txt 包含内核运行参数,而 kernel.img 会被加载到内存中。当内核加载完成后,CPU 结束复位状态,Linux 内核开始正式运行,系统启动完成。

启动流程:

  1. 系统加电。
  2. 加载系统芯片中的第一阶段启动程序。
  3. 第一阶段启动程序加载 SD 卡上的 bootcode.bin
  4. bootcode.bin 执行,并加载第三阶段启动程序 start.elf
  5. start.elf 读取并解析 config.txt
  6. 读取 cmdline.txt,加载内核文件,CPU 开始运行,系统启动成功。

评论0

欢迎分享你的看法,也欢迎补充不同的实践经验。