Windows CE 是Microsoft 公司专门针对嵌入式产品领域开发的嵌入式操作系统,该系统是一种紧凑、高效、可伸缩的32 位的操作系统,主要面向各种嵌入式系统和产品。它所具有的多线程、多任务、完全抢占式的特点是专为各种有很严格资源限制的硬件系统所设计的。它的模块化设计使嵌入式系统和应用程序开发者能够方便地加以定制以适应一系列产品,例如:消费类电子设备、专用工业控制器和嵌入式通信设备等的需要[1]。
Windows CE最大的好处在于界面的通用性,用户容易接收;同时,可以将Windows通用操作系统下的应用程序移植到嵌入式应用系统中。关于Windows CE的研究文献有许多,但是缺少从构建平台到网络应用的系统分析,本文从网络应用出发,深入研究Windows CE下如何实现TCP/IP协议,这对嵌入式网络应用很有意义。
1 基于Windows CE的嵌入式系统的结构[2][3]
要进行嵌入式系统的应用开发,必须先建立一个开发平台。一个基于Windows CE 的平台由Windows CE 操作系统核组件、OEM 适配层(OEM Adaptation Layer ,OAL) 和设备驱动程序以及组成系统的硬件设备组成,图1为基于Windows CE平台的层次结构。
从图1 中可以看出,一个基于Windows CE 的嵌入式系统可分为四个层次,从底层到上层分别是硬件层、OEM层、操作系统层和应用程序层。
图1 基于Windows CE的目标平台及其组件
硬件层是系统的硬件,包括微处理器和各种周边设备。OEM层是一个硬件抽象层,它提供了硬件和操作系统之间的接口,操作系统要访问具体的硬件就可以通过OEM层提供的API 进行访问,而不必直接与硬件打交道。操作系统层中有Windows CE 的组件,用户可以根据自己的系统的需要进行定制,选择需要的组件,去掉不必要的组件,这样可以减小内存需求,使系统性能达到最佳。应用程序层是用户为特定的嵌入式系统开发的应用程序。
Windows CE的网络通信基于一个按层组织的网络堆栈[1 ] (network stack) ,如图2所示。网络堆栈实际上是Windows CE 的一个组件,它络堆栈实际上是Windows CE 的一个组件,它负责对网络中的数据传输进行处理,将来自于应用程序的数据分解成若干小段,并为每小段加上相关地址和段的分割信息,组成可以存贮转发的信息包(packets) ,信息包中的地址确保数据达到最终的目的端点。访问网络堆栈有如下三种方式:第一种是WinSock端口套接字方式。这是一个中间层的传输接口协议,WinSock 负责对建立的信息包的所有头信息细节进行处理, 但可以不管其数据格式。Windows CE 的网络通信都直接或间接地使用WinSock。采用IrDA 协议实现基于红外线套接字的客户/ 服务器网络通信是Windows CE平台的一个特色。第二种为WinInet API 方式。WinInet API是微软公司基于Win32 平台的互联网函数接口。Windows CE 的WinInet API 对其进行了某些限制或扩展,它提供的高级数据协议除了常见的超文本传输协议HTTP 和文件传输协议FTP 外,还提供了对SSL的支持。API 方式避免了直接使用WinSock 访问网络的操作,简化了网络编程。第三种为CIFS 重定位器方式。Windows CE 通过对远程访问服务RAS 客户的支持,允许基于Windows CE的设备与远程主机建立连接。
3 Windows CE 中网络通信协议使用实例
3.1 HTTP
Windows CE提供了一个开发Internet 客户应用程序的工具集WinInet,与使用Socket 建立网络连接的方法相比,它简化了访问互联网络的操作细节。利用WinInet可连接到远程站点,访问HTML 页面,通过FTP 上传、下载文件或获取文件目录清单等。WinInet 的Windows CE版本类似于桌面平台上的WinInet ,但有两个重要的区别:一是在Windows CE 中,大多数callback 函数以同步方式处理,只有InternetReadFile和InternetQueryDataAvailable 具有同步和异步两种操作方式;二是Windows CE 默认支持Unicode 码,所有WinInet 函数都要求宽字符变量[4]。
在硬件设计成功后,就需要创建一个基于Windows CE 的嵌入式平台,有了平台,用户就可以利用Windows CE 的开发工具在该平台上进行应用程序的开发。为了创建一个基于Windows CE 的平台,首先需要选择一个Windows CE OS 配置,安装或创建一个OAL 和设备驱动程序,创建一个基于用户配置的OS映像文件,并开发一个将映像文件传输到目标设备的引导程序[1][2][3]。
首先,选择一个Windows CE OS 配置,然后加入一个OAL 和设备驱动程序。可以创建自己的OAL ,使用一个预先配置好的BSP(Board Support Package)或者创建自己的BSP。一个BSP 包含一个OAL 、设备驱动程序和定制的硬件缺省的组件列表。
Windows CE Platform Builder3. 0 中包含有CEPC (CE-base PC) 的BSP 和HitachiD9000 硬件开发平台(ODO) ,系统开发者也可以根据需要开发自己的BSP 或者利用第三方开发好的BSP。
参考文献
[1] Microsoft Corporation. Introducing Microsoft Windows CE 3.0[M] .Microsoft Corporation ,2001 ,1.
[2] Microsoft Corporation. Microsoft Windows CE 3. 0 Operating System Configurations[M] .Microsoft Corporation ,2000 ,4.
[3] Microsoft Corporation. Building a Localized Platform in Microsoft Windows CE Platform Builder 3.0[M] .Microsoft Corporation ,2000 ,6.
[4] 胡虚怀. 基于Windows CE 的通信技术[J ] . 计算机应用, 2000 ,11(end)