1 Windows CE系统和Platform Builder 4.2
Windows CE是微软推出的一个32位、多线程、多任务的嵌入式操作系统,是微软专门为信息设备、移动应用、嵌入式应用等设计的嵌入式模块型操作系统。用户可选择、组合和配置Windows CE。NET的模块和组件来创建用户版的操作系统。
Windows CE。NET是WindOWS CE 3。0的后继产品,其系统组成如图1所示。Windows CE。NET为快速建立下一代智能移动和小内存占用的设备提供了一个良好的实时操作系统,它具备完整的操作系统特性集和针对端对端开发的环境,并包括了定制设备所需要的一切,例如,联网能力、实时性、小内存占用、多媒体以及Web浏览功能。
Platform Builder 4。2是微软提供给Windows CE。NET开发人员进行基于Windows CE。NET平台下嵌入式操作系统定制的集成开发环境。它提供了所有进行设计、创建、编译、测试和调试Windows CE。NET操作系统平台的工具,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试。同时开发人员还可以利用Platform Builder来进行驱动程序和应用程序项目的开发等。
2 硬件平台
HHARM9-EDU开发平台是由华恒公司开发的一套用于嵌入式系统教学的平台,它由核心板和底板组成。核心板上集成了Samsung S3C2410处理器、16 M 的FLASH 和64 M SDRAM。Samsung的S3C2410处理器是一款高性价比、低功耗、体积小、高性能、高集成度的微处理器,它采用203 MHz的ARM920T内核,集成了16 KB指令缓存和16 KB数据缓存,并利用MMU实现对虚拟内存的管理,LCD控制器支持STN屏或FTT屏,支持NAND flash。核心板功能模块见图2。
3 Windows CE. NET系统移植
3.1 移植流程
从根本上说,Windows CE。NET的移植过程也就是改写BSP的过程。BSP又称板级支持包,它是一个包括启动程序、OEM适配层程序(OAL)、标准开发板(SDB)和相关硬件设备的驱动程序的软件包。BSP是基于Windows CE。NET平台系统的主要部分。操作系统移植步骤为:
1)对操作系统进行裁减,配置各个组件并且修改相关的配置文件;
2)开发目标设备系统上的设备驱动程序,建立定制的CE操作系统映像文件;
3)将目标文件下载到目标设备上进行调试;
4)定制操作系统内核后,导出平台SDK,供在Embedded Visual C++中开发上层应用软件。
移植流程见图3
开发工具Platform Builder自身就提供了多种目标板的BSP。如果用户的目标板和Platform Builder提供的相同,那么只需要重新编译生成相应的系统镜像下载到目标板即可。但是实际情况更多的可能是处理器相同,而板上的外围设备接口不同,这时候只有修改Platform Builder中相同或相近的处理器的BSP来生成一个新的BSP,这样就可以大大减少BSP的研发周期。
3.2 基于S3C2410板的BSP开发
BSP的开发主要包括Bootloader、OAL、本地驱动程序的开发以及一些文件的配置 。
1)Bootloader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。它存放于目标平台的非易失性存储介质中,如ROM 或Flash。本文移植使用的是华恒公司提供的ppcboot。
2)OAL即设备商适配层中位于Windows CE内核和目标硬件平台之间的一个代码层。开发OAL的目的是为了实现Windows CE。NET内核和目标硬件之间的通信,包括处理中断、定时器等。
3)Device Drivers(驱动程序)是指能够管理虚拟或者物理设备、协议、服务等的一段软件模块,操作系统通过驱动程序直接和硬件打交道。设备驱动设计的具体步骤是通过Platform Builder创建一个新的平台,然后根据硬件平台的需要插入和移除驱动,需要修改的文件有Platform。Bib,Platform。reg及驱动程序源代码等。下面以LCD驱动程序源码为例,根据华恒的参考资料,需要对PB的原有驱动进行如下修改:
WORD TempBuffer[241][320]; // 改后buffer的大小
S3C2410DISP::S3C2410DISP(void)
{
RETAILMSG(0,(TEXT("++S3C2410DISP::S3C2410DISP ")));
//setup up display mode related constants
m_nScreenWidth=240; //屏幕宽由原来的480改为240
m_nScreenHeight=320; //屏幕高由原来的640改为现在的320
m_colorDepth=16;
m_cbScanLineLength=m_nScreenWidth*2;
m_FrameBufferSize=m_nScreenHeight*m_cbScanLineLength;
//memory map register access window ,frame buffer,and program LCD controller InitializeHardware();
寄存器设置是由D:WINCE420PLATFORMsmdk2410KERNELHALcfw。c中的InitDisplay函数进行设置。驱动中通过读注册表中的相应键的值来获得framebuffer的地址。
[HKEY_LOCAL_MACHINEDriverS3C2410CONFIG]
"DisplayDll"="s3c2410disp。dll"
"LCDVirtualFrameBase"=dword:ac100000
"LCDPhysicalFrameBase"=dword:30100000
4)平台文件的配置。配置文件包括源代码配置文件和操作系统镜像配置文件。源代码配置文件主要是告诉Build工具需要用到的路径、C或Visual C++的源文件以及生成什么类型的二进制文件等,包括Dirs、Sources、Makefile文件等。操作系统镜像配置文件则主要用于给Makeimag工具生成操作系统镜像,包括。bib(二进制映像文件)、。reg(注册表文件)、。dat(文件系统描述文件)、。db(数据库文件)。本文中源代码配置文件只对配置文件做了相应的修改。
利用上述生成的BSP,通过Platform Builder创建一个新的平台,本文直接选择Mobile Handheld平台,接下来根据需要进行选择。最后在WINCE42OPUBLICplatformRelDirSAMSUNG_SMDK2410_ARMV4Release下得到NK。bin,对其进行压缩之后烧写到Flash中。同时导出平台的SDK,供在EVC上开发应用程序。
3.3 在目标设备上操作系统镜像的调试
开发板和PC机可以通过串行饼行端口、以太网和JTAG/BDM 来进行操作系统映像的下载。本文中,开发板同PC机接网线、串口线,设定超级终端,最后系统在开发板上运行。
4 结束语
本文简单介绍了Windows CE。NET在HHARM9-EDU 的移植过程,对于其他处理器平台,同样具有参考价值。Windows CE。NET在不同硬件平台上的移植主要是根据对应的硬件修改BSP的过程,驱动程序的设计是构建BSP的关键之一,在没有新的外设情况下,驱动的设计可以在PB提供的源码基础上进行修改。对于有新的硬件设备情况下就要对其进行重新编写。