参考页面
启动过程分析
第一阶段
初始化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
时间: 2024-10-09 05:55:01