嵌入式系统中u-boot和bootloader到底有什么区别

news2024/11/16 23:42:24

 

嵌入式软件工程师都听说过 u-boot 和 bootloader,但很多工程师依然不知道他们到底是啥。

今天就来简单讲讲 u-boot 和 bootloader 的内容以及区别。

Bootloader

Bootloader从字面上来看就是启动加载的意思。用过电脑的都知道,windows开机时会首先加载bios,然后是系统内核,最后启动完毕。那么bootloader就相当于手机的bios,它在手机启动的时候根据基带初始化硬件,然后引导系统内核,直到系统启动。

Bootloader是嵌入式系统在加电后执行的第一段代码,通过这段小程序,进行硬件初始化,获取内存大小信息等,调整手机到适配状态。在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行 。

对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。

Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序 。

反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口。

uboot

1.硬件管理

uboot要能够进行Soc级(Soc内部外设)和板级(Soc外部外设)硬件管理。

uboot中实现了一部分硬件的控制能力(uboot中初始化了一部分硬件),因为uboot为了完成一些任务必须让这些硬件工作。

譬如uboot要实现刷机必须能驱动iNand,譬如uboot要在刷机时LCD上显示进度条就必须能驱动LCD,譬如uboot能够通过串口提供操作界面就必须驱动串口。譬如uboot要实现网络功能就必须驱动网卡芯片。

2.能够完成镜像烧录(刷机)

uboot要能够被借助完成刷机操作。参考下SD卡刷机的步骤:

a.烧录uboot到SD卡中。

有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。制作完SD后将SD卡插入开发板,然后开机就可以进入uboot界面。

b.使用uboot的fastboot命令,并借助PC中的fastboot软件完成包括uboot、kernel、rootfs等的镜像的烧录。

从上面就可以看出,刷机依靠的是uboot的fastboot命令,将镜像写到相应的FLASH中。

3.uboot的“生命周期”

uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核。uboot还可以执行很多别的任务(譬如烧录系统),但是其他任务执行完后都可以回到uboot的命令行继续执行uboot命令,而启动内核命令一旦执行就回不来了。

4.uboot要提供命令式shell界面

shell是用户操作接口的意思。shell有命令行的shell,如windows下的cmd,如linux下的终端;也有GUI式的shell,比如常用的windows下的各种界面。shell是一种封装后留出来的接口,uboot也要有这样的一个接口。

shell的原理是:由消息接收、解析、执行构成的一个死循环。我之前用过3D打印机的固件(firmware)也是这样的模式。

uboot的shell使用的也是行缓冲的模式。也就是以回车键(换行键)作为一个命令输入的结束。对应的其他缓冲模式还有无缓冲和全缓冲:无缓冲就是输入一个字符就当做一个命令处理;全缓冲就是无论输入什么都缓冲起来直到缓冲区满了才做一次处理。

bootloader 与 uboot的区别

BootLoader 是嵌入式设备中用来启动操作系统内核的一段程序。

uboot(universal bootloader)是一种可以用于多种嵌入式CPU的BootLoader程序,换言之,uboot是bootloader的一个子集。

uboot的核心作用就是启动操作系统内核,uboot的本质就是一段裸机程序。​

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

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

相关文章

【Nginx性能优化系列】Nginx绑定特定的CPU性能测评

【Nginx性能优化系列】Nginx绑定特定的CPU性能测评 前导知识说明:   CPU内部的缓存叫Cache   比如一颗CPU有4核,每个核心都有自己的独立缓存,以及所有核心的共享缓存。缓存分为一级缓存、二级缓存、三级缓存,一级缓存的速率基本上CPU相当,当然一级缓存的存储空间也较小…

【抽象类和接口】

目录 1.抽象类1.1什么是抽象类1.2抽象类语法1.3抽象类与普通类的区别 2.抽象类的特性2.1 特性2.2抽象类的作用 3.接口3.1什么是接口3.2语法规范3.3接口的使用3.4接口的特性3.5 实现多个接口3.6 接口的继承 4.接口的实例5.Clonable 接口和深拷贝5.1 浅拷贝5.2深拷贝 6. 抽象类和…

English Learning - L3 作业打卡 Lesson4 Day27 2023.5.31 周三

English Learning - L3 作业打卡 Lesson4 Day27 2023.5.31 周三 引言🍉句1: It is so crowded that we are packed like sardines – just like small fish in a can.成分划分弱读连读爆破语调 🍉句2: My supervisor at work is sometimes out to lunch.…

设计模式之database/sql 与Gorm设计原理

1.0 理解 database/sql 1.1 基本用法 - Quick Start 上面有几行错误 DSN相关知识: https://github.com/go-sql-driver/mysql#dsn-data-source-name https://en.wikipedia.org/wiki/Data_source_name 完整: 1.2 设计原理 极简接口设计原则: 对…

UNIX环境高级编程——高级I/O

