基于Intel PXA270的嵌入式操作系统移植

时间:2011-09-04

  随着微电子技术和计算机技术的发展,计算机不断趋向于微型化和嵌入化,使它更广泛地融入人们的工作、生活和娱乐等各个方面。人们已经普遍使用手机、PDA、手持设备和掌上电脑等信息终端来储存和处理各种信息,这正是嵌入式技术应用迅速发展的一个证明。

  进入21世纪以来,嵌入式技术逐渐成熟并全面展开,已经成为通信和消费类产品的共同发展方向。在信息家电领域,如网络冰箱、家庭网关、数字机顶盒、数字电视等的发展,使得嵌入式系统正扮演着越来越重要的角色。在个人计算机领域中,嵌入式产品使个人商用、娱乐和通信功能相结合,以自然的人机交互界面和丰富的多媒体处理能力迅速得以推广,并取得了巨大成功,而所有上述产品都离不开嵌入式技术。所以,嵌入式系统的开发,已被人们公认为是一个具有良好发展潜力的行业。然而,WindowsCE在不同CPU,不同硬件环境下的移植成为了限制其进一步发展的障碍。本文利用PlatformBuilder工具并以EEliod Evluation开发板为对象,介绍了基于Intel PXA270WindowsCE的移植方法和内容。并给出了在此操作系统成功开发的应用程序的运行结果。

  1.系统硬件平台

  论文使用的开发平台为深圳亿道公司提供的EEliod Evluation开发板,该开发板采用的是基于Intel XScale微体系结构的Intel PXA270 处理器。Intel PXA270微处理器芯片就是一款集成了32位Intel XScale处理器核、多通信通道、LCD控制器、增强型存储控制器和PCMCIA/CF控制器以及通用I/O口的高度集成的应用处理器。

  2.Windows CE.net嵌入式操作系统

  Windows CE.net 是为各种嵌入式系统和产品设计的一种压缩的、高效的、可升级的操作系统。在 Windows CE.net 产品的开发中,有两个重要的方面,一个是内核定制,一个是应用程序的开发,微软在这两个方面都提供了非常好的开发工具,这就是内核定制工具 Platform Builder 和应用程序开发工具 Embedded Visual C++。Platform Builder 是基于 Windows CE.net平台下嵌入式操作系统定制的集成开发环境。它提供了所有进行设计、创建、编译、测试和调试 Windows CE.net操作系统平台的工具。同时,还可利用 Platform Builder 来进行驱动程序开发和应用程序项目的开发等。由于嵌入式系统资源有限,C++编译器效率高、性能好,Embedded Visual C++(EVC)便成了其应用程序广泛的开发工具。

  对嵌入式Windows CE.Net操作系统的主要体系结构进行剖析。研究设计出了维吾尔文本地化环境,利用资源编译器编译和反编译功能,构建了基于Windows CE.Net平台的维吾尔文图形用户界面资源库,实现Windows CE.Net的界面维文化和基于Windows CE.Net的应用程序的维文支持;开发了输入法程序,实现Windows CE.Net的维吾尔文字键盘输入和软键盘输入;通过编制维吾尔文字库,为Windows CE.Net平台下维吾尔文字的显示、打印提供了基础。

  3 操作系统移植

  Windows CE.net并不是一个通用的安装版操作系统,在形形色色的嵌入式硬件设备世界里,一款CE系统通常只会针对某一种硬件平台生成。所以,必须根据自己的硬件平台和应用场合定制CE。操作系统移植步骤为:

  1)对操作系统进行裁减,配置各个组件并且修改相关的配置文件

  2)开发目标设备系统上的设备驱动程序,建立定制的CE操作系统映像文件;

  3)将目标文件到目标设备上进行调试;4)定制操作系统内核后,导出平台SDK,供在Embedded Visual C++中开发上层应用软件。

  开发工具Platform Builder自身就提供了多种目标板的BSP.如果用户的目标板和Platform Builder提供的相同,那么只需要重新编译生成相应的系统镜像到目标板即可。但是实际情况更多的可能是处理器相同,而板上的外围设备接口不同,这时候只有修改Platform Builder中相同或相近的处理器的BSP来生成一个新的BSP,这样就可以大大减少BSP的研发周期。

  3.1 BootLoader的移植

  BootLoader是一段单独的程序代码,它存放于目标平台的非易失性存储介质中,如ROM或Flash。在开发CE的过程中,它主要用于启动硬件和nk.bin到目标板上,并有一定的监控作用

  由于BootLoader涉及到基本的硬件操作,如CPU的结构、指令等,同时又涉及到以太网协议(TFTP,当然也可能通过串口)和映像文件格式。因此从零实现的话,会需要相当长的过程。好在微软为每种类型的CPU都提供了某种标准开发板的BootLoader例程,因此通常的做法是:从这些例程中寻找与硬件平台接近的作为标本程序,然后再从自己的硬件平台上入手做相应的改动。一些新的评估板可能会由第三方的厂商来提供Bootloader。如果硬件平台是从这样的基板设计而来的话,那么去寻求这些厂商获取Bootloader来移植,以减少工作量。本文移植使用的就是PXA270 Bootloader。

  由于实现Bootloader依赖CPU的体系结构,因此大多数Bootloader分为stage1和stage2两部分,并依赖于CPU体系结构的代码,例如:设备初始化代码等,通常放在stage1中,一般采用汇编语言。而stage2则通常采用C语言实现复杂功能,而且代码具有良好的可读性和移植性。stage1步骤通常包括:硬件设备初始化;为加载Bootloader的stage2准备RAM空间;拷贝Bootloader的stage2到RAM空间中;设置好堆栈;跳转到stage2的C入口点。Bootloader的stage2步骤通常包括:初始化当前阶段使用的硬件设备;检测系统内存映射;将Kernel映像和根文件系统映像从Flash上读到RAM空间中;为内核设置启动参数;调用内核。

  3.2驱动程序的开发

  与其他操作系统一样,Windows CE.net也提供了驱动软件,这些软件的目的是驱动内部和外围的硬件设备,或者为他们提供接口。驱动程序将操作系统和设备连接起来,使得操作系统能够识别设备并为应用程序提供设备服务。目前基于 Windows CE.net的两种模型是本机设备驱动程序和流接口驱动程序。

  本机设备驱动适于集成到 Windows CE.net平台的设备。通用 LED 驱动和电源驱动就是这样的例子。微软提供了定制接口的方式来支持内部设备驱动程序,绝大多数的开发人员不需要编写本机设备驱动程序。

  另外一种驱动模型是具有定制接口的流接口驱动程序,它是一般类型的设备驱动程序。流接口驱动程序表现为用户的动态链接库 DLL,用来实现一组固定的函数称为流接口函数,这使得应用程序可通过文件系统访问这些驱动程序。该部分实例参见参考文献4,这里不再详述。

  3.3 操作系统配置、编译和

  针对开发中使用的开发平台和应用需求,下面我们使用Windows CE.net操作系统移植开发工具Platform Builder来完成操作系统的配置编译以及工作。

  3.3.1 配置Platform Builder

  在完成BSP或者驱动程序开发后,就可以用CEC Editor来编辑一个CEC文件,成功后就可以把此文件加载到PB IDE中。其中的原理就是PB用CEC文件来增加或者删除某个功能单元,PB会解释CEC文件中的数据格式。CEC文件编辑如图1所示。加载CEC文件到PB中如图2所示。

