您的位置:笔笔发 技术资料 嵌入式操作系统 WindowsCEMobile 正文
内容搜索
笔笔发:技术产业信息平台----成就有识之士创业梦想的殿堂
热门内容
推荐内容
WINCE Driver 心得总结

本文章共26634字,分11页,当前第1页,快速翻页:
 

 

 bbfar(笔笔发)原创,转载请务必注明出处!

一. Windows CE的驱动程序的区分

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

可以分为本机设备驱动(Built-In Driver)、可加载驱动(Loadable Driver)以及混合型驱动。

1)本机设备驱动

本机设备驱动即Native Device Drivers。这些驱动程序在系统启动时,在GWES的进程空间内被加载,因此它们不是以独立的DLL形式存在。这些驱动对应的设备通常在系统启动时就被要求加载,如果没有串口,也没有LCD的话,整个系统就不能和用户信息交流。另外,流驱动程序也能作为本机设备驱动而存在。

2)可加载驱动

也被称为流驱动。

这些驱动可以在系统启动时或者和启动后的任何时候由设备管理器动态加载。通常它们以DLL动态链接库的形式存在,系统加载它们后,这些驱动程序也只是以用户态的角色运行。可加载驱动程序通过文件操作API来从设备管理器和应用程序获得命令。

Windows CE中典型的可加载驱动有以下各类:

n     PCMCIA driver(PCMCIA.dll)

n     Serial driver(SERIAL.dll)

n     ATAFLASH driver(ATA.dll)

n     Ethernet driver(NE2000.dll,SMSC100FD.dll)

3)混合型驱动

这类驱动综合了前两种驱动的特性。它同时使用了stream接口和custom-purpose接口。

混合型驱动主要是提供custom-purpose 接口,但是由于需要和系统中只允许使用stream接口的那些模块进行交互,因此也必须提供stream接口。例如,PC card socket驱动同时拥有两套接口。

2.从驱动层次上分

可以分为独立驱动和层次型驱动,下图是这两种驱动在系统中的位置。

 

1)独立驱动程序

可以将驱动程序编写成同时包含MDDPDD层的独立驱动。独立驱动的代码应当包括中断服务例程和平台相关处理函数。使用独立驱动的好处在于可以省去MDDPDD层驱动之间的信息传递,这一点在实时处理中非常重要。另外,如果设备的操作和MDD驱动层的接口描述相吻合,可以使用独立驱动程序提高处理性能。

2)层次型驱动

层次型驱动分为两层,较上层的Model Device DriverMDD)和比较下层的Platform Dependent DriverPDD)。MDD实现的是和平台无关的功能,它描述了一个通用的驱动程序框架。而PDD是和硬件以及平台相关的代码组成。MDD调用PDD中特定的接口来获取硬件相关的信息。当使用层次型驱动的时候,一般只需要基于相近的样列驱动程序,针对特定的硬件修改PDD程序,MDD建立的框架可继续使用。由于层次间接口的层层调用以及消息的传递,使得处理速度相对独立驱动程序要慢,因此在时间要求苛刻的环境下,层次型驱动显得不是很适合。

 

一般MDD将完成以下任务。

n    连接PDD层,并且定义它要使用到的Device Driver Service Provider Interface(DDSI)函数集;

n     向设备管理器提供Device Driver Interface(DDI)接口集;

n     处理复杂的事件,如中断等等。

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

在开发过程中,MDD层驱动是不需要被修改的。微软公司不保证被修改的MDD能在系统中正确运行的。和MDD层驱动不同的是,PDD层驱动必须被修改成和特定硬件相匹配的代码。程序员可以自己开发一个PDD程序,多数情况下建议开发者在Platform Builder提供的样例驱动程序上进行修改。例如,Platform Builder提供了Wavedev驱动程序,它的代码位于%WINCEROOT%\public\common\oak\drivers\WAVEDEV下,这是一个容易理解的流接口层次型驱动程序。此样例audio驱动程序仅提供了播放及录音功能,只提供播放功能的结构框架,播放功能和音频设备的交互还需要 PDD层来解决。

 

二.           Audio Driver 架构:

WINCE Audio Driver 架构支持两种驱动模式

即独立型的unified audio model (UAM)驱动 分层式的MDD and PDD mode驱动,(不论是UAM或者MDD/PDD都是流接口驱动)

其架构还支持的audio compression manager (ACM)驱动,例如codecs, converters, and filters等器件

1)         UAM

UAM支持标准波形驱动接口(standard wave driver interfaces),过去的波形驱动和采样驱动是由MDDPDD模型组成。MDD模型执行了驱动的独立硬件部分以及输出到驱动接口的中间设备。PDD模型提供了驱动依赖硬件的执行部分

The following illustration shows the UAM stack.

Using MDD and PDD, the previous model had the following limitations:

·            No support for multiple streams

·            No multiple devices on one driver

·            No reliable support for looping

·            Poor support for streaming

OEM商可以围绕这些限制来移植自己的MDD或者写入他们自己的完整驱动来输出到合适的接口到中间设备

UAM实现了对WAVMicrosoft DirectSound®音频API的高效支持。它还使得编写一个能有效支持WAVDirectSound的驱动程序成为可能。

 

在我们的WM8753 音频Driver中即使用了UAM这种驱动模式,它也是一种流接口驱动,故只需编写驱动中WAVEMIXER这两部分,然后使用流接口函数调用即可。

 

2).音频MDDPDD

 

编写音频驱动我们可以选择UAM架构,或者直接执行流接口(stream interface),我们使用由微软提供的MDD库-Wavemdd.lib。这个库通过DDSI来执行流接口功能。如果使用了Wavemdd.lib,则必须一个PDD库来执行音频DDSI的功能。这个库被称为Wavepdd,lib, 这两个库编译连接后就形成了我们的音频驱动,通常被为Wavedev,dll

在系统程序文件中可能缺少器件的功能导致音频器件的很多功能无法被使用,为了解决这个问题DeviceIOControl
 

 
点这里复制本页地址发送给您QQ/MSN上的好友

相关文章

wince50中2443使用128MB SDRAM的问题
wince50里虚拟内存和物理内存的使用方法
wince50里三星2443_WIFI驱动程序实现方法
USB_KITL(Wince50)使用方法
sources文件的用法
Eboot里图片编辑使用说明
DllMainCRTStartup和DllMain区别
CE_TK(Wince50)使用方法
三星2443中4G_NAND(MLC)使用问题
VS2005 SP1安装
WinCE应用程序开机自动运行的方法
wince里设置显示文件的种类的方法
wince里设置音量的方法
wince里设置桌面壁纸
WinCE启动顺序解析
WinCE启动顺序解析
WinCE中的Mass Storage使用方法
WinCE中断机制
WinCE中注册表的保存与恢复
WinCE50中实现定时延迟的方法

相关评论


本文章所属分类:首页 技术资料 嵌入式操作系统 WindowsCEMobile


反馈意见和建议