14.1 引言 本章讨论高级I/O相关主题,包括: 非阻塞I/O;记录锁;I/O多路转接(select、poll);异步I/O;readv和writev函数;存储映射I/O(mmap)。 14.…

Hesai激光雷达使用PTP时间同步

PTP是一个网络同步时钟的协议,全称是Precise Time Protocol,也称为IEEE 1588,其有IEEE1588v1和IEEE1588v2两个版本(其中v1版本是为工业自动化测量和控制系统开发的,适用于工业局域网应用。v2版本是在v1版本的基础上&am…

Win11电脑突然没有声音了怎么办?

Win11电脑突然没有声音了怎么办?有用户电脑连接了音响之后,无论自己怎么调整都没有声音,那么遇到这个问题之后,要怎么去进行修复呢?如果你也遇到了没有电脑没有声音的情况,可以通过以下的方法来进行解决。 …

Vue (7)

文章目录 1. 单文件组件1.1 创建 .vue 文件1.2 vue 脚手架1.2.1 说明1.2.2 创建 vue 脚手架1.2.3 了解 vue_test 中的文件 1.2.4 render 函数 1.3 修改默认配置1.4 ref 属性1.5 props 配置项1.6 mixin 混入1.7 插件1.8 Scoped 样式 2. 组件化编码流程2.1 TodoList 案例总结 前言…

Pycharm设置Python每个文件开头自定义模板(带上声明字符编码、作者名、时间等)

Pycharm设置地址: 在File---settings---Editor---File and Code Templates---Python script 脚本里添加: 模板声明设置参考: # ---encoding:utf-8--- # Time : ${DATE} ${HOUR}:${MINUTE} # Author : 作者名 # Email :你的邮箱 # Sit…

Nginx启动,重启以及基本命令

1.启动nginx 进入nginx安装目录执行 ./sbin/nginx -c ./conf/nginx.conf 2.验证nginx配置文件是否正确 方法1. 进入nginx安装目录sbin下,输入命令 ./nginx -t 回显test is successful说明配置正确 方法2. 在启动nginx命令 -c 前加 -t ./sbin/nginx -t -c ./c…

一次诡异405 METHOD_NOT_ALLOWED “Request method ‘POST‘ not supported“问题排查记录

概述 任何稍微只要有一点经验的开发者都知道HTTP 405,表示方法不支持。如,本来是定义为POST接口,前端使用GET请求,就会报错。 但是我还真遇上一次405 METHOD_NOT_ALLOWED "Request method POST not supported"问题&am…

ReadDataByIdentifier(0x22)服务

ReadDataByIdentifier(0x22)服务 ReadDataByIdentifier服务允许客户端从一个或多个dataIdentifiers标识的服务器请求数据记录值。 客户端请求消息包含一个或多个两字节的dataIdentifier值,用于标识服务器维护的数据记录 允许的dataIdentifie…

【Azure】微软 Azure 基础解析(八)Azure 存储服务:探索Blob存储、队列存储、文件存储的特性与适用场景

本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中。 本系列文章列表如下: 【Azure】微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx…

代码随想录第50天

1.买卖股票的最佳时机III: 动态规划五部曲详细分析一下: 确定dp数组以及下标的含义 一天一共就有五个状态, 没有操作 (其实我们也可以不设置这个状态)第一次持有股票第一次不持有股票第二次持有股票第二次不持有股…

2021年全国A级景区矢量分布数据(11969条)

一、景区定义 旅游景区是以旅游及其相关活动为主要功能或主要功能之一的空间或地域。本标准中旅游景区是指具有参观游览、休闲度假、康乐健身等功能,具备相应旅游服务设施并提供相应旅游服务的独立管理区。该管理区应有统一的经营管理机构和明确的地域范围。包括风景…

设计模式-中介者模式

中介者模式 问题背景中介者设计模式基本介绍原理 问题解决-代码示例注意事项和细节 问题背景 一提到中介,我们首先就能想到租房中介,有租房中介在我们需要租房子的时候可以给我们节省很大精力。 那没有中介我们要怎么租房呢? 我们可以想象一…

English Learning - L3 作业打卡 Lesson4 Day25 2023.5.29 周一

English Learning - L3 作业打卡 Lesson4 Day25 2023.5.29 周一 引言🍉句1: My husband has a good job.成分划分弱读连读爆破语调 🍉句2: He makes enough money to support our family.成分划分弱读连读语调 🍉句3: So we say he brings ho…

防火墙之部署服务器NAT

防火墙部署服务器NAT 原理概述: NAT(Network Address Translation),是指网络地址转换,1994年提出的。 当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址)&a…

离散化以及树状数组

今天我们先来讲一讲什么叫做离散化(简单的映射关系) 一、离散化 一、概念:就是把一个无限的空间去映射到一个有限的空间中去(通俗的可以理解成将数据相应的缩小)为了更好的理解,请看下图: 已知…