Bootloader介绍

概念——什么是Bootloader

       中文名称:系统启动加载器对于计算机系统来说,从开机上电到操作系统启动需要一个引导过程。嵌入式Linux系统同样离不开引导程序,这个引导程序就叫作Bootloader。简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。常见bootloader有:Redboot、ARMboot、U-Boot、Blob、Bios-IT、Bootldr。

嵌入式系统软件层次

一个嵌入式系统从软件角度来看分为3个层次:

       1.引导加载程序:包括固化在固件(firmware)中的boot程序(可选),和Bootloader两大部分。

       2.Linux内核:特定与嵌入式平台的定制内核。

       3.文件系统:包括了系统命令和应用程序。

一个同时装有Bootloader、内核的启动参数、内核映像和跟文件系统映像的固态存储设备的典型空间分配结构图:

       PC机中的引导加载程序由bios(其本质是一段固件程序)和grub或LILO一起组成。bios在完成硬件检测和资源分配后,将硬盘中的引导程序读到系统内存中然后将控制权交给引导程序。引导程序的主要任务是将内核从硬盘上读到内存中,然后跳转到内核的入口点去运行,即启动操作系统。

运行Bootloader

       系统加电或复位后,所有的cpu通常都从cpu制造商预先安排地址开始执行。比如,S3C2410在复位后从地址0x00000000起开始执行。而嵌入式系统则将固态存储设备(比如flash)安排在这个地址上,而Bootloader程序又安排在固态存储器的最前端,这样就能保证在系统加电后,cpu首先执行Bootloader程序。

Bootloader的移植

为什么要进行Bootloader的移植呢?每种不同的cpu体系结构都有不同的Bootloader。除了依赖于cpu的体系结构外,Bootloader还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,外设芯片的类型等。这也就是说,对于两块不同的开发板而言,即使它们是基于同一种cpu而构建的,但如果它们的硬件资源或配置不一致的话,要想在一块开发板上运行的Bootloader程序也能在另一块板子上运行,还是需要做修改。

流程

Bootloader的启动过程可分为单阶段(Sigle-Stage)和(Multi-Stage)两种,通常多阶段的Bootloader具有更复杂的功能,更好的可移植性。从固态设备上启动的Bootloader大多采用两阶段,即启动过程可以分为stage1和stage2:stage1完成初始化硬件,为stage2准备内存空间,并将stage2复制到内存中,设置堆栈,然后跳转到stage2。

Bootloader的stage1通常包括以下步骤:

1.硬件设备初始化。

2.为加载Bootloader的stage2准备RAM空间。

3.拷贝Bootloader的stage2到RAM中。

4.设置好堆栈。

5.跳转到stage2的C程序入口点。

Bootloader的stage2通常包括以下步骤:

1.初始化本阶段要用到的硬件设备。

2.检测系统内存映射。

3.将内核映像和根文件系统映像从flash读到ram中(即加载内核映像和根文件系统映像)。

4.设置内核的启动参数。

5.调用内核。

 

下面为内存分布图:

 

 

 

 

参考内容:http://baike.baidu.com/view/1223454.htm

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值