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

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

3天内不再提示

嵌入式系统里的Boot Loader技术详解

开源嵌入式 来源:搜狐网 作者:搜狐网 2020-09-27 18:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式系统当中你可能经常听到 boot loader(引导加载器)这一词,boot loader是指什么呢?在我们日常经常接触的东西中是不是有与boot loader的作用或是概念相似的呢?如果你稍微熟悉计算机的组成,你一定知道BIOS(Basic Input/Output System)。BIOS在计算机中就是用来启动计算系统的,在完成一定的硬件初始化工作以及人机交互后,它加载位于硬盘中的操作系统,并最终运行操作系统。嵌入式系统中的boot loader与BIOS的作用就是相类似的,也是完成对于处理器相关的硬件资源进行初始化后,最后加载通常是存放在FLASH中的应用程序,当然在嵌入式系统当中操作系统与应用程序一般是在同一个可执行文件中的,这与我们的电脑有很大的不同。
BIOS与boot loader有相同之处,比如:
1)完成处理器正常最小系统的初始化。最小系统的概念通过举个例比较容易让人明白,比如对于我们的计算机,通常在初始化时不需要用到以太网,因此,在最小化系统中就不包括以太网卡的初始化,对其的初始化完全可以放到操作系统中去做,而不是在BIOS中。相类似的是,在嵌入式系统中,我们通常不需要在初始化的过程中用到USB设备,那么对于USB设备的初始化就不需要包含在最小系统中,而可以在被boot loader加载的应用程序中去初始化它。

2)两者在最后都得加载其它的程序,并将运行权交给被加载的程序。对于BIOS,其所加载的程序通常是操作系统,当然,如果你正在安装系统那么BIOS所加载的可能是位于光盘中安装程序。对于loader,其加载的是一个可执行程序,这一可执行程序包括实时操作系统(有的也不是实时操作系统)和我们的应用程序。

3)如果BIOS或是boot loader程序太大,通常都会采用压缩技术对其进行压缩。对于BIOS,其肯定会采用压缩技术进行压缩,因为BIOS随着计算机行业的飞速发展而越来越复杂,比如,以前的BIOS不需要支持USB的鼠标和键盘,但现在就得支持了,这就意味着BIOS要有USB鼠标和键盘的驱动程序。另一方面计算机的出货量大,所以BIOS芯片(其实就是一块FLASH芯片)的容量也就会尽可能的控制得小以提高利润,比如可能控制其容量在512K字节。同BIOS相类似的是,如果我们的嵌入式系统中的FLASH紧张时,为了节省FLASH空间,我们也得对boot loader采用压缩技术。可能有人要问,BIOS也好,boot loader也好,如果采用了压缩技术对其压缩,那是谁负责在运行它们时对其解压缩呢?答案是它们自己,很有趣吧!其实,我们说对它们采用压缩技术并不是对于全部的程序(或数据)都采用压缩技术。在它们当中,一定存在一部分不压缩的部分,这保证处理器启动时,能直接运行这部分的代码。技巧在于,没有压缩的代码当中包括了解压程序(从C程序角度来看是几个函数),其将被压缩了的部分解压到内存中。当然,其中的程序处理很有技巧性,要保证程序在运行的过程中,对于压缩部分代码的运行是透明的,这在具体的代码分析中我们再来看。
BIOS与boot loader除了相同之处外,还有不同之处,它们是:

