Windows CE驱动程序分类

Windows CE嵌入式开发入门--基于Xscale架构
傅曦,陈黎等 人民邮电出版社

 

第九章  Windows CE BSP及驱动程序结构分析

9.1 Windows CE驱动程序结构概述

WindowsCE的驱动程序可以从多种角度进行区分。

1、从加载以及接口方式来区分

可以分为本机设备驱动(Build-In Driver)、可加载驱动(Loadable Drive)以及混合型驱动。
(1)本机设备驱动
本机设备驱动,即Native Device Drivers.这些驱动程序在系统启动时,在GWES的进程空间内被加载,因此他们不是以独立的DLL形式存在。这些驱动对应的设

备通常在系统启动时就要求被加载,如果没有串口,也没用LCD的话,整个系统就不能和用户信息交流。另外,流驱动程序也能作为本机设备驱动存在。

(2)可加载驱动
也被称为流驱动。
这些驱动可以在系统启动时或者启动后的任何时候由设备管理器动态加载。通常它们以DLL动态链接库的形式存在,系统加载它们后,这些驱动程序也只是以用户

态的角色运行。可加载驱动程序通过文件操作API来从设备管理器和应用程序获得命令。

在WinCE中,典型的可加载驱动有以下各类:
A、PCMCIA driver (PCMCIA.dll)
B、Serial driver (SERIAL.dll)
C、ATAFLASH driver (ATA.dll)
D、Ethernet driver (NE2000.dll,SMSC100FD.dll)

(3)混合型驱动
这类驱动综合了前两种驱动的特性。它同时使用了stream接口和custom-purpose接口。混合型驱动主要是提供custom-purpose接口,但是由于需要和系统中只

允许使用stream接口的那些模块进行交互,因此也必须提供stream接口。例如,PC card socket驱动同时拥有两套接口。

2、从驱动层次上分

可以分为独立驱动和层次型驱动。

(1)独立驱动程序
    可以将驱动程序编写成同时包含MDD和PDD层的独立驱动。独立驱动的代码应当包括中断服务例程和平台相关处理函数。使用独立驱动的好处在于可以省去

MDD和PDD层驱动之间的信息传递,这一点在实时处理中,非常重要。另外,如果设备的操作和MDD层驱动的接口描述相吻合,可以使用独立驱动程序提高处理性

能。

(2)层次型驱动

    层次型驱动分为两层,较上层的MDD和较下层的PDD。MDD实现的是和平台无关的功能,它描述了一个通用的驱动程序框架。而PDD是和硬件以及平台相关的代

码组成。MDD调用PDD中特定的接口来获取硬件相关信息。当使用层次型驱动的时候,一般只需要基于相近的样例驱动程序,针对特定的硬件修改PDD程序,MDD建

立的框架可以继续使用。缺点是,消息传递多,处理速度相对较慢。
    一般MDD层将完成以下任务:
A、链接PDD层,并且定义它要使用到的DDSI(Device Driver Service Provider Interface)函数集;
B、向设备管理器提供Device Driver Interface(DDI)接口集;
C、处理复杂的事件,如中断等。

每一种MDD驱动都处理不同种类的设备。DDI是由MDD层驱动以及独立型驱动提供给设备管理器的一组接口集。DDSI是由PDD向MDD层提供的接口集。

在开发过程中,MDD层驱动是不需要被修改的。微软公司不保证被修改的MDD性能在系统中正确运行。和MDD层不同的是,PDD层驱动必须被修改成和特定硬件相匹

配的代码。程序员可以自己开发一个PDD程序,多数情况下,建议开发者在Platform Builder提供的样例驱动程序上进行修改。
例如:Platform Bulider 提供了Wavedev驱动程序,它的代码位于pubilc\common\oak\drivers\WAVEDEV下,这是一个容易理解的流接口层次型驱动程序。此

样例audio驱动程序仅提供了播放及录音功能,只提供播放功能的结构框架,播放功能和音频设备的交互还需要PDD层来解决。

 

-----cds20130702

 

 

 

 

 

 

 

 

 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值