编辑CEC文件实例

图1 编辑CEC文件实例

加载CEC文件实例

图2 加载CEC文件实例

  3.3.2 配置操作系统

  选择File->New Platform来开始一个“New Platform Wizard”,按照Platform Wizard 完成平台的基本配置,在第三步选择BSP包时,选择 EMDOOR SYSTEMS XSBASE270:ARMV4I。Net CF2.0时有些依赖的部件无法选择,通过选择。Net CF1.0支持就完成选择了。

  完成向导后,在编译内核镜像前,需要在Catalog中添加一些我们需要的组件和配置整个平台系统变量。在Catalog中点击右键就可以添加组件到工程中。可以在菜单View/Catalog中打开Catalog窗口,将选用到的组件添加到系统中。

  针对本文中应用程序开发的需要,在EELiod 开发平台上选用的系统配置方案为:

  (1)添加Usb Activesync (文件同步)

  (Catalog->Core OS -> Windows CE.net devices -> Applications - End User->ActiveSync-> File Sync)

  (2)添加COM组件运行时加载支持

  (Catalog->Core OS -> Windows CE.net devices -> Applications and Services Development-> Component Object Mode-> COM-> CoCreateGuid functionality for OLE32)

  (3)添加USB Mass Storage

  (Catalog->Core OS -> Windows CE.net devices -> Core OS Services-> USB Host Support ->USB Storage Class Driver)

  (4)添加Fat File System

  (Catalog->Core OS -> Windows CE.net devices -> File Systems and Data Store -> Storage Manager-> FAT File System)

  (5)添加Disk Partition

  (Catalog->Core OS -> Windows CE.net devices -> File Systems and Data Store -> Storage Manager-> Partition Driver)

  (6)添加软键盘

  (Catalog->Core OS -> Windows CE.net devices -> File Systems and Data Store -> Storage Manager-> Storage Manager Control Panel Applet)

  (7)添加USB Client 驱动

  (Catalog-> Device Drivers -> USB Function -> USB Function Clients -> Serial)

  (8)添加网卡驱动

  (Catalog-> Third Party-> BSPs -> Emdoor Systems XSBase270: ARMV4I -> Device Drivers -> Networking->Local Area Networking(LAN) devices->lan91c111)

  (9)添加Usb Activesync (USB Function)。

  (Catalog-> Third Party-> BSPs -> Emdoor Systems XSBase270: ARMV4I -> Device Drivers -> USB Function->USB Function Bus Drivers->PXA27x USB Function)

  3.3.3编译平台

  在配置好操作系统后,下一步就是编译,编译过程分成4个阶段:sysgen阶段、特征编译(feature build)阶段、发行目录拷贝(release copy)阶段、映像生成(make image)阶段。在开始编译前,需要通过Platform->Setting对话框来配置一些编译选项,在该系统中所设置编译选项如图3所示。

