- Bootloader介绍
(一)为什么需要bootloader
由于Linux内核不支持自启,因此我们需要一个引导程序来引导Linux内核启动,并且做一些前期准备,这个引导程序就是bootloader,但是由于每种开发板资源不同,而且cpu架构之间也有差别,因此一款bootloader程序不可能适用于所有的环境。但是经过大师们的努力,经过简单的配置改动,就能够实现引导很多操作系统,这款引导代码就是U-Boot。
U-Boot的优点:
- 源码开放;
- 支持多种嵌入式系统操作内核(Linux、vxworks);
- 支持多种处理器系列(arm,x86);
- 灵活性和可靠性较高;
- 高度灵活的功能设置,适合U-Boot调试、产品发布等;
- 拥有丰富的设备驱动源码;
- 较为丰富的开发调试文档以及强大的技术支持。
(二)bootloader的启动方式
CPU在上电或者复位时,会从某个地址开始执行。ARM结构的CPU从0x0000000开始,通常这个开始地址处就存放了BL1+bootloader这样一上电就可以执行的代码(bootloader相当于BL2)。
从开发和用户使用角度看,bootloader分为以下两种操作模式。
自启动模式(Boot loading):
在这种模式中,bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程不需要用户介入,在产品发布以后,基本采用这种工作模式。
交互模式(Downloading):
在这种模式下,开发人员可以使用各种命令通过串口或者网络从主机下载文件到RAM中,可以被bootloader写到目标机的固态存储介质中,或者直接进入系统的引导。
(三)常用bootloader
由于各个开发板的差异以及CPU的不同,导致bootloader的种类也非常多,以下列出了Linux的开发源码的bootloader及其支持的结构:
开放源码的linux引导程序 |
|||||
Bootloader |
Monitor |
描述 |
X86 |
ARM |
PowerPC |