1)BIOS往往比boot loader复杂很多,因为我们的计算机硬件环境比嵌入式系统复杂得多。在计算机行业,为了保证操作系统在设计时尽可能运行在不同的主板上,这需要BIOS的帮助以屏蔽一些硬件信息。操作系统对主板上的一些硬件资源的访问,需要通过BIOS来完成,即调用BIOS的功能(或说是函数)来完成。这样做的好处是非常的明显的,操作系统的开发商不用关心主板上的具体硬件是如何设计的,而主板的设计厂商则负责实现BIOS来对主板上的硬件资源进行存取访问。总的来说,就是将主板上对于复杂硬件资源的处理任务交给了主板厂商来完成,而不用操作系统厂商去关心,因当说这样做非常的合理和有效。
2)BIOS在加载完了操作系统以后,其还将驻留在内存中,以便操作系统在运行的过程中调用其功能,但boot loader就不需要这样了。通常,boot loader加载完了程序后,跳转到被加载的程序后就不再存在了,这里所说的跳转有时也称之为将运行权交给了被加载程序。
3)boot loader通常采用汇编和C程序相结合进行编写,但BIOS为了节省程序空间往往全部采用汇编进行编写。
下面我们来看一看boot loader在启动过程中会做哪些事情。在讨论这些之前,我们需要明白嵌入式系统的处理器与我们计算机处理器的区别是什么。对于嵌入式系统的处理器,准确的说应当叫微控制器,即英文的microcontroller,而我们的计算机处理器则应称之为微处理器,即microprocessor。微控制器除了具有微处理器的功能外(即通过运算来处理一定的事务),往往其中集成了很多的其它硬件功能模块,比如SDRAM内存控制器、I2C控制器、SD卡控制器等等。正如微处理器的名字那样,它只有处理功能,其它的控制芯片都是通过芯片组(什么是芯片组,我打算后面用另一篇文章来进行解释)来完成的。虽然,我们对于微处理器和微控制器采用了处理器这么一个简化词来描述,但我们需要明白其中的不同之处,这一点非常的重要。下面我们来看一看boot loader做些什么事情,它们有:
1)对PLL时钟进行初始化。往往处理器一启动时,为了更好的设备兼容性,其工作频率都很低,在boot loader程序的特定位置,需要提高处理器的时钟频率,以加快运行速度。速度一旦调好往往是不会改变的了,之所以说是往往,因为如果处理器支持节电模式功能,那也会造成PLL时钟的变化(时钟越快越耗电)。
2)初始化SDRAM内存控制器。通常loader自身也需要用到内存,比如,大多boot loader都会将自己加载到内存中。内存的配置一般是包括行地址和列地址的配置以及自动刷新频率的配置。一旦配置好了,后面就不用再更改了。
3)初始化中断控制器和中断服务程序。

4)初始化各地址空间的片选地址寄存器和读写时序。
5)初始化堆栈(stack)寄存器。比如,在x86中需要初始化ESP寄存器,在PowerPC中需要初始化r1寄存器。
6)对于boot loader中需要访问的其它硬件设备进行初始化。比如,我们通常会有一个串口作为控制台(console),这就需要在boot loader中初始化相应的串口,并接受用户的命令,以响应用户的请求。可以想像,boot loader中存在一定的命令处理程序。
7)将boot loader自身加载到内存中,如果需要解压,那么还得做解压操作。前面提到了,将boot loader加载到内存是为了更快的运行程序。

8)加载需要运行的应用程序并最终运行被加载的应用程序。

需要指出的是,在嵌入式系统中我们的应用程序当中还得做一部分与boot loader相同的工作。比如,对于中断服务程序的重新初始化,因为在boot loader中设置的是boot loader中的程序作为中断服务程序,当应用程序加载了以后,boot loader中的程序就不复存在了,因此,我们需要重新初始化中断服务程序以指向被加载程序中的函数。对于SDRAM内存的初始化、PLL的初始化,在应用程序中通常不需要重新做。虽然,在此我们没有对具体的处理器和操作系统进行讲解,但是无论对于什么处理器和操作系统,其总体过程几乎相同,只是处理器的指令集不同。最后,我要给读者您留一个问题,这个问题如下。

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

    关注

    41

    文章

    3841

    浏览量

    134052
  • bootloader
    +关注

    关注

    2

    文章

    245

    浏览量

    48382

原文标题:开发嵌入式必须懂的技术-Boot Loader详细介绍