在该系统中所设置编译选项

图3 配置平台编译设置

  3.3.4 镜像

  开发板和PC机可以通过串行饼行端口、以太网和JTAG/BDM 来进行操作系统映像的。开发板同PC机接网线、串口线,设定超级终端,系统在开发板上运行。

  编译整个平台,待编译成功后会在Release目录($ FLATRELEASEDIR )下会找到一个Bootloader 镜像文件eboot.nbo和系统镜像文件NK.bin。具体使用方法为将Eboot.nb0复制到jflash工具执行文件所在的目录,打开命令行,转到Jflash目录,执行 Jflash PXA270 eboot.nb0  命令。

  Jflash 使用PC机的并口将eboot.nb0到开发板,上面命令中Pxa270是我们开发板上JTAG接口的相关配置信息。向目标板上系统镜像的途径有多种,如通过串口、并口、网卡、USB等。只要BootLoader PC机上支持,可以选择效率高的一种来镜像。本论文中我们用到的BootLoader程序Eboot支持网卡,使用Platform Builder自带工具。配置如图4所示:

  Target->Connectivity Options in Platform Builder.

操作系统镜像    

图4 操作系统镜像

  4.应用程序开发

  在Windows CE.net嵌入式操作系统上进行应用程序开发时,首先要考虑到一个问题:应用程序开发、调试和运行在不同的平台之间进行的。将编译好的SDK安装到开发的PC机上,就可以使用EVC进行应用程序开发了。图5为在论文所定制和移植的操作系统上开发的儿童多媒体词典的运行效果图。

儿童多媒体词典的运行效果图

图5 儿童多媒体词典的运行效果图

  5.结束语

  嵌入式操作系统应用在千变万化的硬件环境中,所以要根据硬件环境的变化进行配置,来满足不同的应用要求。本文介绍了Windows CE.net在Intel PXA270的移植过程,对于其他处理器硬件环境,同样具有参考价值。

  本文简单介绍了Windows CE.NET在HHARM9-EDU 的移植过程,对于其他处理器平台,同样具有参考价值。Windows CE.NET在不同硬件平台上的移植主要是根据对应的硬件修改BSP的过程,驱动程序的设计是构建BSP的关键之一,在没有新的外设情况下,驱动的设计可以在PB提供的源码基础上进行修改。对于有新的硬件设备情况下就要对其进行重新编写。


  

参考文献:

[1]. ROM datasheet https://www.dzsc.com/datasheet/ROM_1188413.html.
[2]. COM datasheet https://www.dzsc.com/datasheet/COM_1118194.html.
[3]. lan91c111 datasheet https://www.dzsc.com/datasheet/lan91c111_1054180.html.


上一篇:([\u@\h \W]\# )在移植根文件系统时的处理方法
下一篇:介绍微软Windows CE的实时系统

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料