Bootloader的种类

分享到:
           

    Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软、硬件环境,为终调用操作系统内核做好准备。

    对于嵌入式系统,Bootloader是基于特定硬件平台来实现的,因此,几乎不可能为所有的嵌入式系统都建立一个通用的Bootloader,不同的处理器架构有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于两块不同的嵌入式主板而言,即使它们使用同一种处理器,要想让运行在一块主板上的Bootloader程序也能运行在另一块主板上,一般也都需要修改Bootloader的源程序。

    反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的主板有上百种。通常,它们都能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口。

    Bootloader的种类

    嵌入式系统世界已经有各种各样的Bootloader,种类划分也有多种方式。除了按照处理器体系结构不同划分以外,还有通过功能复杂程度进行划分的。

    首先区分一下“Bootloader”和“Monitor”的概念。严格来说,“Bootloader”只是引导设备并且执行主程序的固件;而“Monitor”还提供了更多的命令行接口,进行调试、读写内存、烧写Flash、配置环境变量等。“Monitor”在嵌入式系统开发过程中提供很好的调试功能,开发完成以后,就完全设置成了一个“Bootloader”。所以,习惯上把它们统称为Bootloader。

    表1.4列出了Linux的开放源码引导程序及其支持的体系结构,表中给出了X86、ARM、PowerPC体系结构的常用引导程序,并且注明了每一种引导程序是不是“Monitor”。

表1.4 Linux的开放源码引导程序

Bootloader Monitor 描述 X86 ARM PowerPC
LILO Linux磁盘引导程序
GRUB GNU的LILO替代程序
Loadlin 从DOS引导Linux
ROLO 从ROM引导Linux而不需要BIOS

续表

Bootloader Monitor 描述 X86 ARM PowerPC
Etherboot 通过以太网卡启动Linux系统的固件
LinuxBIOS 完全替代BIOS的Linux引导程序
BLOB LART等硬件平台的引导程序
Vivi 主要为S3C2410等三星处理器引导Linux
U-Boot 通用引导程序
RedBoot 基于eCos的引导程序

    1.X86

    X86的工作站和服务器上一般使用LILO和GRUB。LILO曾经是Linux发行版主流的Bootloader,不过,现在几乎所有的发行版都已经使用了GRUB,GRUB比LILO有更友好的显示接口,使用配置也更加灵活方便。

    在某些X86嵌入式单板机或者特殊设备上,会采用其他的Bootloader,如ROLO。这些Bootloader可以取代BIOS的功能,能够从Flash中直接引导Linux启动。现在ROLO支持的开发板已经并入U-Boot,所以U-Boot也可以支持X86平台。

    2.ARM

    ARM处理器的芯片提供商很多,所以每种芯片的开发板都有自己的Bootloader,使得ARM Bootloader也变得多种多样。早有ARM720处理器开发板的固件,之后又有了armboot、StrongARM平台的BLOB,还有S3C2410处理器开发板上的Vivi等。现在armboot已经并入了U-Boot,所以U-Boot也支持ARM/XSCALE平台。U-Boot已经成为ARM平台事实上的标准Bootloader。关于ARM的学习可以参考华清远见《ARM开发培训班》的课程大纲。

    3.PowerPC

    PowerPC平台的处理器有标准的Bootloader,就是PPCBOOT。PPCBOOT在合并armboot等之后,创建了U-Boot,成为各种体系结构开发板的通用引导程序。U-Boot仍然是PowerPC平台的主要Bootloader。

    4.MIPS

    MIPS公司开发的YAMON是标准的Bootloader,也有许多MIPS芯片提供商为自己的开发板写了Bootloader。现在,U-Boot也已经支持MIPS平台。

    5.SH

    SH平台的标准Bootloader是sh-boot,RedBoot在这种平台上也很好用。

    6.M68K

    M68K平台没有标准的Bootloader。RedBoot能够支持M68K系列的系统。

    值得说明的是,RedBoot几乎能够支持所有的体系结构,包括MIPS、SH、M68K等。RedBoot是以eCos为基础,采用GPL许可的开源软件工程,现在由core eCos的开发人员维护,源码下载网站是//www.ecoscentric.com/snapshots。RedBoot的文档也相当完善,有详细的使用手册RedBoot User’s Guide。

    本文选自华清远见嵌入式培训教材《从实践中学嵌入式Linux应用程序开发》

   热点链接:

   1、配置主机交叉开发环境
   2、搭建嵌入式交叉编译环境
   3、构建嵌入式Linux交叉开发环境
   4、嵌入式培训资料:搭建交叉编译环境
   5、嵌入式交叉编译过程详解

更多新闻>>