u-BOOT启动流程

news2024/9/23 19:20:41

1、u-boot入口:入口即第一行程序,程序的链接是由链接脚本决定的,编译uboot之后,可以在根目录下生成u-boot.lds文件
编译后的uboot文件
打开lds文件可以看到代码当前入口点: :_start,_start后面就是中断向量表,通过查看map地址可以得知start地址为 0Xc0100000,即整个 uboot的起始地址就是 0Xc0100000
在这里插入图片描述
2、u-boot启动过程中主要用到的一些函数:

board_init_f:初始化一系列外设,比如串口、定时器,或者打印一些消息等。
relocate_code:用于代码拷贝
relocate_vectors:重定位向量表
board_init_f:初始化外设的后续工作
run_main_loop:uboot启动以后会进入 N(N=1.2.3…)秒倒计时,如果在 N秒倒计时结束之前按下回车键,那么就会进入 uboot的命令模式,如果倒计时结束以后都没有按下回车键,那么就会自动启动Linux内核,这个功能就是由这个函数实现的
cli_loop:uboot的命令行处理函数,我们在 uboot中输入各种命令,进行各种操作就是有 cli_loop来处理的

3、bootm启动linux内核用到的函数:

全局变量 images会在 bootm命令的执行中频繁使用到,相当于 Linux内核启动的“灵魂”。
在这里插入图片描述
bootm命令的执行函数为 do_bootm:行,主要作用是解析 bootm的命令参数和检查有没有子命令

do_bootm_states:来执行不同的 BOOT 阶段,这里要执行的 BOOT阶段有:
BOOTM_STATE_START,BOOTM_STATE_FINDOS、 BOOTM_STATE_FINDOTHER、
BOOTM_STATE_LOADOS、 BOOTM_STATE_RAMDISK、 BOOTM_STATE_OS_PREP、
BOOTM_STATE_OS_FAKE_GO和 BOOTM_STATE_OS_GO。
bootm_os_get_boot_func:来查找对应系统的启动函数,查找方法很简单,就是读取数组中指定元素。
do_bootm_linux:Linux系统对应的启动函数
kernel_entry:,看名字“内核 _进入”,说明此函数是进入 Linux内核的,此函数有三个参数 zero arch params,第一个参数 zero要 为 0;第二个参数为机器 ID;第三个参数 ATAGS或者设备树 (DTB)首地 址, ATAGS是传统的方法,用于
传递一些命令行信息啥的,如果使用设备树的话就要传递设备树 (DTB)。
调用 kernel_entry函数进入 Linux内核,此行将一去不复返, uboot的使命也就完成了

流程图:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django演唱会门票售卖系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

股票接口怎样获取数据方便?

目前很多交易者对股票数据行情查询相关使用的系统也是很普遍,就比如说你查询A股的大秦铁路可以使用实时股票数据接口来获取它的实时股价,成交量,成交金额等情况。那么在这个过程中,股票接口是如何获取数据更方便呢?小编…

化工厂人员定位系统:聚焦化工安全问题,提升智慧管理水平

化工厂人员定位系统,以人员定位技术为核心,整合访客管理、出入口控制、地图、人脸识别、视频监控数据采集等各种管控技术,提供精准实时定位、轨迹查询、货物跟踪等功能,又称“智能化二道门人员管理系统”。 12月1日,鞍…

[附源码]计算机毕业设计剧本杀交流分享平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Spring进阶(二十一)之循环Bean详解

目录 什么是循环依赖 检测是否存在循环依赖 Spring底层是如何解决循环依赖的问题 循环依赖无法解决的情况 为什么需要用3级缓存 问题 原因 案例 单例bean解决了循环依赖,还存在什么问题 什么是循环依赖 这个很好理解,多个bean之间相互依赖&#…

Python制作进度条,原来有这么多方法

如果你之前没用过进度条,八成是觉得它会增加不必要的复杂性或者很难维护,其实不然。要加一个进度条其实只需要几行代码。 在这几行代码中,我们可以看看如何在命令行脚本以及 PySimpleGUI UI 中添加进度条。 下文将介绍 4 个常用的 Python 进度…

TL431介绍及其应用电路

TL431介绍及其应用电路 硬件攻城狮 1. TL431简介 TL431是常用的三端并联稳压器,具有较好的热稳定性,输出电压可以设置为Vref~36V之间的任何值。被广泛用作基准源、比较器、运放等功能。在隔离电源中,TL431经常与光耦配合构成隔离反馈回路&…

PDF文件怎么合并?看完这篇就懂了!

