uboot启动流程分析之uboot启动阶段

article/2025/7/30 14:59:13

uboot启动可分为汇编语言执行和C语言执行两个阶段,两个阶段以_main函数为分界。

uboot第一阶段由_start (arch/arm/lib/vectors.S)进入,然后跳转到reset(arch/arm/cpu/armv7/start.S)函数, reset函数进行设置CPU运行模式,关闭中断等一系列CPU内部环境初始化后,跳转到_main函数。

第二阶段通过_main函数进入,_main主要做了如下功能:

一、设置C代码的运行环境,为调用board_init_f接口做准备:

(一)设置堆栈(C代码的函数调用,堆栈是必须的);

(二)调用board_init_f接口,从堆栈开始的地方,为u-boot中global data数据结构,分配空间;

(三)调用board_init_f_init_reserve接口,对gd进行初始化;

二、调用board_init_f函数,完成一些前期的初始化工作,例如:

(一)设置gd结构体中各成员在内存中的地址,包括环境变量地址、uboot重定位的地址;

(二)串口初始化,打印板卡信息;

三、根据board_init_f 指定的uboot重定位的地址,执行u-boot的relocation重定位操作。

四、清除BSS段。

五、调用board_init_r函数,执行后续的板级初始化操作,包括各种外设接口、中断、环境变量等。最后调用run_main_loop()函数,进入倒计时等待,等待超时后执行bootcmd启动内核。

具体流程如下图:


http://www.hkcw.cn/article/OySwVADGXr.shtml

相关文章

QT学习教程(十一)

