祁杰0843041404 嵌入式Linux的Bootloader
1. 嵌入式Linux的Bootloader的概述
Bootloader简介
引入:对于计算机系统来说,从开机上电到操作系统启动需要一个引导过程。嵌入式Linux 系统同样离不开引导程序,这个引导程序就叫做BootLoader。
对比:回忆一下PC的体系结构我们可以知道,PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的引导程序一起组成。
BIOS在完成硬件检测和资源分配后,将硬盘MBR中的引导程序读到系统的RAM中,然后将控制权交给引导程序。
引导程序的主要运行任务就是将内核映象从硬盘上读到RAM中然后跳转到内核的入点去运行,也即开始启动操作系统。
?而在嵌入式系统中,通常并没有像BIOS那样的固件程序。
?因此整个系统的加载启动任务就完全由BootLoader来完成.
比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时都从地址
0x00000000开始执行.而在这个地址处安排的通常就是系统的BootLoader程序。
1.1Bootloader的概念和功能
BootLoader是一段汇编代码,存放在MBR中,它的主要作用就是将操作系统启动代码读入内存。
从功能上看,Bootloader就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。
设置程序入口
建立异常中断向量表
初始化CPU(堆栈、寄存器、模式…)
初始化硬件设备(SDRAM、Flash、串口…)
初始化目标板(数据搬移、Flash擦除和编程…)
引导和加载内核镜像
(升级)支持开发和调试。从这个层面上看,
功能扩展后bootloader可以虚拟地看成是一个微小的系统级的代码包。
1.2Bootloader 的启动