0-ZYNQ 折腾记录 - 启动顺序

BootROM——>FSBL——>Uboot

BootROM

  每次一上电, ARM 核心就会前往 BootROM 完成一些基本的准备工作, 就这样一个最开始的程序,需要完成以下几件事情:

  • 释放 PMU,复位 CSU。
  • 读取拨码开关,获取启动模式,从相应的内存中获取启动文件。
  • 从 Boot image 里面获取 Boot Header 信息。

  通过拨码开关调整 ZYNQ 用不同的 Boot 模式进行启动,ARM 核心就会去对应的 BootROM 启动,包括 JTAG、Flash、SD、eMMC 等等。

image

image

image

FSBL(First Stage Boot Loader)

  FSBL 的任务比较重要,它需要完成以下的工作:

  • 初始化 PS 端。
  • 使用 bit 文件配置 PL 端。
  • 加载 Uboot 到内存中。
  • 移交执行权限给 Uboot。

image

  首先会初始化 PS 端的内存与 MIO 接口等然后读取 bit 文件配置好 PL 端, 值得注意的是 PL 端需要在 FSBL 的阶段配置好,否则是无法直接配置的。接着加载 Uboot 到内存中,最后 ARM 会跳转到内存中执行 Uboot 程序。

Uboot

  Uboot 最主要的功能就是将内核写入内存中, 然后将 执行权限移交给内核 ,但是 Uboot 需要完成的任务并不仅限于此:初始化运行环境。

  • 初始化内存。
  • 检查内存映射。
  • 将内核写入内存。
  • 设置启动参数。
  • 调用内核。

  等内核起来后,Uboot 就完成了它的工作,紧接着就是内核去完成自己的工作。

1 操作
naive 在 2024-10-27 18:43:47 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...