多语言展示
当前在线:1649今日阅读:39今日分享:10

uboot启动流程

CPU初始刚上电的状态。需要小心的设置好很多状态,包括cpu状态、中断状态、MMU状态等等。其次,就是要根据硬件资源进行板级的初始化,代码重定向等等。最后,就是进入命令行状态,等待处理命令。 具体的启动流程是什么呢?
工具/原料
1

电脑

2

uboot

方法/步骤
1

1.关闭中断,设置svc模式禁用MMU、TLB关键寄存器的设置,包括时钟、看门狗的寄存器

2

2.堆栈环境的设置代码重定向之前的板级初始化,包括串口、定时器、环境变量、I2C\SPI等等的初始化

3

3.进行代码重定向代码重定向之后的板级初始化,包括板级代码中定义的初始化操作、emmc、nand flash、网络、中断等等的初始化。

4

4. 进入命令行状态等待终端输入命令以及对命令进行处理上述工作,也就是uboot流程的核心。

5

5.疑问在spl的阶段中已经对arch级进行了初始化了,为什么uboot里面还要对arch再初始化一遍? 回答:spl对于启动uboot来说并不是必须的,在某些情况下,上电之后uboot可能在ROM上或者flash上开始执行而并没有使用spl。这些都是取决于平台的启动机制。因此uboot并不会考虑spl是否已经对arch进行了初始化操作,uboot会完整的做一遍初始化动作,以保证cpu处于所要求的状态下。

6

6.spl在启动过程的差异在哪里?回答:以tiny210而言,前期arch的初始化流程基本上是一致的,出现本质区别的是在board_init_f开始的。

7

7.代码入口project-X/u-boot/arch/arm/cpu/u-boot.lds

总结

1.关闭中断,设置svc模式。2.堆栈环境的设置。3.进行代码重定向,进入命令行状态即可。

注意事项

非常感谢您的阅读,此经验文由小编辛苦所作,希望能帮到您。欢迎关注、点赞、投票、转发、收藏~

推荐信息