技术开发 频道

巧借WinCE BSP移植 嵌入式系统开发有捷径

WinCE BSP移植的流程和步骤

   从前文分析我们可以知道,WinCE系统移植的重点是BSP 的移植。而BSP移植主要包括启动程序Bootloader、OEM适配层程序OAL、标准开发板(SDB)本地驱动程序以及一些文件配置的修改。以下是WinCE BSP移植的主要内容和流程步骤:

   (1)启动程序Bootloader的移植步骤
   修改Bootloader是移植Win CE系统第一步,也是关键的一步。只有得到一个稳定工作的启动程序,才能够进一步完成WinCE BSP的移植。Bootloader主要用来管理目标平台的启动过程,它是一段单独的程序代码,通过这段小程序可以初始化硬件设备、建立内存空间的映射图和下载操作系统的映像文件等,从而将系统的软硬件环境带到一个合适的状态,它一般存放于目标平台的非易失存储介质中,如ROM或Flash。

   一般来说,对于Bootloader的功能,不同的场合区别很大。比如,在桌面Windows版的PC硬件平台上,由于硬件启动根本就不通过Bootloader(而是通过BIOS),所以Bootloader就无需对CPU加电后的初始化做任何工作;而在嵌入式WinCE平台上,Bootloader是最先被执行的程序,所以就必须包括加电初始化程序,同时通常Bootloader必须包含下载WinCE映像文档的功能。由于Bootloader会涉及到基本的硬件操作,如CPU的结构、指令等,也会又涉及到以太网下载协议和映像文档格式。因此,从零开发实现的话会需要相当长的过程,通常的做法是利用微软为每种类型的CPU提供的某种标准研发板的Bootloader例程。

   根据我在这次项目移植得到的经验,Bootloader的移植步骤主要是:①是修改相应的dir、source文件;②是修改makefile.inc;③是修改boot.bib,使其不与config.bib中的内存分配造成冲突;④是改进eboot,因为eboot烧写NK.BIN的时候会查找BINFS分区,然后把下载的image烧写到BINFS分区。

   (2)OAL的移植步骤
   OAL的全称是OEM Adaption Layer,即原始设备制造商适配层。它是位于Windows CE内核和目标硬件平台之间的一个代码层,OAL主要负责Windows CE与硬件通信,它与CPU、中断、内存、时钟和调试口等核心设备相关,也是OAL各个模块代码被编译后(.lib)和其它内核库链接到一起形成Windows CE的内核可执行文档NK.EXE的关键。简单的说,OAL就是用来屏蔽CPU平台的细节和抽象硬件功能,以实现操作系统内核的可移植性。

   从逻辑结构上看,OAL位于WinCE操作系统的内核与硬件之间,是连接WinCE系统与硬件的枢纽;从功能上看,OAL颇似桌面PC上的BIOS,具有初始化设备、引导操作系统以及抽象硬件功能等作用。但与B10S不同的是,0AL隶属于操作系统,是操作系统的一部分。

   从我在这次项目中得到的经验来看,Windows CE安装目录的子目录中都包含有OAL的部分源码。OAL的移植实现应是在fwxsc1.s、main.c、Flash.c、Edeviceinit.c等文件中,可根据实际需要修改相应的代码。在OAL移植过程中,主要是修改这几个函数:修改Startup.s函数、修改串口调试函数、修改OEMInit函数、修改系统时钟函数和修改中断处理函数等。实际上,大多数情况下开发工程师对OAL只要修改即可,甚至无需修改。
 

0
相关文章