摘要:介绍了Microsoft公司最近推出的嵌入式实时操作系统WindowsCE.NET的功能模块和新增特性。该系统能够根据硬件设计的需要,定制出相应平台并能兼容市场上各类Win32软件,从而加速了用户的开发过程。同时还对WindowsCE.NET和Windows XP embedded两者的性能进行了简单比较,为开发者选用适当的嵌入式操作系统提供了一定的参考。最后阐述了构建基于CE.NET的嵌入式平台的过程,并简要说明了如何在构建的平台上开发嵌入式应用程序。 实时嵌入式操作系统的应用日益广泛。作为新一代嵌入式系统平台,Microsoft Windows CE得到了越来越广泛的应用。Windows CE.NET 4.2是目前Windows CE操作系统中的最新版本,它为基于Windows CE的嵌入式系统的开发提供了更加强大的工具,加速了系统的开发过程,具有广泛的应用前景。 1 Windows CE.NET的系统结构 Windows CE.NET操作系统与其它嵌入式操作系统类似,具有模块化的组织结构。这些模块可能是独立的,也可能有一些依赖关系。每个模块提供特定的系统功能,大的功能模块又可以细分成为几个组件。这种组件式结构能使CE.NET系统变的非常紧凑,仅需使用很少的硬件资源就可运行。最主要的系统模块有5个,它们是: - 内核(NK):Windows CE.NET的内核可以很小,因为系统的大部分功能都在各自的功能模块中实现。不过,它是Windows CE.NET操作系统真正的核心,主要完成6类功能,即处理器调度、内存管理、异常处理、系统内的通信机制、为其他部分提供核心调用例程、为系统范围内的调试提供支持。
- 设备管理模块:提供系统范围内基本的设备列表管理、即插即用管理、电源管理、I/O资源管理等,并实现设备驱动程序得以工作的基本机制。设备配置信息存储在Windows CE.NET的注册表里,用户程序访问一个设备时,通过注册表中的相关项目查询一个设备驱动程序所能提供的接口。
- 数据存储模块:提供基本的数据存储能力,包括对象存储和文件系统。最多可达256MB的RAM 存储器就是Windows CE.NET平台默认使用的存储设备,被称为对象存储(object store)。对象存储在Windows CE.NET中的作用与PC机的硬盘类似,它为应用程序及相关数据提供了持久稳固的存储。Windows CE.NET提供了3种类型的文件系统:基于RAM的文件系统,基于ROM 的文件系统,以及用于支持ATA(Advanced Tcehnology Attachment)设备和SRAM 卡等外围存储设备的FAT文件系统。所有存储设备对文件系统的访问都是通过Win32 API完成的。
- 图形用户界面模块(GWES):它提供以下几个主要功能:基本的绘图引擎、窗口管理、界面的事件机制等。GWES构成了Windows CE.NET中介于操作系统、应用程序以及用户的中间联系层。它支持全部构成Windows CE.NET的窗口、对话框、各种常规控件、菜单以及资源,这些特性使得使用者可以方便地操纵应用程序。
- 通信模块:在整个Windows CE.NET系统中,网络通信模块是最为独立的一个部分,它运行时体现为一系列的动态链接库,其设计目标主要体现在以下4点:
a 高效能:提供最好的网络(无线和有线)应用平台。 b 包容力:支持广泛的网络类型和选项。 c 易使用:通过系统提供的API,用户可以容易地开发出各种网络应用。 d 可拆卸:这是整个网络系统构架的特征,系统可以拆成很多独立的部分,应用系统可以根据需要选择其中一部分,这样可以降低系统开销,使系统更加精简。 以上介绍的5个模块提供了最主要的操作系统功能。除此之外,Windows CE.NET系统还有一些其它模块,包括OAL模块、驱动程序模块、Win32系统服务模块等。在最终的应用系统中,这些功能不一定都会被使用,系统开发者可以根据具体的硬件要求,选择必需的模块或组件,定制出合适的操作系统,而不必为其它不需要的硬件或功能付出额外的代价。CE.NET支持目前市场上绝大多数硬件设备及接口标准,从而保证最大灵活性和系统效率,能够适应广泛的用户系统的要求。 2 Windows CE.NET的特性分析 在众多广泛应用的嵌入式操作系统产品中,除了近几年异军突起的Microsoft Windows CE系列产品外,排在前列的不外乎是Wind River公司的Vxworks,Green Hills Software公司嵌入式产品,嵌入式Linux等。可能这些系统在实时性或其它方面有自身的优势,但它们不能兼容市场上各类Win32软件,故可利用的资源不多。加之其开发工具价格昂贵,详细的技术及开发文档也很难得到,因而开发基于这些操作系统的工业控制系统难度大,进入市场慢。从这点上讲,这类操作系统也不适合作为快速开发工业控制系统的软件平台。
2.1 Windows CE.NET和Windows XP embedded的比较 在Microsoft公司的嵌入式操作系统的家族中有2个成员,即Windows XP embedded和Windows CE.NET,2个成员的差异主要表现在以下4个方面: - 对CPU的特性要求。Windows CE.NET和Windows XP embedded均能与X86系列CPU兼容,但是若结合非X86的CPU进行开发,只能选取WindowsCE.NET,它支持的处理器家族主要包括RAM 系列、Intel x86系列、MIPS系列以及SH系列。另外,对散热性能的要求也将影响到对CPU和操作系统的选择。如果对系统的散热性能要求较高,只能选用非X86系列的处理器,相应的开发软件也只能选取Windows CE.NET。
- 对实时性的支持。作为嵌入式开发平台,Windows CE.NET和Windows XP embedded都具有良好的实时性能。不过,Windows CE.NET对实时性的支持是与生俱来的,是一种硬实时的操作系统;Windows XP embedded是通过采用第三方的办法来优化系统,满足对实时性能的要求,本质上是一种软实时。
- 基于Win32的应用程序。如果开发者的工程设计将不加调整的直接使用现存的Win32应用程序和驱动程序,那么只能选择WindowsXP embedded;Win32应用程序和驱动程序必须被调整后才能在Windows CE.NET的系统中运行。
- 操作系统的内存配置。Windows CE.NET和Windows XP embedded均支持用户根据自己的工程需要,创建一个具有较小内核的系统。不过Windows CE.NET的系统的最小内核可以不足350kB,而Windows XP embedded 系统的最小内核约为8MB。由此可见,开发设备内存的大小及对相应的设备映像的要求是决定选用哪种操作系统的一个重要因素。
从比较中可以看出以上两种嵌入式软件各有特点。另外,两种系统所支持的目标设备也有所不同,开发者可以根据自己的工程要求及相应的硬件设备来选择适当的开发平台。
2.2 Windows CE.NE的新增特性 相比于以前的Windows CE版本,CE.NET在网络通信、内核服务、多媒体和Web浏览等许多部分都有了进一步改善和加强。下面对其主要新增特性加以简单的说明。 1)进程管理。在进程管理方面Windows CE.NET做了很大优化: - 应用程序能独立地规定一个进程中每个线程的堆栈的最大长度。在CE.NET之前,每个线程的堆栈的最大长度取决于主线程的堆栈的大小,而现在WindowsCE.NET中,应用程序能够规定某一特定线程的最大栈尺寸,而这个进程中其它线程可以保持标准设置。
- Windows CE.NET在进程间的通信方面有一个新特性,即端对端消息队列处于相同或不同应用程序的两个线程很容易构成一个消息队列。这个队列对两个线程的读写都是开放的,当其中一个线程进行写操作时另一个进行读操作。这些消息由一组数据块组成,数据块的大小由队列的结构而定,他们存放在消息缓冲区中。一旦消息队列转入存储缓冲区,这些消息能够在内核中被执行,不需程序员的干预。
- 微线程(fibers)技术也被采用到Windows CE中。微线程可以理解为是线程的细分,它直接由应用程序来调度。应用程序通过创建一个线程来转化为一个微线程组,必要时微线程组中每一个微线程可轮流执行。系统将源于特定线程的微线程组当作一个线程来处理。
2)网络通信。随着Internet的发展,网络可以说是无所不在,很多嵌人式系统都要与Internet或者其它网络或设备相连,WindowsCE.NET提供了强大的通信功能,主要表现在: - 对网络传输协议库的改进。Windows CE.NET支持WinSock 2.0版的组件补充了原有的WinSock 1.1版的组件。与WinSock 1.1版不同的是,WinSock 2.0版允许API控制内装协议。开发者可利用WinSock2.0在应用程序和通讯上的优点,来发现和使用底层传输协议的通信能力。
- 蓝牙技术(Bluetooth):蓝牙技术是一种新兴的无线通讯技术,这种技术的主要目标是使设备在大约10米的范围之内无需物理电缆即可通信。使用这种技术的一些主要设备包括无线耳机、调制解调器和打印机等。Windows CE.NET对蓝牙技术具有与生俱来的支持,它允许设备使用具有蓝牙功能的移动电话(例如数据调制解调器)交换文件和对象。
- TCP/IP :Windows CE.NET包括一个基于标准的TCP/IP栈,允许使用Windows CE.NET的设备被用作局域网或远程网络上的节点和服务器。Windows CE.NET还增强了对TCP/IP 的安全性和稳定性。
3)内核服务。 - Windows CE.NET增加了一个存储管理器来管理运行在系统中的多个文件系统。存储管理器中包含了一个分区管理器,它列出一系列的分区管理,包括创建、安装及查询信息。Windows CE.NET可以同时支持多个分区驱动程序,但是对一个指定的存储设备来讲只能使用一个分区驱动程序,它由分区管理器解释该设备上的所有分区。分区驱动程序是以动态链接库形式提供的,并输出一组API,这组API有利于Windows CE.NET支持各种存储设备的操作。此外,在用户层面还有一个管理分区的控制面板。
- 在Windows CE.NET 4.2中,原始设备制造商(OEMs)在虚拟内存中,定义了一块静态存储区用来存放只读文件或代码。该区域中通过采用先进先出(FIFO)来减少设备中内存分页的数量,从而解决了设备中经常出现的内存不足的问题。
3 创建基于Windows CE.NET的嵌入式平台 3.1 平台定制工具-PlatformBuilder 把Windows CE.NET移植到新硬件平台由平台构造器(Platform Builder)完成。平台构造器的版本通常与Windows CE.NET的版本相联系。Microsoft公司的PlatformBuilder 4.2是一个定制的基于Windows CE.NET 4.2操作系统的嵌入式平台的集成开发环境(IDE)。它包括了基本的文件编译能力、多目标编译调试工具包、特性编辑器、软件开发工具包(Software Development Kit,SDK)导出工具、向导工具以及用于做测试和性能分析等工作的多个工具包。 一个平台主要由操作系统映像(OS Image)和板卡支持包(BSP)两部分组成。在Windows CE.NET 4.2中,用户可以有三种不同的目标平台可供选择,分别是:基于CEPC的平台、基于仿真器的平台和基于National Geode的平台。一般基于CEPC的平台是用户的要求的嵌入式操作系统的目标平台,可以用来运行应用程序,满足实际工程需要。基于仿真器的平台能够使用户直接在PC机上仿真程序,并验证结果无误后再把程序下装到目标机,便基本可以在目标机运行。用户在进行平台定制时可以选择其中一种或多种。
3.2 创建基于CEPC的平台 定制一个基于Windows CE.NET的平台涉及到组件的添加或删除。CEPC的BSP中包含设备驱动程序和定制硬件缺省的组件列表。用户可以根据工程要求、硬件设备以及系统资源来决定组件的取舍。 平台定制过程可以按照应用向导逐步实现,其一般过程描述如下: a.设置系统平台; b.建立操作系统映像; c.为CEPC制作一张启动盘; d.设置和CEPC的连接,并下装操作系统映像到CEPC; e.导出最终的SDK,将该SDK和embedded Visual C++(EVC)连接后,用户便可以开发基于所建平台的应用程序; f.调试目标平台。 一般来讲,按照应用向导,便可方便地定制用户的系统平台,但是一些细节问题很容易被忽视,鉴于笔者经验主要有以下几点需要注意: - 在Platform 菜单下设置Setting时,确保Enable Full Kernel Mode和Enable Image Larger than 32MB被选中。
- 开发主机(HOST)传输操作系统映像到CEPC(目标机)的系统内存,可以采用以太网来实现,不过要确保开发主机和CEPC处于同一局域网内部。其中,CEPC的设置是个重点,也是开发过程中可能出问题最多的地方。涉及IRQ,I/O口,IP的设置,对于PCI总线,可对三者设置如下:
set NET_IRQ=0 set NET_IOBASE=0 set NET_IP="CEPC所处局域网的IP号" 重新启动CEPC(目标机),目标设备名便会自动出现在新设备框内,选中新设备,才能使操作系统映像真正下装到CEPC。下装时间与所定平台组件的多少有关。一般为1~ 3分钟。 - SDK是一系列库文件、头文件和帮助文件,从而使开发人员为定制平台方便地编写应用程序。在安装SDK时,自解压文件选用系统默认的目录(一定要与开发工具在同一目录下)即可。如果SDK的安装路径选择不当,可能导致在应用程序开发时,所建平台不能出现在目标设备中,应用程序也无法正确下装。
4 嵌入式应用程序的开发 4.1 应用程序开发环境 像标准的Windows操作系统一样,Windows CE.NET采用的是事件驱动的编程模型。Embedded Visual C++4.0是Windows CE.NET所包含的强有力的应用程序开发工具。若要开发基于Windows CE.NET 4.2的应用程序,Embedded Visual C++4.0需要附加Service Pack 2。Embedded VisualC++ 4.0具有与Visual C++基本相同的特性,包括对MFC、ATL以及COMA/DCOM 的支持、应用程序向导、编译调试等多种功能。不过Windows CE.NET只是实现了Win32 API函数的一个子集,且对某些函数参数类型的要求也比普通Visual C++苛刻。
4.2 应用程序的开发 Windows CE.NET程序的设计与普通的C++的设计流程相似,但又有其自身的特点,下面就此进行说明。应用程序设计步骤如下: (1)启动Embedded Visual C++ 4.0,选择File菜单,然后选择New project项,创建一个应用程序的工程。这里值得需要注意的是,开发一个Windows CE的应用程序不一定提供一个远端设备。 (2)选择项目的类型。Windows CE支持的类型有MFC,ATL,应用程序向导,动态连接库(DLL),静态连接库。 (3)利用Windows CE API和平台所支持的C运行库(C Runtime Library)来编写应用程序。 (4)编译和建立应用程序。系统提供了一个关于项目的缺省设置,这些信息将控制程序的调试及运行方式。
4.3 应用程序的调试 集成开发环境具有多种调试工具,如:扩展调试接口、模拟器、遥控工具、平台管理器等。嵌入式应用程序的调试可以由以下两步实现: (1)在模拟环境下调试和执行应用程序,这是在开发平台上所进行的最后步骤。具体过程如下: a.在IDE工具栏中,选择目标平台的仿真器; b.通过Build/Rebuild all编译应用程序,编译无误后,便会自动连接到仿真器程序,此时仿真器窗口将会显示在开发器的窗口内; c.在仿真器窗口内双击“我的电脑”; d.双击当前开发的应用程序图标,便可运行该程序。
(2)应用程序的执行和远程调试。当硬件平台和基本操作系统环境建造完成后,可以通过将应用程序下载到设备上,然后在本机上利用远程工具对远程对象上的项目进行调试,直到程序可以正确运行为止。至此,便完成了应用程序开发和调试的全部过程。 5 结束语 Windows CE.NET作为一种嵌入式实时操作系统,既具有嵌入式系统所要求的实时性、内存小等特性,又具有Windows 系统的许多共性。同时Embedded Visual C++给嵌入式系统应用程序的开发提供了极大的方便。因此,利用Windows CE.NET开发嵌入式系统或装置不仅可以获得最好的性能,而且可以缩短开发周期和降低技术风险。在嵌入式技术飞速发展的今天,Windows CE.NET必将有广泛的应用前景。
|