​​​​​​实现文件菜单(Implementing the File Menu) 我们实现与文件菜单有关的槽函数和相关的私有函数,以使文件菜单可以工作,同时管理最近打开文件列表。 void MainWindow::newFile(){if (okToContinue()) { spreadsheet-…

【MATLAB代码】制导方法——平行接近法引导,二维环境,动态目标|附代码的下载链接

平行接近法是一种导引方法,其目标是保持目标瞄准线在空间中的平行移动。 本文所述的代码实现了二维平行接近法导引的动态仿真,模拟导弹追踪移动目标的过程。通过实时调整导弹速度方向,确保其逐渐逼近目标,最终在设定距离内完成拦截…

解决win自动重启(自用,留链接)

2025-05-30修改,如果再出现重启回来修改。没动静就是没事了 1、依据系统事件查看器确认错误代码 事件查看器步骤 (上图没啥用) 下图错误代码,如果原因一致 2、禁用“用户体验改善计划”点击此处步骤

AI入门示例

市面上有很多AI大模型,这里以 智谱的大模型 为示例 1.先要注册智谱AI开放平台 2.注册成功后,会赠送3个月的免费额度,如下 3.然后去控制台,创建一个API KEY 4.接着就可以开始写代码了 提前导入包: openai 示例1&…

仿真每日一练 | 静力学分析与动力学分析的区别

很多有限元初学者都在纠结一个问题,就是静力学分析和动力学分析有什么区别,今天以一个时变载荷的例子,带大家领悟其中奥妙。 首先来了解一下二者的物理方程: 静力学所解决的问题:KxF 动力学所解决的问题&#xff1…

Python数据处理中的查找和排序使用详解

概要 在编程中,查找和排序是两个常见且重要的操作,几乎所有数据处理任务都会涉及到这两个内容。Python 作为一门功能强大的编程语言,为我们提供了多种查找和排序的方式,不仅包括内置函数,还支持通过算法来自定义操作。本文将详细介绍 Python 中常用的查找与排序方法,包括…

面试-【搜索引擎】

elasticsearch分布式架构原理 index -> type -> mapping -> document -> field elasticsearch 7.x取消了type mapping类似于schema信息 document代表一行数据 field代表一个字段值 elasticsearch读写流程底层剖析 (1)es写数据过程 1)客户端选择一个 node 发送…

引领机器人交互未来!MANUS数据手套解锁精准手部追踪

MANUS数据手套为机器人技术带来高精度手部追踪,助力实现人与机器的自然交互!近年,越来越多客户希望利用这项技术精准操控机械臂、灵巧手和人形机器人,不断提升设备的智能化水平和交互体验。 MANUS数据手套是高精度人机交互设备&am…

国标GB28181设备管理软件EasyGBS实现生产全流程可视化监控与精细化管理

一、引言​ 在全球经济一体化与工业化浪潮的推动下,市场竞争愈发激烈,企业想要在行业中占据优势,实现生产流程的高效管理与精准把控成为关键。生产流程不仅是产品质量的生命线,更是提升生产效率、保障经济效益的核心环节。国标GB…

数据治理系统是什么?数据治理工具有什么用?

目录 一、数据治理系统是什么? 二、数据治理系统的重要性 1. 保障数据质量 2. 确保数据安全 3. 促进数据共享与协作 三、常见的数据治理工具及其特点 1. 数据质量管理工具 2. 数据集成工具 3. 元数据管理工具 四、数据治理工具有哪些作用? 1.…

AD9361 的工作原理

AD9361 由Analog Devices 公司设计并产出的。该器件集成了相当多的滤波器,频率合成器,数字处理模块以及接收端自动增益控制模块等。拥有上千个寄存器可供配置,通过对寄存器存入数值的更改可对该器件进行工作控制,正是因为此芯片配…

AI Agent开发入门笔记(1)

目录 1️⃣ 选择框架2️⃣开发操作导入Python库创建功能函数装载环境变量创建Agent运行Agent 学习参考资料: 微软 AI Agents for Beginners 代码仓库 1️⃣ 选择框架 semantic-kernel开发框架 导入库创建功能函数(Agent 要完成什么功能)…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.11 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.11 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 dataframe<-data.frame( densityc(570,565,…

Cadence学习笔记终章

目录 01 | 引 言 02 | 文章汇总 03 | 结 语 01 | 引 言 在历时一个半月后&#xff0c;终于更新完Cadence的原理图与PCB的设计流程&#xff1b; 本篇文章主要是将全部的Cadence学习文章汇总起来&#xff0c;以供朋友们以及自己日后进行翻阅。 02 | 文章汇总 文章从上至下的…

第100+41步 ChatGPT学习:R语言实现误判病例分析

本期是《第33步 机器学习分类实战&#xff1a;误判病例分析》的R版本。 尝试使用Deepseek-R1来试试写代码&#xff0c;效果还不错。 下面上R语言代码&#xff0c;以Xgboost为例&#xff1a; # 加载必要的库 library(caret) library(pROC) library(ggplot2) library(xgboost)…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.8 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.8 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 (a) dataframe<-data.frame( Lightc(580,568…

OptiStruct实例:消声器前盖ERP分析(2)RADSND基础理论

13.2 Radiated Sound Output Analysis( RADSND ) RADSND 方法通过瑞利积分来求解结构对外的辐射噪声。其基本思路是分为两个阶段&#xff0c;如图 13-12 所示。 图13-12 结构辐射噪声计算示意图 第一阶段采用有限元方法&#xff0c;通过频响分析(模态叠加法、直接法)工况计算结…

安装RHEL9.x操作系统

本案例需要的设备和软件 1.1台安装有Windows操作系统的计算机 2.RHEL 9的ISO映像文件一套 3.VMware Workstation 17.5 Pro软件一套 4.相关软件及镜像下载链接 VMware17.5&#xff0c;链接&#xff1a;https://pan.quark.cn/s/6208d19dbd48 提取码&#xff1a;22Wk rhel-9…

API:解锁网络世界的无限可能

“在数字化时代&#xff0c;互联网已成为我们生活、工作和学习中不可或缺的一部分。然而随着网络环境的日益复杂&#xff0c;访问限制、数据追踪、IP封锁等问题也随之而来。为了应对这些挑战&#xff0c;代理IP API应运而生&#xff0c;它不仅为我们提供了一种绕过限制、保护隐…

js 动画库、2048核心逻辑、面试题add[1][2][3]+4

1、js 动画库 web animation api &#xff08;1&#xff09;初始化代码 hmtl、css 部分 初始化全局背景黑色初始化黄色小球 js 部分 监听全局点击事件创建并添加元素 class"pointer" 的 div 标签 设置 left、top 位置监听动画结束事件&#xff0c;移除该元素 定位小…