新版本uboot启动流程分析

参考页面

友善之臂文章
UBOOT启动过程介绍,非常有用!

启动过程分析

第一阶段

初始化RAM,CPU阶段,准备初始化板
操作时钟,设置CPU模式,设置中断,关看门狗,
底层初始化CPU,初始化RAM,初始化C环境,设置GD全局数据结构
执行board_init_f

第二阶段

前期初始化板阶段,此时已经可以使用串口,显示板子信息,然后重定位代码
board_init_f,其实就是在RAM中设置各种内存,然后重定位跳转过去,好进行下一步继续初始化
执行init_sequence_f 函数数组里面的函数
设置堆栈,BSS等C环境

最后一个步骤是---重定位代码jump_to_copy
在调用board_init_f()完成板卡与全局结构体变量 gd 的初始化后将其拷贝到在代码段下重新分配的全局结构体中。接下来进行sp的重新设置,将r9指向重新分配的全局变量gd,然后进行代码的重定位。

第三阶段

板子第二初始化阶段,此时C的环境已经建立,已经重定位后在RAM中运行
board_init_r
开始初始化各种外设
init_sequence_r

最后一个步骤是main_loop()
主循环

第四阶段

主循环
开始进行CLI等待和命令处理了。

原文地址:https://www.cnblogs.com/lizhensheng/p/11161415.html