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

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

3天内不再提示

什么是bootlood?Bootloader的操作模式

冬至子 来源:汽车电子联盟 作者:汽车电子联盟 2023-07-26 16:08 次阅读

/ 引言 /

Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。

图片

对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。

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

/ 简介 /

通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式平台。因此,在嵌入式平台里建立一个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对bootloader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。

在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:

1、 引导加载程序 。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。

2、Linux内核 。特定于嵌入式板子的定制内核以及内核的启动参数

3、 文件系统 。包括根文件系统和建立于Flash内存设备之上文件系统。通常用ramdisk来作为rootfs。

4、 用户应用程序 。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。

/ 操作模式 /

大多数Bootloader都包含两种不同的操作模式:

(1)启动加载模式

在这种模式下,Bootloader从目标机的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是Bootloader的正常工作模式,因此在嵌入式产品发布时,Bootloader必须工作在这种模式下。

(2)下载模式

在这种模式下,目标机上的Bootloader将通过串口或网络通信手段从开发主机(Host)上下载内核映像和根文件系统映像等到RAM中,然后可再被Bootloader写到目标机上的固态存储媒质中,或者直接进行系统的引导。

启动加载模式通常用于第一次烧写内核与根文件系统到固态存储媒质时或者以后的系统更新时使用;下载模式多用于开发人员在前期开发的过程中,工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。

/ 启动过程 /

Bootloader启动大多数都分为两个阶段。第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现。这个阶段的任务有:

基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令/数据Cache等)。

为第二阶段准备RAM空间。

如果是从某个固态存储媒质中,则复制Bootloader的第二阶段代码到RAM 。

设置堆栈。

在第一阶段中为什么要关闭Cache?通常使用Cache以及写缓冲是为了提高系统性能,但由于Cache的使用可能改变访问主存的数量、类型和时间,因此Bootloader通常是不需要的。

跳转到第二阶段的C程序入口点。

第二阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。这个阶段的任务有:

初始化本阶段要使用到的硬件设备。

检测系统内存映射。

将内核映像和根文件系统映像从Flash读到RAM。

为内核设置启动参数。

调用内核

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

    关注

    68

    文章

    19155

    浏览量

    229053
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3563

    浏览量

    129204
  • bootloader
    +关注

    关注

    2

    文章

    234

    浏览量

    45536
  • LINUX内核
    +关注

    关注

    1

    文章

    316

    浏览量

    21614
  • 以太网接口
    +关注

    关注

    0

    文章

    147

    浏览量

    17062
收藏 人收藏

    评论

    相关推荐

    什么是Bootloader 浅谈STM32中bootloader的内存分配

    1. 什么是Bootloader Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最
    的头像 发表于 02-15 06:10 1.7w次阅读
    什么是<b class='flag-5'>Bootloader</b> 浅谈STM32中<b class='flag-5'>bootloader</b>的内存分配

    请问stm32进入BootLoader模式是什么意思?

    stm32进入BootLoader模式是什么意思,是指stm32开始启动运行了吗
    发表于 06-06 04:13

    怎么进入bootloader模式

    怎么进入bootloader模式
    发表于 09-24 09:12

    什么是Bootloader?具有什么特点?

    嵌入式Linux移植和Uboot一、什么是Bootloader二、Bootloader的特点三、Bootloader的执行模式四、一些bootloa
    发表于 12-17 06:54

    bootloader的升级模式有哪几种

    bootloader 升级模式bootloader 的升级模式常见有以下两种:bootloader 分区 + app1 分区 + app2
    发表于 01-25 07:33

    BootLoader_BootLoader是什么

    ARM实现手指静脉识别系统_本文将从 BootLoader的概念、BootLoader 的框架结构与安装等四个方面来讨论。
    发表于 11-30 10:32 3113次阅读

    解锁BootLoader

    BootLoader就是在操作系统内核运行之前运行的一段小程序。本内容介绍了BootLoader是什么及解锁Bootloader
    发表于 05-30 17:00 3598次阅读

    bootloader是什么意思_bootloader是什么程序

    Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作
    发表于 11-10 15:25 1.4w次阅读

    bootloader模式怎么进入

    对于很多安卓手机用户们来说,相信刷过机的用户们一定对Bootloader模式不会陌生,Bootloader就相当于手机的bios,它在手机启动的时候根据基带初始化硬件,然后引导系统内核,直到系统启动。
    发表于 11-10 16:59 4.9w次阅读

    路由器如何进入uboot模式

    U-Boot的工作模式有启动加载模式和下载模式。启动加载模式Bootloader的正常工作模式
    发表于 12-12 10:55 3.8w次阅读
    路由器如何进入uboot<b class='flag-5'>模式</b>

    启动代码与bootloader有什么区别

    我主要遇到了这样一个问题,启动代码和Bootloader的区别以及它们在ARM上运行操作系统和不运行操作系统(只有用户程序)的关系。启动代码是Bootloader,但不能说
    发表于 12-11 17:11 10次下载
    启动代码与<b class='flag-5'>bootloader</b>有什么区别

    Bootloader是什么Bootloader的介绍和过程详细解

    3.Bootloader工作模式 4.Bootloader启动过程5.vivi Bootloader源代码分析 6.vivi Bootloader
    发表于 12-11 17:33 46次下载
    <b class='flag-5'>Bootloader</b>是什么<b class='flag-5'>Bootloader</b>的介绍和过程详细解

    MCU Bootloader总结

    Bootloader本文只探讨MCU(单片机)下的Bootloader,对ARM系列暂不做探讨。(1)bootloader是弄啥的?(2)为什么要引入bootloader(也就是加入
    发表于 11-05 15:51 33次下载
    MCU <b class='flag-5'>Bootloader</b>总结

    stm32 IOT_STM32通用Bootloader——FOTA

    bootloader 升级模式bootloader 的升级模式常见有以下两种:bootloader 分区 + app1 分区 + app2
    发表于 11-30 19:21 23次下载
    stm32 IOT_STM32通用<b class='flag-5'>Bootloader</b>——FOTA

    一文了解bootloader

    大多数Bootloader 包含两种操作模式
    的头像 发表于 06-25 10:05 2283次阅读
    一文了解<b class='flag-5'>bootloader</b>