BootLoader简介
一、BootLoader
1、BootLoader的作用
一个嵌入式linux系统从软件的角度看通常可以分为4个层次:
引导加载程序(boot代码和BootLoader)
Linux内核
文件系统 + (GUI)
用户应用程序
引导加载程序是系统加电后运行的第一段软件代码,用于将内核映像从硬盘上读到RAM中,实现到
核的入口点去运行,即开始启动操作系统。
简单的说,BootLoader就是在操作系统内核运行之前运行的一小段程序,通过这段小程序,可以初始
化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个适合的状态,以便为最终调用操
作系统内核准备好正确的环境。
2、BootLoader操作模式:(大多BootLoader都包含两种不同的操作模式)
(1)、启动模式:BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程
没有用户的介入。
(2)、下载模式:目标机上的BootLoader通过串口连接或联网等方式从主机上下载文件(内核映像、根
文件系统映像...),保存到目标机的RAM中,接着再被BootLoader写到目标机的Flash
类固态存储设备,该模式下通常会向终端用户提供一个简单的命令行接口。
二、常用的BootLoader
ARMBoot, PPCBoot, U-Boot, RedBoot, Blob, Vivi
三、BootLoader基本原理(假定内核映像与根文件映像(可以在固态存储设备运行)都被加载到RAM中运行)
通常,BootLoader是严重地依赖于硬件而实现的,除了依赖于CPU的体系结构外,BootLoader实际上也依
赖于具体的嵌入式板级设备。
由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader分为stage1和stage2两个部分。
stage1:存放依赖于CPU体系结构的代码,如设备初始化代码(通常用汇编语言实现)。
stage2:存放实现更复杂的功能的代码,通常使用C语言实现,代码具有更好的可读性和可移植性。
BootLoader的stage1通常包括以下步骤:
(1)、硬件设备初始化
(2)、为加载BootLoader的stage2准备RAM空间
(3)、复制BootLoader的stage2到RAM空间中
(4)、设置好堆栈
(5)、跳转到stage2的C入口点
BootLoader的stage2通常包括以下步骤:
(1)、初始化本阶段要使用到的硬件设备
(2)、检测系统内存映射
(3)、将内存映像和根文件系统映像从Flash上读到RAM空间中。
(4)、为内核设置启动参数
(5)、调用内核