基于Intel PXA270的Windows CE5.0下Boot Loader实现
Windows CE.NET是微软公司向嵌入式领域推出的一款操作系统,被广泛应用于平板电脑、数码相机、彩屏手机、PDA等许多产品当中。
Windows CE的开发过程可以分为:0AL(OEM Abstraction Layer)、驱动、应用程序开发三个步骤。其中,0AL开发是Windows CE开发过程中最基本的一步,而Boot Loader设计在0AL开发中又具有极为关键的作用。因此,本文以Windows CE 5.0在Xscale PXA270处理器上的Ethernet Boot Loader的设计和实现为例,对Boot Loader的实现进行阐述,并分析Boot Loader的架构、启动控制流程和配置安装。
对于Windows CE嵌入式操作系统来说,系统加电后第一条指令就是Boot Loader的代码。Boot Loader通常位于目标设备上的非易失存储设备中(如Flash),并且在系统加电或重置时自动执行。通常可以通过JTAG或串口工具把Boot Loader烧写到目标设备上,Boot Loader的唯一目标就是加载并执行操作系统映像。
在嵌入式应用系统最终产品化后,Boot Loader将不是必须的。因为Windows CE不仅提供了利用Boot Loader加载系统的启动方式,而且提供了通过启动向量ResetVector 加载系统的启动方式。但在系统开发阶段,Boot Loader是必须的,它将使开发更加方便高效。
硬件平台架构
处理器采用英特尔的XScale PXA270系列处理器,可以配合2700G多媒体加速器,提升高分辨率图像处理和3D加速处理能力。硬件开发板的外设包括外部存储器、串口和DM9000AE 100Mb以太网接口芯片。Boot Loader的体系结构
一个典型的以太网Boot Loader由Blcommon、OEM代码(针对不同硬件平台需要修改代码)Eboot和网络驱动程序等部分组成组成,如图1所示。
图1 Boot Loader框架结构
● Blcommon库
BLCOMMON库提供了丰富Boot Loader基本功能,包括复制Boot Loader到RAM 以便高速运行,解析 .bin文件,控制系统加载过程等等。代码库一般放置在%_WINCEROOT% PUBLICCOMMONOAKDRIVERS ETHDBGBLCOMMON。其主要文件为blcommon.c。
● OEM代码
OEM代码是与设备初始化及硬件扩展有关的代码,位置在%_WINCEROOT% PLATFORM平台名称>SRCBOOTLOADER EBOOT。
● EBoot库
Eboot库提供了DHCP、TFTP和UDP服务。BooLoader与Platform Builder建立TFTP连接.并下载系统镜像。其中TFTP用于从开发工作站的Platform Builder下载Windows CE操作系统镜像(这是本文所使用的加载调试方式)。Eboot库代码位于%_WINCEROOT% PUBLIC COMMONOAKDRIVERS ETHDBGEBOOT。
● 网络驱动库
EDBG驱动程序库集成了一些常见以太网驱动,为Bootloader和操作系统访问提供了通用接口。Boot Loader利用这些接口下载Windows CE运行时映象,操作系统利用这些接口实现与Platform Builder的KITL连接。
Boot Loader启动控制流程
由于硬件的差异,Boot Loader的功能可能不同,图2所示的是Boot Loader的较为通用的启动控制流程。
图2 Boot Loader启动控制流程
评论