技术开发 频道

四两拨千金 巧手定制Windows CE系统

二.Windows CE内核定制过程

   嵌入式开发涉及到的问题很多,其中最主要有操作系统内核的定制,驱动程序的编写,和应用程序的研发。对我们开发程序员来说,熟练的掌控嵌入式内核的定制有利于提高效率。Windows CE内核定制是研发的一个重点,它不同于一般应用程序的研发,因为它涉及到硬件。内核定制包括定制板级支持包BSP、定制系统模块、定制原始设备商适配层( OAL)及设备驱动等程序。Windows CE内核定制是在Platform Builder内完成的,它是微软提供的专业软件,能够从官方网站得到评估板。

(1)搭建Platform Builder环境

   微软的Platform Builder集成研发环境包含一系列研发工具,利用它提供的配置文档和调试工具能够快速定制适合目标平台的Windows CE操作系统,只要适当修改和配置Platform Builder的配置文档就能够裁剪和添加相关组件,和配置各种设备驱动程序。

   Platform Builder提供了创建和调试Windows CE映射NK.BIN的集成开发环境,如向导和工具栏,支持活动模板库(ATL)、微软基本类库(MFC)和Visual Basic,为支持的处理器家庭提供编译器、内核调试器以及各种远程调试工具。通过网络通信我们可以将Windows CE操作系统映像文件NK.BIN下载到目标平台,然后让Windows CE在目标平台启动,这时也可通过Platform Builder提供的调试工具查看Windows CE的运行情况。

(2)板级支持包(BSP)的定制

   BSP主要包括BootLoader的研发和OAL的研发。编写BootLoader是定制Windows CE系统第一步,也是关键的一步。只有得到一个稳定工作的Loader程序,才能够更进一步研发Windows CE的BSP。BootLoader是一段单独的程序代码,它存放于目标平台的非易失存储介质中,如ROM或Flash。它主要用于启动硬件和下载NK.bin到目标板上,并有一定的监控作用。

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

   OAL(OEM Adaptation Layer)是OEM 适配层,是位于Windows CE内核和硬件之间,是OAL各个模块代码被编译后(.lib)和其它内核库链接到一起形成Windows CE的内核可执行文档NK.EXE。Windows CE内核在OAL层可使用大量的函数和全局变量,利用这些函数和全局变量OEM能够编写中断处理、RTC、电源管理、调试端口、通用I/O控制代码等。一般来说,Windows CE安装目录的子目录中包含了OAL的部分源码,大多数情况下开发工程师对OAL只要修改即可,甚至无需修改。

(3)驱动程序的开发及平台文档的配置

   在Windows CE中,任何的驱动程序都以Dll形式存在。Dll文档能够用EVC来研发,也能够使用PB来研发。平台文档配置包括4种文档类型:二进制映像生成文档.BIB、注册表文档.REG、目录和文档分配表文档.DAT、数据库文档.DB。通过修改这些配置文档能够裁剪优化Windows CE,用户根据需要来创建自己的配置文档。

(4)SDK导出及内核下载

   BootLoader的研发会生成Eboot.nb0等文档,内核编译会生成NK.nb0和NK.bin等文档。Makeimg.exe用全部配置文件把目标模块和文件合并成一个唯一的Windows CE映像文件NK.BIN。内核下载是先通过JFlash.exe向Flash中写入Eboot.nb0文档,上电运行之后,再通过Eshell.exe来下载NK.bin。然后重起系统,定制的Windows CE就能够运行了。生成映像文件NK.BIN是平台创建过程的最后一步,也是配置Windows CE的最终目标。内核编译完成后,还可以导出一个平台SDK,供在 EVC或VS.net中开发上层软件使用。


三. 定制Windows CE的几点小技巧分享

(1)选择合适的硬件平台

   Windows CE.NET支持多种微处理器家族以及仿真技术,选择合适需求的CPU和标准开发主板(SDB)可以更高效的节省开发时间,这也是定制Windows CE的第一步。

(2)巧用系统提供的BSP包

   Windows CE的移植过程基本上是针对不同的硬件平台CPU,不同的目标板编写BSP的过程。开发工具Platform Builder本身就提供了多种目标板的BSP,如果目标板和Platform Builder提供的相同,那么只需要重新编译生成相应的系统即可。但是实际情况是一般处理器是相同的,但开发板上的外围硬件接口不相同,这时候可以通过修改Platform Builder中相同或相近处理器的BSP来完成一个新的BSP。因此,嵌入系统的开发人员应要多使用Windows CE.NET包括的主板支持包(BSP),从而缩短在硬件开发上所需的时间。

(3)借鉴标本程序加快驱动程序开发
   定制Windows CE系统还有一个非常重要的步骤,就是为外围设备开发驱动程序。通常的做法是从这些外围驱动例程中寻找和硬件平台最接近的作为标本程序,然后再从所选择的硬件平台上做相应的改变,一些新的外围设备应使用由第三方厂商来提供驱动程序,以加快完成开发,使嵌入式产品尽快上市。
 

0
相关文章