嵌入式操作系统Windows CE研究

发布于:2021-05-14 23:12:32

嵌入式操作系统 Windows CE 研究
微软 Microsoft

嵌入式系统被定义为:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适 应应用系统对功能,可靠性,成本,体积,功耗严格要求的专用计算机系统. 嵌入式操作系统是支持嵌入式系统应用的操作系统软件,它是嵌入式系统极为重要 的组成部分,通常包括与硬件相关的底层驱动软件,系统内核,设备驱动接口,通信协 议,图形界面,标准化浏览器等.与通用操作系统相比较,嵌入式操作系统在系统实时 高效性,硬件的依赖性,软件固态化以及应用的专用性等方面具有较为突出的特点.嵌 入式操作系统的出现,大大提高了嵌入式系统开发的效率,在嵌入式操作系统之上开发嵌 入系统将减少系统开发的工作量,增强嵌入式应用软件的可移植性,使嵌入式系统的开 发方法更具科学性.*年来,随着电子技术的不断进步,嵌入式系统开发己成为热点, Windows CE 是 Microsoft 公司专门针对嵌入式产品领域开发的嵌入式操作系统,该 系统是一种紧凑,高效,可伸缩的 32 位的操作系统,主要面向各种嵌入式系统和产品. 它所具有的多线程,多任务,完全抢占式的特点是专为各种有很严格资源限制的硬件系 统所设计的.它的模块化设计使嵌入式系统和应用程序开发者能够方便地加以定制以适 应一系列产品,例如:消费类电子设备,专用工业控制器和嵌入式通信设备等的需要[1].

Windows CE 最大的好处在于界面的通用性,用户容易接收;同时,可以将 Windo ws 通用操作系统下的应用程序移植到嵌入式应用系统中.关于 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 的组件, 用户可以根据自己的系统的需要进行定制,选择需要的组件,去掉不必要的组件,这样 可以减小内存需求,使系统性能达到最佳.应用程序层是用户为特定的嵌入式系统开发 的应用程序. 在操作系统层中,设备管理器提供对可安装设备的支持,允许在系统中安装诸如 P C 卡存储器和调*獾髌髦嗟纳璞敢牙┏涔δ,内核提供最基本的操作系统功能,例 如进程调度,内存管理,进程通信等.图形,窗口事件处理模块将用户的击键,鼠标移 动和控件选择转换为消息,传送给应用程序和操作系统来处理用户的输入.对象存储, 文件系统,数据库和注理用户的输入.对象存储,文件系统,数据库和注册表提供存储 数据的能力.附加技术模块指由 CE 操作系统提供的一些可选择的专用功能模块,如 Jav a 语言支持模块,手写体输入识别模块等.用户界面模块为系统提供一个与 PC 电脑上的 视窗操作系统类似的图形化操作界面.对系统设计者而言,需要自行开发的是应用程序和 直接与硬件有关的部分,包括硬件系统本身,OAL ,设备驱动程序.其中,OAL 是指 建立在硬件设备与系统内核之间的一层代码,主要任务是为内核管理具体的硬件设备时 钟,中断和实施电源管理提供支持.设备驱动程序负责支持操作系统对目标硬件的访问. OAL 和驱动程序都要针对具体的硬件设备编写. 一般硬件设备制造商会为设备提供驱动软件支持,如果有专门为 CE 系统编写的驱

动程序,只需将其加入到操作系统的相应模块中就可用了.如果没有,则应根据厂商提 供的驱动程序开发包编写.通常这些开发包总已经包含了完成各种硬件操作的标准代码, 开发者的工作只是将其与相应的 CE 系统 API 函数对应起来.在 CE 系统中,所有涉及 硬件的操作都通过调用相应的 API 接口函数来完成,而 OAL 和驱动程序就是要为这些 API 函数提供支持,将其翻译为直接对目标硬件进行底层操作.通过这种方式,CE 系 统将应用程序与具体的硬件设备进行了隔离,应用程序只需调用 API 函数就可以实现对 硬件的访问.这样,程序员在开发应用程序时就没有必要编写任何直接针对硬件的代码, 因此不必考虑具体的硬件特性,而应用程序也具有了不依赖于具体硬件设备的独立性. 2 Windows CE 中的网络通信协议 Windows CE 的网络通信基于一个按层组织的网络堆栈[1 ] (network stack) ,如 图 2 所示.网络堆栈实际上是 Windows CE 的一个组件,它络堆栈实际上是 Windows CE 的一个组件, 它负责对网络中的数据传输进行处理, 将来自于应用程序的数据分解成 若干小段,并为每小段加上相关地址和段的分割信息,组成可以存贮转发的信息包(pac kets) ,信息包中的地址确保数据达到最终的目的端点.访问网络堆栈有如下三种方式: 第一种是 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,与使用 Soc ket 建立网络连接的方法相比,它简化了访问互联网络的操作细节.利用 WinInet 可连接 到远程站点,访问 HTML 页面,通过 FTP 上传,下载文件或获取文件目录清单等.Wi nInet 的 Windows CE 版本类似于桌面*台上的 WinInet ,但有两个重要的区别:一是在

