1引言对于PC的体系结构,其开机后的初始化处理器配置、硬件初始化、启动操作系统等操作是由BIOS(BasicInput/OutputSysteIn)和位于硬盘MBR(MasterBoolRecord)中的系统导引程序(如LILO和GRUB等)一起完成的。但在嵌入式系统中,主要使用FLASH作为系统存储媒质,而很少使用磁盘,因此整个系统的加载启动任务就完全由引导程序(Bootloader)来完成。Bootloader主要完成的功能有:装载(load)和启动(boot)。Bootloader依赖于实际的硬件和应
1 引 言
对于PC的体系结构,其开机后的初始化处理器配置、硬件初始化、启动操作系统等操作是由BIOS(Basic Input/Output SysteIn)和位于硬盘MBR(Master Bool Record)中的系统导引程序(如LILO和GRUB等)一起完成的。但在嵌入式系统中,主要使用FLASH作为系统存储媒质,而很少使用磁盘,因此整个系统的加载启动任务就完全由引导程序(Bootloader )来完成。Bootloader 主要完成的功能有:装载(load)和启动(boot)。Bootloader 依赖于实际的硬件和应用环境,因此要为嵌入式系统建立一个通用、标准的Bootloader是非常困难的,通常都需要修改Boot-loader的源程序来完成对特定平台的移植。Blob是一款优秀的Bootloader程序,对其源程序进行修改之后可以很容易移植到XScale体系的。Intel PXA270平台上.本文基于Intel PXA270开发平台.分析Blob的启动流程。
2 Blob及实验平台简介
Blob(Boot Loadel Object)是一款功能强大的BOOtloader。他遵循GPL,源代码完全开放。Blob既可以用来简单的调试,也可以启动Linux kernel。Blob最初是JanDerk Bakker和Erik Mouw为一块名为LART(Linux Advanced Radio Terminal)的板子写的,该板使用的处理器就是Intel公司的Strong ARM SA-1100,所以很容易把Blob移植到ARM,XScale等体系结构的处理器上,如PXA270。
开发平台的主要配置为:
(1)基于Intel XScale架构内核的嵌入式处理器PXA270,内部集成IWMMX指令,加快处理器对多媒体数据的处理速度。
(2)系统稳定工作在520 MHz主频。
(3)64 MB SDRAM,16 MB Nor FLASH,64 MBNand FLASH。
(4)JTAG接口。
(5)2个标准RS 232标准串口。
(6)2个LED灯。
3启动流程分析
Blob的启动过程分为两个阶段:stagel和stage2。
3.1 Blob的第一阶段(stagel)
系统加电复位后,几乎所有的CPU都从复位地址上取指令,Blob第一阶段的代码就是从0x00000000开始的。Stagel主要完成了两个任务:硬件初始化和复制stage2到内存并运行。其流程如图1所示。