BootROM——>FSBL——>Uboot
BootROM
每次一上电, ARM 核心就会前往 BootROM 完成一些基本的准备工作, 就这样一个最开始的程序,需要完成以下几件事情:
- 释放 PMU,复位 CSU。
- 读取拨码开关,获取启动模式,从相应的内存中获取启动文件。
- 从 Boot image 里面获取 Boot Header 信息。
通过拨码开关调整 ZYNQ 用不同的 Boot 模式进行启动,ARM 核心就会去对应的 BootROM 启动,包括 JTAG、Flash、SD、eMMC 等等。
FSBL(First Stage Boot Loader)
FSBL 的任务比较重要,它需要完成以下的工作:
- 初始化 PS 端。
- 使用 bit 文件配置 PL 端。
- 加载 Uboot 到内存中。
- 移交执行权限给 Uboot。
首先会初始化 PS 端的内存与 MIO 接口等然后读取 bit 文件配置好 PL 端, 值得注意的是 PL 端需要在 FSBL 的阶段配置好,否则是无法直接配置的。接着加载 Uboot 到内存中,最后 ARM 会跳转到内存中执行 Uboot 程序。
Uboot
Uboot 最主要的功能就是将内核写入内存中, 然后将 执行权限移交给内核 ,但是 Uboot 需要完成的任务并不仅限于此:初始化运行环境。
- 初始化内存。
- 检查内存映射。
- 将内核写入内存。
- 设置启动参数。
- 调用内核。
等内核起来后,Uboot 就完成了它的工作,紧接着就是内核去完成自己的工作。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于