U-Boot代码执行流程详解

0. 概述
u-boot通常是从架构相关的汇编文件(尾缀为大写s的汇编文件意为可链接)中获取第一条执行的指令,例如:
在以上所列出的汇编文件中,主要执行如下三个函数:
完整的执行流程如下图所示:
u-boot代码执行流程
1. lowlevel_init()
不同架构类型的处理器会单独定义lowlevel_init.s文件,例如:
该函数的基本功能是使得cpu可以获取、执行到board_init_f()函数。在此函数中没有栈信息,不能设置sdram和控制台。
2. board_init_f()
为执行board_init_r做准备,需要初始化两个关键功能:sdram和串口。
在此阶段,global_data已经可以使用,栈信息位于sram中。由于bss段仍然无法使用,因此,不可以使用全局/静态变量。
若u-boot中开启了spl功能,则在common/spl.c代码中可以实现该函数,否则,通常以common/board_f.c中实现为准。
board_init_f()中调用的函数在数组init_sequence_f[]中定义:
3. board_init_r()
u-boot执行到此处,已经进入到正常的功能代码调用流程,例如设备驱动、命令行、镜像搬移加载等功能。
若u-boot中开启了spl功能,则在common/spl.c代码中可以实现该函数,否则,通常以common/board_r.c中实现为准。
board_init_r()中调用的函数在数组init_sequence_r[]中定义:
以上所有的功能相关的初始化中,cpu相关的初始化代码通常位于如下路径:
板级相关的初始化代码通常位于如下路径:

国产深度学习框架的一次重要亮相
3D打印材料选择有机硅的原因是什么?
镜头马达的发展现状是怎样的
沐天思考 | 技术更新与时俱进无止境!
电热恒温培养箱-卧式与立式的产品特点是什么
U-Boot代码执行流程详解
开发板配套软件包介绍之FP-SNS-ALLMEMS1
AI赋能招聘改革 将面试准确率提高了一倍
三星Bixby将应用在新款QLED电视和冰箱洗衣机等智能家电产品中
通过NFC/RFID计算器实现非接触式应用程序的创建和优化
半导体电子产业 经济学思维之三十一:掠夺性定价
国内首例无天线地铁站在长春落地
探讨车载娱乐与辅助系统中连接器趋势
首个国家自然科学基金重大科研仪器研制项目启动
移动网络电话应用前景分析
无人驾驶的汽车,你想坐吗?
集成电路TDA2822的应用
RW-200系列热收缩管有着广泛应用,它的特点是什么
DCDC开关电源电压纹波应该怎样测量
SPI接口的基本概念和工作原理