文章出处:【微信号:KY_QRS,微信公众号:开源嵌入式】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    知识分享-嵌入式系统可靠性模型

    嵌入式系统可靠性设计技术及案例解析1.3嵌入式系统可靠性模型嵌入式
    的头像 发表于 03-11 16:43 489次阅读
    知识分享-<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>可靠性模型

    深入解析U-Boot TPL代码:嵌入式启动的“第一棒”背后的秘密

    嵌入式系统启动过程中,从按下电源键到操作系统开始运行,中间藏着一系列精密的初始化步骤。今天我们就来拆解 Rockchip 平台 U-Boot 中的 TPL(Tiny Program
    的头像 发表于 02-05 14:07 1383次阅读
    深入解析U-<b class='flag-5'>Boot</b> TPL代码:<b class='flag-5'>嵌入式</b>启动的“第一棒”背后的秘密

    嵌入式系统安全设计原则

    随着物联网、工业控制和智能设备的普及,嵌入式系统的安全问题越来越突出。一个小小的漏洞,就可能导致设备被入侵、数据泄露,甚至对人身安全产生威胁。因此,从设计阶段开始就考虑安全,是每一个嵌入式开发者必须
    的头像 发表于 01-19 09:06 556次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>安全设计原则

    什么是嵌入式应用开发?

    包括ARM7、ARM9、ARM11、PowerPC、MIPS等。这些处理器和编程语言的选择取决于具体的硬件条件和开发需求‌。 综上所述,嵌入式应用开发是一个综合性的技术领域,涉及硬件和软件的紧密结合,广泛应用于各种设备和系统
    发表于 01-12 16:13

    arm嵌入式主板优缺点

    Windows CE、Linux等主流的嵌入式操作系统。   ARM的优点   一、高可靠性、高稳定性:在工业控制领域,性能稳定可靠是自动控制基本的要求,ARM嵌入式主板有着很特殊的优势。第一
    发表于 01-08 07:08

    系统嵌入式的学习路线

    嵌入式技术是各种电子产品的核心技术,也是工业4.0、远程医疗、3D打印等新兴产业的核心技术,具有广阔的发展前景。很多计算机、电子信息类专业的学生都想把
    发表于 12-16 07:49

    什么是嵌入式操作系统

    嵌入式 OS 的核心作用(嵌入式开发中最实用的 3 个功能) 1. 多任务管理: 裸机开发的痛点:所有功能写在一个main函数的循环,代码臃肿、逻辑混乱,一个功能出问题会影响整个系统
    发表于 12-09 10:33

    ARM嵌入式这样学

    工程师的的终点只有一个,就是真正的技术专家。 嵌入式技术大体上可分为编程语言,内核技术,操作系统,总线接口,
    发表于 12-04 07:48

    嵌入式和FPGA的区别

    。 在当今智能化时代,嵌入式系统和FPGA技术都是电子系统设计中的重要组成部分,但许多工程师和技术爱好者常常对两者的区别和应用场景感到困惑
    发表于 11-19 06:55

    嵌入式系统的定义和应用领域

    。尽管有些嵌入式系统可能包含操作系统,但大多数情况下,它们仅由一个程序来控制整个逻辑。 从更专业的角度来看,嵌入式系统可以被定义为:以应用
    发表于 11-17 06:49

    嵌入式实时操作系统的特点

    实时嵌入式操作系统(Real-Time Embedded Operating System)是专门设计用于嵌入式系统的实时操作系统
    发表于 11-13 06:30

    【好书推荐】RT-Thread第23 24本相关书籍!《嵌入式应用技术》《嵌入式系统应用开发》| 技术集结

    嵌入式系统与物联网技术的快速发展,对软硬件协同能力提出了更高要求。特别是以开放、灵活为特点的RISC-V架构的兴起,为开发者带来了新的机遇与挑战。本次推荐的两本书——《嵌入式应用
    的头像 发表于 10-22 17:13 1763次阅读
    【好书推荐】RT-Thread第23 24本相关书籍!《<b class='flag-5'>嵌入式</b>应用<b class='flag-5'>技术</b>》《<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>应用开发》| <b class='flag-5'>技术</b>集结

    2025全国大学生嵌入式芯片与系统设计竞赛应用赛道全国总决赛圆满闭幕-飞凌嵌入式

    8月13日2025全国大学生嵌入式芯片与系统设计竞赛应用赛道全国总决赛圆满闭幕,飞凌嵌入式作为大赛协办单位之一,携手瑞芯微在应用赛道设立专属赛题并承担评审工作,积极为高校学子搭建高水平的嵌入式
    的头像 发表于 08-15 08:02 2795次阅读
    2025全国大学生<b class='flag-5'>嵌入式</b>芯片与<b class='flag-5'>系统</b>设计竞赛应用赛道全国总决赛圆满闭幕-飞凌<b class='flag-5'>嵌入式</b>

    入行嵌入式应该怎么准备?

    想入行嵌入式该怎么准备。很能理解大家对于嵌入式的关注,嵌入式系统是当今科技领域中的重要组成部分,它存在于我们生活的方方面面,各行各业。智能化时代的到来也让
    发表于 08-06 10:34

    运行在嵌入式系统上的emApps

    在当今快节奏的嵌入式系统世界中,灵活性和适应性是嵌入式系统实现的关键。SEGGER推出了其最新创新:Embedded apps(emApps)应用,类似于手机上的应用程序,可以运行在
    的头像 发表于 06-18 09:53 1118次阅读
    运行在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>上的emApps