一、简介
1.概念
在嵌入式操作系统中中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
2.引入
我们平常所用的电脑的启动过程大概是图所示:
但是对于嵌入式系统中他的启动过程是这样的:
在系统上电后,需要运行一段程序来进行初始化,例如关闭看门狗、改变系统时钟、初始化存储控制器、将更多的代码复制到内存中等。这些操作主要是为了将系统的软硬件环境调整到一个合适的状态,为最终加载操作系统内核做好准备。这段程序被称为BootLoader。所以BootLoader就是一段存储在 ROM 中的程序为了方便开发,BootLoader还可以增加一些功能,比如增加网络功能,从而增强其功能。
3.在FLASH的位置
4.ECU组成
ECU包含了三部分Boot Manager、Application Software以及BootSoftware。
其中Boot Software 由Boot Manager 和Reprogramming Software组成,在汽车嵌入式中,我们常说的bootloader 就是Boot Software。
Boot manager:引导程序启动。
Reprogramming Software: 更新软件程序,主要更新 App 程序。
5.作用
如果车辆某个 ECU 只有 Application Software,由于某种故障导致该 ECU的 Application Software 异常,进而导致车辆故障,不能使用。既然属于 Application Software 问题,软件工程师修复好以后,重新将Application Software 刷写进该 ECU 即可。问题来了:怎么将修复好的 Application Software 刷写进该 ECU?为了解决这个问题,Bootloader 应运而生,即:Bootloader 是为更新Application Software 而存在。既然是为更新Application Software 而存在Bootloader 就没有必要时常更新。当车辆下线以后,Bootloader 就固化在ECU 指定内存区,不做更新,而 Application Software 可能会因用户的需求存在升级的可能。
二、启动方式
大多数的BootLoader都有两种不同的操作模式:启动加载模式和下载模式。但是注意BootLoader的最终目的是启动内核,因此其实这两种当时并没有所谓的差别。
1.启动加载模式
上电后,BootLoader从板子的某个固态存储设备上将操作系统加载到RAM中运行,整个过程没有用户介入。这种模式是BootLoader的正常工作模式,产品发布时候,BootLoader就工作在这种模式下。
2.下载模式
这种模式下,开发人员使用各种命令,通过串口连接或者网络连接从主机上下载文件,将他们直接放在内存运行或者烧入flash类固态存储设备中。以后的系统更新也会使用 Boot Loader 的这种工作模式。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。