uboot大致流程总结

文章目录

  • 一、uboot介绍
  • 二、uboot的配置编译过程
    • 2.1 make xxx_defconfig
    • 2.2 make

一、uboot介绍

uboot是一个bootloader,用于在嵌入式设备中引导linux内核启动,在嵌入式设备中常见的组织结构如下:
芯片内部固化代码 -> bootloader -> kernel -> rootfs

所以uboot的主要功能如下:

  1. 读flash,把内核加载到内存
    • 初始化内存控制器
    • 初始化flash、clock等外设
    • 从flash中拷贝内核放到内存中
  2. 启动内核

简单说明uboot的启动流程:
针对非xip类型的芯片通常内部会有一个bootrom,上电以后它会去根据bootppin来获取当前是从哪个启动设备启动,然后加载对应的启动设备驱动获取对设备的读写能力,然后将启动设备里面uboot的前一部分(比如4k)读取到到内部的sram中开始运行,这一部分代码要通过内存控制器完成对外部sdram的驱动,然后将启动设备里面的完整uboot加载到sdram中,然后在重定向到sdram的相同位置继续执行剩下的完整uboot功能,将kernel也从启动设备中加载到sdram中,还有初始化网卡、屏幕等剩余使用到的外设,加载网络驱动,加载uboot使用的cmd等内容,最后如果没有交互那么它的最终目标就是跳转到kernel的启动入口,启动内核。
在这里插入图片描述

二、uboot的配置编译过程

2.1 make xxx_defconfig

make xxx_defconfi过程第一步会首先创建得到conf工具,然后利用这个conf工具将config/下面的xxx_defconfig文件拷贝到uboot跟路径下的.config文件。
这个.config文件的作用有两个:

  1. 控制整个编译过程的行为,决定编译哪些内容
  2. 会转变成include/config.h头文件,代码里通过宏来获取具体的参数,比如串口波特率等信息。

2.2 make

执行make的主要过程:

  1. 检查更新头文件config.h u-boot.cfg(通过.config还有uboot默认的一些cmd配置头文件结合生成)
  2. 制作一系列工具
  3. 交叉编译源码

uboot的最终编译产物:

  • 得到elf格式的u-boot-nodtb.bin
  • dtb
    上面两个文件结合起来的到u-boot.bin
    这里是通用流程,后续厂商会基于这个文件在定制自己的内容,比如在u-boot.bin前面添加头信息得到u-boot.stm32。

在这里插入图片描述

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

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

相关文章

Docker NetWork (网络)

Docker 为什么需要网络管理 容器的网络默认与宿主机及其他容器都是相互隔离的,但同时我们也要考虑下面的一些问题, 比如 多个容器之间是如何通信的容器和宿主机是如何通信的容器和外界主机是如何通信的容器中要运行一些网络应用(如 nginx、web 应用、数…

第66天:API攻防-接口安全阿里云KEYPostmanDVWSXXE鉴权泄漏

案例一:安全问题-Dvws泄漏&鉴权&XXE 靶场地址:https://github.com/snoopysecurity/dvws-node 利用docker命令去启动 首先先注册一个账户 注册后登录点击admin area 发现点不进去 这里把bp打开但是不抓包,只做流量转发,进…

LLM学习笔记-3

温度缩放 概念 1)在机器学习中,"温度缩放"通常指的是一种技术,用于调整神经网络输出的概率分布。这个技术通常在 softmax 函数的输出上进行操作。 2)在 softmax 函数中,神经网络会输出一个概率分布&#x…

探索 虚拟化技术+Docker部署与操作

目录 一、你知道哪些云 1.1国内云 1.2国外云 二、Iaas、 Paas、SaaS三种云服务区别 2.1第一层叫做IaaS 2.2第二层就是所谓的PaaS 2.3第三层也就是所谓SaaS 三、虚拟化架构 3.1寄居架构 3.2源生架构 3.3操作系统虚拟化架构 3.4混合虚拟化架构 四、虚拟化特点及优势…

php常见图片处理方法

在PHP中,处理图片通常涉及对图像进行创建、打开、修改和保存等操作。以下是一些常见的PHP图片处理方法: 创建和打开图像 使用GD库或Imagick扩展可以创建或打开图像。 * GD库:imagecreate()、imagecreatefromjpeg()、imagecreatefrompng()等…

鼠标手辅助器

鼠标发生移动后 ,静止在某位置指定时间后即可触发点击事件 支持多种点击事件,支持快捷键触发,支持自定义配置 有其他更好的思路 ,支持有偿定制,留言留下联系方式,看到会加你 # !/usr/bin/python3 # -*- c…

服务网关GateWay基础

