当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > Bootloader分析(一)
Bootloader分析(一)
时间:2016-12-13作者:华清远见

BootLoader是在嵌入式系统内核运行之前运行的一段程序。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为终调用操作系统内核准备好正确的环境。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

我们可以看到很多种Bootloader,因为体系结构不同的CPU对应不同的Bootloader,有些Bootloader支持多种不同类型体系结构的处理器,如U-boot。Bootloader不但依赖于CPU的体系结构,还依赖于嵌入式的板级设备的配置。即同样一种CPU结构的两块不同的嵌入式开发板,运行在一块开发板上的Bootloader不一定能运行在另一个开发板上,需要修改Bootloader的源程序以适应不同的开发板。

Bootloader的操作模式:

大多数Bootloader均包括两种操作模式,即启动加载模式和下载模式。

1、启动加载模式:Bootloader从目标机上的某个存储设备上将内核加载加载到RAM中运行,整个过程并没有用户的介入。启动加载模式为Bootloader正常工作模式,因此所发布的嵌入式产品的Bootloader只能工作在该模式下。

2、下载模式:这种模式下,目标机上Bootloader将通过串口、网络和USB连接等通信方式从HOST(主机)下载文件,如文件系统镜像、内核镜像等。从主机下载的文件通常首先被Bootloader保存到目标ROM中,然后再被Bootloader写到目标板上的Flash类的固态存储设备上。这种模式一般在第一次安装内核与根文件系统时被使用,或者在系统更新时使用。

Bootloader有很多种,即Bootloader是其他boot的总称。在此我们主讲U-boot。U-boot(Universal Boot Loader)是遵循GPL条款的开放源码项目。

U-boot不仅能够引导加载嵌入式linux系统。还能引导加载FreeBSD、VxWorks、NetBSD等系统。U-boot中的Universal指两个方面:一方面是支持的操作系统多。另一方面是支持大多数的处理器。

U-boot的优点:

U-boot在目前的嵌入式开发中被广泛运用,是其有很多有点。只要有一下几点:

1.开放源代码。

2.支持多种嵌入式操作系统内核,如linux、QNX、LynxOs等。

3.支持多个处理器系列,如ARM、X86、MIPS、PowerPC。

4.较高的稳定性和可靠性。

5.丰富的设备驱动源码,如串口、以太网、SDRAM、Flash、LCD、键盘、鼠标等。

6.较多丰富的开发调试文档与强大的网络技术支持。

7.高度灵活的功能设置,适合U-boot调试、操作系统不同引导要求和嵌入式产品。

U-boot的功能非常强大,主要有一下功能:

系统引导:支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统,即从FLASH中引导压缩/非压缩的系统内核。

1、自加载程序:加载程序分为两部分。一部分内部ROM中厂家固化(芯片生产时固化的)的启动代码和U-boot两部分。因此上电后U-boot的运行是有固化程序引导,由于SRAM的存储空间的限制,u-boot只能运行一部分,剩下的靠已启动的程序来搬运到内存。当u-boot都运行起来,就接管了芯片。然后把内核搬运到内存上执行,随后引导文件系统运行。

2、对必要的硬件初始化:如
              ① CPU,系统时钟设置、中断屏蔽、关MMU。
              ② 串口初始化,网卡初始化。
              ③ 设置异常中断向量表。
              ④ 设置内存控制器。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)