关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > Windows CE和 Windows2000/XP设备驱动开发的区别

Windows CE和 Windows2000/XP设备驱动开发的区别

作者:时间:2009-12-28来源:网络收藏


引 言
CE是一个32位、多任务、多线程的嵌入式操作系统,是微软专门为信息、移动应用、消费类电子产品、嵌入式应用等非PC领域设计的操作系统产品,在外观和使用的感觉上十分接近桌面系统。它使用平面内存模式寻址,可以同时运行多个程序并支持一个程序中的多个线程,并且非常精炼,只有很小的内存要求。与基于PC的操作系统不同, CE不需要标准硬件,反而支持各种各样的CPU(如X86、PowerPC、ARM、MIPS等),通过OEM适配层(OEM adaptation layer)可以把Windows CE适配到任何硬件平台。Windows CE是微软Windows操作系统家族的一个成员,支持用于Windows /XP和Windows 98等桌面Windows操作系统的Win32 API的一个子集。由于它不是桌面Windows操作系统的一部分或缩减版本,使得开发Windows CE的驱动程序与开发桌面Windows的驱动程序有所不同。本文将着重讨论这些区别,以使广大熟悉桌面Windows驱动程序开发的程序员能快速掌握嵌入式操作系统WindowsCE驱动程序的开发方法。

本文引用地址:http://www.eepw.com.cn/article/202582.htm

1 驱动结构模型比较
在桌面Windows系统,以支持Windows/XP的WDM驱动模型为例。WDM体系结构实行分层处理,即驱动被分成了若干层――最高层驱动程序、中间层驱动程序、最低层驱动程序,如图1所示。

在Windows CE驱动中,按驱动的结构可以分为两种类型――分层式驱动程序和整体式驱动程序,如图2所示。分层式设备驱动程序由上层和下层两部分代码组成。上层的程序叫做模型设备驱动程序(MDD),下层的程序则叫做平台相关的驱动程序(PDD)。整体式驱动程序的源代码由中断服务线程代码和针对平台的代码组成。
同桌面Windows设备驱动结构模型相比,Windows CE设备驱动相对简单一些。正如图1和图2所示,两种操作系统的设备驱动虽然存在许多相似的地方,都采用了模块、分层的设计方法,但是还存在许多不同的地方。在Windows CE操作系统中,分层的驱动程序并不适用于所用的驱动,尤其是将驱动程序分为两层将会导致在驱动程序操作时附加的功能调用,这无疑会降低驱动程序的效率。对于时间或性能关键的实时操作,整体式驱动程序将会更适合。

在桌面Windows系统中,驱动各层通信之间使用一种称为I/O请求包(IRP)的数据结构进行通信。影响到设备的每个操作都使用I/O请求包,采用层次结构可以使I/O请求过程更加明了。I/O管理器发送IRP来请求驱动程序的处理,通常IRP由分层的驱动程序栈来处理,高层的驱动程序把请求划分成更简单的请求并传递给下层驱动程序。IRP首先被送到设备堆栈的最上层驱动程序,然后逐渐过滤到下层的驱动程序。每一层驱动程序都可以决定如何处理IRP。而Windows CE驱动各层之间的通信没有采用IRP通信机制,而是通过接口函数调用实现的。设备驱动程序接口(Device Driver Interface,DDI)是在MDD层中实现的函数集,系统中的GWES模块通过这个接口调用设备驱动程序;设备驱动程序服务器接口(Device Driver Service Provider Interface,DDSI)是在PDD层中实现的函数集并由MDD调用。

2 设备驱动组成部分比较
简单地说,驱动程序是一些例程的集合,它们被动地存在,等待主机系统软件来调用或激活它们。在Win-dows系统中驱动,具体的驱动程序有所不同,其包含的例程也不同,但其主要例程是相同的。图3描述一个Windows驱动的基本流程。

以下从几个方面阐述WindowsCE和桌面Windows设备驱动组成的不同。
2.1 驱动程序的入口点
在桌面Windows和Windows CE两个系统中的驱动程序都含有初始化模块,该模块主要功能是完成驱动程序的初始化及卸载。在桌面Windows系统的初始化模块中,包括每一个设备驱动程序都有的一个初始化入口点――DriverEntry例程,每次设备驱动程序启动时该例程被系统自动调用。其最重要的功能是设置驱动程序对应于I/O请求的主功能代码(MajorFunction)的回调例程。DriverEntry例程如下:


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