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

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

审核编辑:汤梓红

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

    关注

    5212

    文章

    20763

    浏览量

    338762
  • u-boot
    +关注

    关注

    0

    文章

    141

    浏览量

    40001
  • bootloader
    +关注

    关注

    2

    文章

    245

    浏览量

    48382

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从现象到本质,彻底搞懂U-Boot env存储机制

    前言:在瑞芯微平台的项目开发中,不少工程师都踩过这样一个“诡异”的坑:setenv改完、saveenv也保存了,重启设备后环境变量却莫名地回到了默认值。本文将带你从现象到本质,彻底搞懂U-Boot
    的头像 发表于 05-20 08:32 3045次阅读
    从现象到本质,彻底搞懂<b class='flag-5'>U-Boot</b> env存储机制

    吃透RK3576 U-Boot.map文件!嵌入式开发调试、性能优化、代码裁剪全攻略

    “宝藏文件”,解锁调试、分析、优化的全套实战技巧。 一、U-Boot.map 是什么? U-Boot.map 是 U-Boot 编译链接阶段生成的内存布局映射文件,记录了可执行文件在内存中的完整分布信息。以瑞芯微 RK3576 
    的头像 发表于 04-27 07:11 570次阅读
    吃透RK3576 <b class='flag-5'>U-Boot</b>.map文件!嵌入式开发调试、性能优化、代码裁剪全攻略

    深度解析 RK 平台 U-Boot 环境变量(env):原理、配置与实战

    环境变量(env)是 U-Boot 的核心配置机制,无需重新编译即可灵活调整启动参数。在 Rockchip(RK)平台上,环境变量不仅继承了 U-Boot 的通用特性,还针对 RK 芯片架构做了大量
    的头像 发表于 04-27 07:11 635次阅读
    深度解析 RK 平台 <b class='flag-5'>U-Boot</b> 环境变量(env):原理、配置与实战

    深度剖析U-Boot ADC Uclass:从架构到实战的全维度解析

    在嵌入式开发中,ADC(模数转换)是连接模拟世界与数字系统的关键桥梁,而 U-Boot 作为嵌入式领域的经典引导程序,其 ADC 子系统的设计堪称分层架构与通用化设计的典范。本文将从架构、流程
    的头像 发表于 04-26 07:08 164次阅读
    深度剖析<b class='flag-5'>U-Boot</b> ADC Uclass:从架构到实战的全维度解析

    更新 U-boot 时出现的问题求解

    我在尝试更新 U-boot 时遇到问题。最初我无法启动 Fedora,但后来我读到了这并尝试更新 U-boot。但是,当我按照官方文档我卡在迷你机屏幕上,什么也做不了。我担心董事会来了 DOA......
    发表于 04-01 07:20

    更新固件后 U-boot 不运行怎么解决?

    我刷新了从这里下载的新fw_payload固件(u-boot 和 opensbi):用于 TF 卡兼容性的新 u-boot 二进制文件 -.现在它启动到 OpenSBI,但无法达到 U-boot。我
    发表于 03-25 08:17

    更新 SPL 和 U-Boot的提示和技巧

    U-Boot 和 SPL 文件并将它们加载到 U 盘上 7 连接将 USB 记忆棒连接到 VF2 板并将其安装在文件夹中 8 更新来自终端的固件 9 验证使用命令 cat /proc/mtd 并检查如下
    发表于 03-20 08:15

    深入解析U-Boot image.c:RK平台镜像处理核心逻辑

    在瑞芯微(RK)平台的嵌入式开发中,U-Boot作为核心的启动加载程序,负责完成镜像解析、校验、加载等关键流程。而image.c正是U-Boot中处理镜像(uImage)的核心文件,尤其针对RK平台
    的头像 发表于 02-24 16:46 1933次阅读
    深入解析<b class='flag-5'>U-Boot</b> image.c:RK平台镜像处理核心逻辑

    U-Boot SPL核心文件spl.c深度解析:从启动流程到调试优化

    在嵌入式系统开发中,U-Boot 的 SPL(Secondary Program Loader)扮演着至关重要的角色,它是系统上电后执行的第一个软件组件之一,负责为后续启动过程铺平道路。本文将深入
    的头像 发表于 02-05 14:08 634次阅读
    <b class='flag-5'>U-Boot</b> SPL核心文件spl.c深度解析:从启动流程到调试优化

    深入解析U-Boot命令处理核心文件:功能、调试与开发价值

    在嵌入式系统开发中,U-Boot 作为主流的引导加载程序,其命令处理、交互逻辑和自动启动流程是核心功能模块。本文将围绕command.c、cli.c和autoboot.c三个关键文件,从核心
    的头像 发表于 02-03 15:44 1076次阅读
    深入解析<b class='flag-5'>U-Boot</b>命令处理核心文件:功能、调试与开发价值

    深入解析U-Boot核心文件board_f.c:知识点、调试要点与开发价值

    在嵌入式系统开发中,U-Boot 作为应用最广泛的引导程序,其底层初始化逻辑直接决定了硬件启动的稳定性与可靠性。
    的头像 发表于 02-03 15:38 909次阅读
    深入解析<b class='flag-5'>U-Boot</b>核心文件board_f.c:知识点、调试要点与开发价值

    解析Rockchip平台U-Boot核心文件:boot_rkimg.c到底做了什么?

    在嵌入式开发中,U-Boot 作为引导程序的 “中流砥柱”,负责初始化硬件、加载内核并启动系统。对于 Rockchip 平台的设备(如常见的开发板、智能终端),boot_rkimg.c 是 U-Boot 中专门处理启动流程的核心
    的头像 发表于 02-03 15:29 1051次阅读
    解析Rockchip平台<b class='flag-5'>U-Boot</b>核心文件:<b class='flag-5'>boot</b>_rkimg.c到底做了什么?

    深入解析rk平台Android Bootloader核心代码:从启动流程到AVB验证

    作为Android设备启动的第一道“闸门”,Bootloader(以U-Boot为主)承担着初始化硬件、加载内核、验证镜像完整性的核心职责。今天我们拆解Rockchip平台
    的头像 发表于 01-22 07:06 587次阅读
    深入解析rk平台Android <b class='flag-5'>Bootloader</b>核心代码:从启动流程到AVB验证

    深入理解 RK3506 U-Boot 重定位:从代码到原理

    在嵌入式系统中,U-Boot 作为引导加载程序,其启动流程的核心环节之一就是 重定位(Relocation) 。对于 RK3506 这类基于 ARM Cortex-A 架构的芯片,重定位的本质是将
    的头像 发表于 11-28 07:05 1125次阅读
    深入理解 RK3506 <b class='flag-5'>U-Boot</b> 重定位:从代码到原理

    U-Boot 无法识别 NAND怎么解决?

    U-Boot 无法识别 NAND
    发表于 09-03 06:37