当前位置:   article > 正文

uboot-spl理解

uboot-spl

uboot分为uboot-spl和uboot两个组成部分。SPL是Secondary Program Loader的简称,第二阶段程序加载器,这里所谓的第二阶段是相对于SOC中的BROM来说的,之前的文章已经有所介绍,SOC启动最先执行的是BROM中的固化程序。

BROM会通过检测启动方式来加载第二阶段bootloader。uboot已经是一个bootloader了,那么为什么还多一个uboot spl呢?

这个主要原因是对于一些SOC来说,它的内部SRAM可能会比较小,小到无法装载下一个完整的uboot镜像,那么就需要spl,它主要负责初始化外部RAM和环境,并加载真正的uboot镜像到外部RAM中来执行。

所以由此来看,SPL应该是一个非常小的loader程序,可以运行于SOC的内部SRAM中,它的主要功能就是加载真正的uboot并运行之。


uboot启动分三个阶段

1. BL0

ROM上的固化程序

2. BL1(u-boot-spl)

主要工作有: 
        初始化部分时钟(和SDRAM相关)
        初始化DDR(外部SDRAM)
        从存储介质上(比如SD\eMMC\nand flash)将BL2镜像加载到SDRAM上
        验证BL2镜像的合法性

        跳转到BL2镜像所在的地址上

通过uboot-spl编译脚本:u-boot/arch/arm/cpu/u-boot-spl.lds

ENTRY(_start)

所以uboot-spl的代码入口函数是_start 
对应于路径u-boot/arch/arm/lib/vector.S的_start,后续就是从这个函数开始分析。

3. BL2 (uboot)

主要工作有: 
初始化部分硬件,包括时钟、内存等等
加载内核到内存上
加载文件系统、atags或者dtb到内存上
根据操作系统启动要求正确配置好一些硬件

启动操作系统

详细的uboot启动流程分析:https://blog.csdn.net/ooonebook/article/details/52957395

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/130036
推荐阅读
相关标签
  

闽ICP备14008679号