首页 理论教育ARM嵌入式系统原理与应用:解析Bootloader

ARM嵌入式系统原理与应用:解析Bootloader

【摘要】:Bootloader是具有引导功能的程序,在嵌入式系统中,Bootloader是系统加电后运行的第一段代码。Bootloader运行在内核之前,其作用是进行基本的初始化工作。图6.13Linux系统的典型分区结构BootLoader是严重地依赖于硬件而实现的,其任务可以划分为两个阶段:第一阶段●基本硬件设备初始化;●为第二阶段准备RAM空间;●复制Bootloader的第二阶段代码到RAM;●设置堆栈;●跳转到第二阶段的C程序入口点。

Bootloader是具有引导功能的程序,在嵌入式系统中,Bootloader是系统加电后运行的第一段代码。Bootloader运行在内核之前,其作用是进行基本的初始化工作。

在嵌入式系统中,BootLoader的作用与PC机上的BIOS类似,通过BootlLoader可以完成对系统板上的主要部件如CPU、SDRAM、Flash、串行口等进行初始化,也可以下载文件到系统板上,对Flash进行擦除与编程。当运行操作系统时,它会在操作系统内核运行之前运行。通过它,可以分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。

嵌入式平台相对于x86平台,一般不会有BIOS,整个系统的引导加载都由存放在flash,rom等存储设备特定位置的BootLoader来完成。开发板加电后,系统会将BootLoader的最前面的一小部分代码通过硬件逻辑自动的装载到SRAM中,之后从SRAM中的0开始执行,在这一小部分的程序中会完成基本的硬件的初始化,将完整的BootLoader搬到内存中,并跳转到ram中的BootLoader来进行继续执行。

嵌入式Linux系统的典型分区结构主要包括以下几个部分,如图6.13所示:

(1)引导加载程序:BootLoader;

(2)Linux内核:根据系统功能所定制的内核;

(3)文件系统:根文件系统以及建立于存储设备(Flash)之上的文件系统;

(4)各种用户应用程序。

图6.13 Linux系统的典型分区结构

BootLoader是严重地依赖于硬件而实现的,其任务可以划分为两个阶段:

第一阶段(汇编实现)(www.chuimin.cn)

●基本硬件设备初始化(屏蔽所有中断、关闭处理器内部指令/数据Cache等);

●为第二阶段准备RAM空间;

●复制Bootloader的第二阶段代码到RAM;

●设置堆栈;

●跳转到第二阶段的C程序入口点。

第二阶段(C语言实现)

●初始化本阶段所要用到的硬件设备;

●检测系统的内存映射;

●将内核映像和根文件系统映像从FLASH读到RAM;

●为内核设置启动参数;

●调用内核。