1. 网关基础介绍1.1 网关是什么1.2 为啥要用网关1.3 常见的网关组件NginxNetflix ZuulSpring Cloud GatewayKongAPISIX综合比较 2. gateWay的使用2.1 springCloud整合gateway2.2 GateWay的相关用法2.3 GateWay路由使用示例基本用法转发/重定向负载请求动态路由 2.5 断言(Predic…

SourceInsight中文编码格式乱码

参考文章:https://blog.csdn.net/m0_53754590/article/details/135594860 file–>Reload as Encoding —>选择编码格式UTF-8,或者GB2312;哪个显示不乱码设置那个; 我这里选择GB2312

DAY32|1005.K次取反后最大化的数组和,55. 跳跃游戏,45.跳跃游戏II

122.买卖股票的最佳时机II 文字讲解:买卖股票的最佳时机II 状态:这题ok 思路: 代码: class Solution {public int maxProfit(int[] prices) {if (prices.length 0 || prices.length 1) {return 0;}int maxProfit 0;for (int …

线程池 ThreadPoolExecutor 参数详解

一、引言 提到 Java 线程池,就不得不说 ThreadPoolExecutor,它是 Java 并发包 java.util.concurrent 中的一个类,提供一个高效、稳定、灵活的线程池实现,用于实现多线程并发执行任务,提高应用程序的执行效率。 在《任…

4-22 算法刷题思路总结

leetcode46 全排列 使用回溯思想 for循环遍历每次选取的数 递归遍历下一次选取的数 选取完回溯 将暂时保存的path删除尾部 将used重置为0 class Solution {List<List<Integer>> res;List<Integer> path;public List<List<Integer>> permute(in…

【ARM 裸机】C 语言 led 驱动

前面刚学习了汇编 led 驱动的编写和验证&#xff0c;现在开始就要进入 C 语言 led 驱动编写与验证了 ! 1、C 语言运行环境构建 1.1、设置处理器模式 使 6ULL 处于 SVC 模式下&#xff0c;之前已经提到了处理器的九种模式&#xff0c;参考&#xff1a;【ARM 裸机】汇编 led 驱…

Java中String为什么不可变,这样有什么好处

简介 在Java中&#xff0c;字符串&#xff08;String&#xff09;是不可变的&#xff0c;这意味着一旦创建了一个字符串对象&#xff0c;它的内容就不能再被修改。这个设计决策是由Java的创始人詹姆斯高斯林&#xff08;James Gosling&#xff09;做出的&#xff0c;主要是出于…

Docker 的基本管理

一. 云的相关知识 1. 关于云 云端服务器都有哪些提供商&#xff1a; 国内&#xff1a; 阿里云&#xff08;Alibaba Cloud&#xff09;&#xff1a; 提供ECS&#xff08;Elastic Compute Service&#xff09;弹性计算服务&#xff0c;包括通用型、计算型、内存型等多种实例…

模拟电子技术实验(九)

单选题 1. 设计性实验完整准确的定义是什么&#xff1f; A. 设计性实验是根据电路结构和元件参数测试验证系统参数。 B. 设计性实验是根据系统参数确定电路结构和元件参数。 C. 设计性实验是根据系统参数 、电路原理和验证积累确定符合系统参数的 电路结构和元件参数。 D. …

根据图片模板动态生成图片(Java)

根据图片模板生成图片 背景流程简介代码实现 背景 根据提供的证书模板生成对应证书&#xff0c;证书内容有&#xff0c;姓名&#xff0c;身份证号&#xff0c;证书名称&#xff0c;证书编号&#xff0c;发证日期 根据用户达成的条件自动生成证书图片。 证书模板如下&#xff…

【51单片机项目】基于51单片机自制多功能小键盘/模拟USB键盘【附源码】(STC89C52RC+CH9328)

目录 一、效果展示 二、创作灵感 三、硬件电路 注意事项 工作原理 四、源码 main.c 五、附录 CH9328工作原理 CH9328的模式选择 ​编辑 全键盘键码值表 参考链接 一、效果展示 该小键盘具有三种功能&#xff1a; 1、自动输入开机密码 2、每隔一段时间自动按下ct…

Docker容器使用

文章目录 Docker 客户端容器相关命令获取镜像启动容器启动已停止运行的容器后台运行停止一个容器进入容器attach 命令exec 命令 导出和导入容器导出容器导入容器快照 删除容器web应用例子运行一个 web 应用查看 WEB 应用容器查看 WEB 应用程序日志查看WEB应用程序容器的进程检查…

MongoDB 与MySQL的区别?优势?

MongoDB 与 MySQL 是两种不同类型的数据库管理系统&#xff0c;它们各自有独特的数据模型、查询语言、扩展方式以及适用场景。以下是它们的主要区别与各自的优势&#xff1a; 区别&#xff1a; 数据模型&#xff1a; MySQL&#xff1a;基于关系模型&#xff0c;使用表格&#…

多模态大模型训练数据量以及训练方式

多模态大模型系列&#xff1a;LLaVALLaVA1.5/1.6LLaVA-Med - 知乎就在前两天LLaVA 1.6发布了&#xff0c;带来了更大的分辨率&#xff0c;更强的LLM&#xff0c;在最后补充了这一部分的介绍。 LLaVA repo&#xff1a;https://github.com/haotian-liu/LLaVA/ LLaVA 1.0&#xff…