Windows CE 中,大多数 callback 函数以同步方式处理,只有 InternetReadFile 和 Interne tQueryDataAvailable 具有同步和异步两种操作方式;二是 Windows CE 默认支持 Unico de 码,所有 WinInet 函数都要求宽字符变量[4]. 通过 WinInet 实现网络通信最常见的例子是利用 HTTP 协议访问 Internet 站点上的 HTTP 页面.其处理过程与桌面*台上的情况一致: 1) 调用 InternetOpen ,获取 Internet 句柄; 2) 调用 InternetConnect ,为给定站点建立一个会话句柄; 3) 调用 HttpOpenRequest ,打开一个 HTTP 请求句柄; 4) 调用 HttpSendRequest ,发送一个指定的请求到 HTTP 服务器; 5) 调用 InternetReadFile , 从被 HttpOpenRequest 所打开的句柄中读数, 下载信息; 6) 调用 InternetCloseHandle ,关闭 Internet 句柄. 3.2 远程访问服务 RAS RAS 是一个用于连接远端设备的基于软件的多协议路由器,也称为 RAS 客户,对 于桌面主机,则称为 RAS 服务器.RAS 应用程序常在设备端上执行,并通过 PPP/ SLI P 与服务器连接.WindowsCE 对 RAS 客户提供了支持.尽管有许多标准的 Win32 RAS 函数,但这里仅允许通过串行电缆或拨号 Modem 建立点对点的连接.在 Windows CE 环境下,RAS 电话簿项目中包含有建立 RAS 连接的必要信息,Windows CE 将其存贮 在注册表中.RAS 电话簿信息包括:拨打的电话号码(含国家和地区代码) ,当前连接 的 IP 地址,网络协议,用于建立连接的设备类型.用 RAS 建立连接的步骤如下[4]: 1)确定呼叫的电话号码;如果该号码不在电话簿中, 则需要调用 RasEnumEntries 函数查找. 2)RasDial 建立连接; DWORD RasDial (LPCTSTR lpszPhonebook , / / 电话簿文件的路径和文件名指针 DWORD dwNotifierType , / / RasDial 事件的句柄类型 LPVOID lpvNotifier , / / RasDial 事件的句柄

LPHRASCONN lphRasConn / / 指向连接句柄类型变量) ;该函数的参数设置与桌面*台上的设置不同,要求 将 lpszPhonebook 设置为 NULL ,dwNotifierType 设置为 0xFFFFFFFF. 3)当会话结束时,用 RasHangUp 终止连接. DWORD RasHangUp ( HRASCONN hrasconn ) ; 3.3 WAP 应用 通常,Web Server 需要在目标机中置入文件系统,但是,嵌入式系统往往会面临有 限的存储资源问题,文件系统会增加系统负担.Windows CE 的 Web Server 设计了一个 Web 页的格式编辑器,可以将 Java,GIF,JPEG,PDF,TIFF,HTML,ASCII 转换成标 准 C 源文件,可以与其他的应用程序链接,Web Server 就在一个虚拟的文件系统下访问 这些文件. 在开发移动通信产品时候,需要用 WAP 协议,Windows CE 提供了一个 WAP 的解 决方案,开发起来非常方便.该协议栈可以支持任何标准的无线协议,包括 GSM,UDP, GPRS 等,协议栈包括 WAE,WSP,WTP,WTLS,WDP 等[3].见图 3.

图 3 WAP 应用

此外,Windows CE 还支持蓝牙协议,RFCOMM 协议,SDP 协议,L2CAP 协议等.

4 基于 Windows CE 嵌入式*台创建 在硬件设计成功后,就需要创建一个基于 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 和 Hi tachiD9000 硬件开发*台(ODO) ,系统开发者也可以根据需要开发自己的 BSP 或者 利用第三方开发好的 BSP. 5 结束语 在嵌入式系统中,网络通信应用越来越广泛.选择一个合适的实时操作系统是开发 嵌入式系统的关键.本文研究了 Windows CE 在网络通信方面的开发工作,今后还有许 多问题值得研究,包括在基于 ARM 的嵌入式应用中如何移植 Windows CE 中的应用程 序,Windows CE 的调试工具如何和 DSP,MUC 的调试工具配合使用等.


相关推荐

最新更新

猜你喜欢