0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

u-boot和bootloader的内容以及区别

硬件笔记本 来源:硬件笔记本 作者:硬件笔记本 2022-07-03 15:27 次阅读

嵌入式软件工程师听说过 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的本质就是一段裸机程序。

原文标题:嵌入式基础之u-boot和bootloader

文章出处:【微信公众号:硬件笔记本】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5103

    文章

    19268

    浏览量

    310026
  • u-boot
    +关注

    关注

    0

    文章

    121

    浏览量

    38464
  • bootloader
    +关注

    关注

    2

    文章

    237

    浏览量

    46012

原文标题:嵌入式基础之u-boot和bootloader

文章出处:【微信号:gh_a6560e9c41d7,微信公众号:硬件笔记本】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问stm32u545这种spi带boot的和不带boot的有什么区别

    请问这种spi带boot的和不带boot的有什么区别
    发表于 03-10 07:16

    STM32MP25x开发板Bring Up培训课程(下)

    部flash,例如NAND,SD卡等,从PC端烧录镜像到外部Flash是由U-Boot结合STM32CubeProgrammer完成的,配置并编译U-Boot是烧录的前提
    的头像 发表于 02-27 08:03 254次阅读
    STM32MP25x开发板Bring Up培训课程(下)

    Bootloader解决方案—INTEWORK-EAS-Boot

    INTEWORK-EAS.Boot是经纬恒润自主研发的BootLoader软件产品。可基于客户指定 MCU 型号、集成开发环境和 OEM 规范进行定制化方案设计和开发,目前基于客户需求已经在在数十款
    的头像 发表于 12-20 14:13 393次阅读
    <b class='flag-5'>Bootloader</b>解决方案—INTEWORK-EAS-<b class='flag-5'>Boot</b>

    如何在Petalinux下Patch u-boot源码

    在软件开发过程中我们经常遇到用 Patch 来传递和更新代码的场景。本文以一个端到端的例子来演示在 Petalinux 使用过程中,如何给 u-boot 的源码生成 Patch 并在 Petalinux 中编译。
    的头像 发表于 12-04 16:26 1294次阅读
    如何在Petalinux下Patch <b class='flag-5'>u-boot</b>源码

    ti814x-ddr3-init-u-boot

    电子发烧友网站提供《ti814x-ddr3-init-u-boot.pdf》资料免费下载
    发表于 10-12 10:38 0次下载
    ti814x-ddr3-init-<b class='flag-5'>u-boot</b>

    zynq7000 BSP无法在u-boot加载运行怎么解决?

    1、硬件配置zynq7000 zedboard 2、下载git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以运行thread-zynq7000.elf 4、采用u-boot tftp下载到板子thread-zynq7000.elf, 执行go 0x100000后无打印。
    发表于 09-27 09:26

    zynq7000 BSP无法在u-boot加载运行,为什么?

    1、硬件配置zynq7000 zedboard 2、下载git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以运行thread-zynq7000.elf 4、采用u-boot tftp下载到板子thread-zynq7000.elf, 执行go 0x100000后无打印。
    发表于 09-13 07:06

    单片机boot0和boot1怎么设置

    单片机Boot0和Boot1简介 Boot0和Boot1是单片机启动模式选择引脚,用于选择单片机的启动模式。 Boot0和
    的头像 发表于 08-22 09:50 3585次阅读

    UOA2228U和OPA2228U区别是什么?

    UOA2228U和OPA2228U区别,丝印OPA2228U KK的含义
    发表于 08-07 07:25

    修改“u-boot”设备树中的电源后,使用\"STM32CubeProgrammer\"下载会一直重复下载,为什么?

    我自己做的板子电源部分没有使用\"stpmic\",而是使用分立式电源,我在移植OpenSTLinux(5.1.0)时遇到了问题,我修改“u-boot”设备树中的电源后
    发表于 07-23 07:57

    飞凌全志T527开发板U-Boot添加自定义菜单

    有趣的是,板子上电,按任意键进入U-Boot会自动列出一个功能菜单,有切换屏幕等功能: 基于此,本文将分析如何在U-Boot添加自定义菜单。 一、实验环境介绍 硬件:飞凌OK-T527开发板
    发表于 07-15 09:42

    使用STM32MP157D的DSI来驱动屏幕,会出现花屏的原因?

    项目使用STM32MP157D的DSI来驱动屏幕,u-boot会显示开机logo,进入内核后,会显示一个动画,现在碰到问题是,MIPI屏幕没有buffer,完全靠DSI在VIDEO MODE 模式
    发表于 06-03 08:31

    STM32MP157 u-boot能加速吗?

    芯片启动,能加速吗,目前速度有点慢,启动首先打印了一些信息,到U-BOOT启动,中间有2-3秒时间,能否加速呢 NOTICE:Model: STMicroelectronics
    发表于 05-31 06:36

    stm32u545 spi带boot的和不带boot的有什么区别

    stm32u545 spi带boot的和不带boot的有什么区别
    发表于 05-23 07:08

    用STM32进行bootloader开发时,能不能将boot和app程序的hex合成为一个hex进行烧录?

    大家好,请问用STM32进行bootloader开发时,能不能将boot和app程序的hex合成为一个hex进行烧录?我之前分别烧录两个hex,是可以实现功能的,不知道合成一个hex烧录行不行。 我
    发表于 04-01 08:20