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的开放源码引导程序
续表
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、配置主机交叉开发环境 |