不知道小伙伴们有没有这样的经历,那就是准备好一些pdf去打印店打印的时候,本来想要打印双面的,但是店家却表示pdf太小,只能一页一页的单页打印。这就给我们的钱包无形之中增加了很多的负担,因为有时候我们没必要打印单…

搜索与图论-有向图的拓扑序列

文章目录一、有向图的拓扑序列1. 拓扑序列2. 拓扑排序3. 如何进行拓扑排序4. 拓扑排序具体实现详见例题有向图的拓扑序列二、有向图的拓扑序列例题——有向图的拓扑序列具体实现1. 样例演示2. 实现思路3. 代码注解4. 实现代码一、有向图的拓扑序列 有向图的拓扑序列就是图的广…

遥感测深方法综述(二)CZMIL 机载LiDAR 测深系统

机载激光雷达测深测量是集激光测距、GNSS定位/姿态测量、航空摄影等多种技术于一体的新型主动机载激光测绘,可应用于海滩和海岸线、浅海编图、海岛、岛礁、水下障碍物的调查,是高效获取高精度近岸海底地形的重要技术,尤其对“人下不去、船上不…

31_ADC基本原理及单次采集实验

目录 ADC简介 STM32F10x ADC特点 ADC执行模式 相关寄存器及数据对齐方式 ADC的采样时间 常用库函数 单次转换一般步骤 实验源码 ADC简介 Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。…

Hylicos --- krprint实现

可变参函数的工作原理 函数调用时先用寄存器R0 ~R3 存放参数,如果不够放还要使用到堆栈,参数列表的形参从右到左依次入栈,弹栈时就是从左到右的顺序。 如果函数参数的个数固定,编译器就可以很清楚地在函数运行时依次从堆栈中弹出…

关于城市旅游的HTML网页设计 HTML+CSS上海博物馆网站 dreamweaver作业静态HTML网页设计 html网页制作期末大作业

👨‍🎓静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计👩‍🎓,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

JVM--这一篇就够了

1、JVM内存模型 Java内存模型是指Java虚拟机的内存模型,我们来看下Java内存模型的图片: 其中,在JAVA的JVM调优中,我们JAVA程序员需要重点关注的,首先是堆,我们看下堆内存的内存模型: 2、类的加载过程 (1)、加载 …

基于jsp+ssm的高速公路收费管理系统-计算机毕业设计

项目介绍 现阶段,政府都会对高速公路收费进行管理,用户通过进入相关系统对高速公路收费状况进行了解,简化了高速公路收费管理流程,进而提高政府高速收费管理效率,达到更好的管理目的。 本设计利用JSP作为开发语言。后…

Nature Communications:人类大脑的皮层下-皮层的动态状态及其在中风中的损伤

摘要 控制大脑自发活动中的动态模式的机制尚不清楚。在这里&#xff0c;我们提供的证据表明&#xff0c;在超低频率范围内&#xff08;<0.01-0.1Hz&#xff09;的皮层动力学需要完整的皮层-皮层下通信。利用静息态功能磁共振成像&#xff08;fMRI&#xff09;&#xff0c;我…

2021-2022 ICPC, NERC, Northern Eurasia Onsite L. Labyrinth

翻译&#xff1a; 莱斯利和利昂进入了一个迷宫。迷宫由&#x1d45b;大厅和&#x1d45a;大厅之间的单向通道组成。大厅编号从1到&#x1d45b;。 莱斯利和利昂在大厅开始了他们的旅程&#x1d460;。他们立刻争吵起来&#xff0c;决定各自去探索迷宫。然而&#xff0c;他们希…

分享一个你很可能不知道的Java异常实现的缺陷

前言 Java中一个大家熟知的知识点就是异常捕获&#xff0c;try…catch…finally组合&#xff0c;但是很多人不知道这里面有一个关于Java的缺陷&#xff0c;或者说是异常实现的一点不足之处。 我这边就通过一个很简单的实验给大家演示下效果玩玩儿&#xff0c;希望大家能觉得有趣…

linux搭建测试环境(tomcat)

安装jdk 1,查看是否装的有&#xff08;centos7会自带的有&#xff09;如果是普通用户切记要切换到root 输入命令查看是否安装&#xff1a; java -version2,跟踪查看自带jdk 默认安装了openjdk&#xff0c;那就要知道具体文件安装到哪里了&#xff0c;这里我们可以通过命令“rp…

黑马程序员Java数据结构与java算法笔记(1)

数据结构和算法详细内容 来源&#xff1a;黑马程序员Java数据结构与java算法 1.数据结构和算法概述 1.1什么是数据结构&#xff1f; 数据结构就是把数据元素按照一定的关系组织起来的集合&#xff0c;用来组织和存储数据 1.2数据结构分类 传统上&#xff0c;我们可以把数…