wince5.0课件及实验指导远见_第1页
wince5.0课件及实验指导远见_第2页
wince5.0课件及实验指导远见_第3页
wince5.0课件及实验指导远见_第4页
wince5.0课件及实验指导远见_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、The successs road Windows 系统定制与驱动开发(4)第1节 内建设备驱动概述1.1 内建设备驱动概念1.2 内建设备驱动的架构1.3内建设备驱动的分层处理1.1 内建设备驱动概念内建设备驱动程序用于低级、内置设备,提供一组定制的接口可通过移植、定制微软提供的驱动样例来实现。内建驱动部分典型样例:触摸屏驱动显示驱动鼠标及键盘驱动打印机驱动1.2 内建设备驱动的架构大部分内建驱动程序采用分层结构。PDD输出DDSI函数接口,MDD通过这些函数接口来调用PDD层的功能函数。MDD为操作系统提供用来访问MDD层的DDI函数接口MDD层一般以库文件形式存在,即DDSI函数接口形式

2、固定。DDI(设备驱动接口)是一类功能接口函数的统称,由分层驱动程序中的MDD层或者是单层驱动程序输出,由操作系统模块进行调用。DDSI(设备驱动服务接口)是一类由PDD层输出的接口函数,由MDD层进行调用。相同种类的设备驱动可以使用同样的DDI接口。分层驱动模型MDD层PDD层操作硬件应用程序调用DDI函数DDSI函数调用1.3内建设备驱动的分层处理操作系统通过DDI函数访问内建驱动的MDD层。MDD层以库形式存在,其向下调用的DDSI函数形式固定,但内容为空,需PDD层实现。PDD层以代码形式存在,需实现相应的DDSI函数内容。MDD层包含的代码在开发该类型的所有设备驱动时是通用的。MDD

3、层调用特定的PDD层程序来访问硬件或和硬件相关的信息。当使用分层驱动时,开发驱动时可以对微软提供的某些通用MDD层代码进行复用,而只需重新开发针对特定硬件环境的PDD 层代码。同样,如果想将某个驱动程序移植到新的硬件平台上,只需对PDD层代码进行移植,而MDD层代码则无需改动即可直接使用。 分层驱动与单层驱动分层驱动模型不是必需的,并不是对所有的驱动都适用。而且当把驱动代码进行分层后,会输出额外的功能调用接口,造成一定的资源消耗。在某些特定的环境下,使用单层驱动会更合适些。一般来说,微软为分层的驱动提供了MDD层的代码,其中的源代码或提供的库文件对所有的硬件平台都是通用的。 MDD层特性和PD

4、D层相联接,定义PDD输出的DDSI函数接口,通过这些函数接口来调用PDD层的功能函数。为操作系统提供用来访问MDD层的DDI函数接口。执行比较复杂的任务,如中断处理过程等。每个MDD层会对应一类响应的设备,例如音频驱动或触摸屏驱动等。PDD层特性通常来说,在驱动开发过程中,是很少需要修改MDD层的。假如进行修改的话,微软不会为这种驱动的兼容性做出任何保证。当为特定的硬件平台开发设备驱动时,必须自行开发驱动中的PDD层。PDD层通常是由在相关硬件平台下执行特定功能的代码组成的。这些功能将MDD层和特定的硬件环境分离开来。因为PDD是和硬件紧密相关,因此对于特定的硬件平台,要么进行独立开发,要么

5、对类似硬件环境下的驱动进行移植。当然,微软提供了一部分较常用的内建设备的PDD层样例代码。单MDD与多PDD不同的驱动中的DDSI接口功能是很少相同的。PDD层中具体功能的执行是为特定的MDD层而设计的,因此在不通的的分层驱动中,其差别很大。但是也有例外,那就是一个MDD层可以适用于几个PDD的情况。在这种情况下,这些PDD层会输出相同的DDSI功能接口。例如,串口驱动的MDD层可以支持几个PDD层,用来控制不同的串口设备,例如16550串行通信口和红外串行通信口。 第2节 触摸屏驱动的分析 2.1 驱动目的2.2 驱动流程2.1驱动目的用户点击触摸屏时,将获取到的触摸屏坐标转换为实际的系统桌

6、面坐标。将用户动作(单击,双击,长点等)转化为相应的事件,通知GWES。驱动调用方:GWES(图形界面系统)2.2 驱动流程用户点击触屏,触发中断。MDD层响应中断,调用驱动pdd层DDSI函数TouchPanelEnable,启动触屏驱动。接下来MDD层调用DdsiTouchPanelGetDeviceCaps,来向获取当前触屏的信息。PDD层应根据查询的内容(通过对函数中由MDD层传递过来的参数iIndex判断)返回相应的数据(校正的频率,所需校正坐标的个数,校正基准点的坐标)。针对当前获取的触屏点,调用DdsiTouchPanelGetPoint。在这个函数中,会进行一系列算法校正,确保

7、将触屏点转化为相应的桌面坐标。通过该函数的指针型参数,回传给MDD层。tchmdd.lib为MDD层,负责根据PDD层回传的坐标点和事件信息,报告给GWES.exe。MDD层代码未公开,用户只需修改PDD层代码,确保返回正确的坐标及事件参数即可。第3节 FLASH驱动分析 3.1 驱动特性描述 3.2 驱动加载方式 3.3 驱动的结构3.1 驱动特性描述FLASH驱动属于块设备驱动(Block Device Drivers)。块设备驱动为流接口形式,但需与文件系统驱动(file system drivers)FSD,存储管理驱动(Storage manager)配合,完成完整的功能。3.2 驱

8、动加载方式1 系统初始化时,或(设备插入时)读取注册表项,在系统目录中创建分区目录。2 存储设备的分区,命名,装载,卸载由存储管理驱动负责。3.3 驱动的结构Flash驱动为分层结构,其mdd层以库文件FAL.lib,(FlashAbstraction Layer)的形式存在。它负责根据ReadFile,WriteFile,DeviceIoControl传递进来的参数及信息转化为具体的flash硬件级操作函数,并调用相应PDD层的DDSI函数,完成相应的底层功能。Flash驱动的DDSI函数:FMD_Init-驱动初始化时调用,分配内存区域,创建保护区,初始化硬件寄存器。FMD_Deinit-

9、驱动卸载时调用,进行和FMD_Init相逆的操作(释放内存等)。FMD_GetInfo-上层文件系统查询驱动信息时被调用,负责返回设备信息。FMD_SetBlockStatus-获取设备块信息。FMD_ReadSector-应用程序调用ReadFile时,会调用MDD层的DSD_Read,继而向下调用FMD_ReadSector ,对FLASH中的硬件卷区进行读取操作。FMD_WriteSector-应用程序调用WriteFile时,会调用MDD层的DSD_Write,继而向下调用FMD_WriteSector ,对FLASH中的硬件卷区进行写入操作。FMD_EraseBlock-应用程序调用

10、WriteFile时,会调用MDD层的DSD_Write,在向下调用FMD_WriteSector之前,调用FMD_EraseBlock对FLASH硬件卷曲进行擦除操作。FMD_PowerUpVOID,FMD_PowerDown-当系统供电状态改变时,被系统电源驱动调用,用于改变当前驱动的供电状态。FMD_OEMIoControl-应用程序调用DeviceIoControl时,MDD层向下调用FMD_OEMIoControl。FMD_GetOEMReservedByte-负责MDD 层和PDD层交流FLASH保留区域的信息。当用户进行查询复制,粘贴,删除,格式化等操作时,文件系统驱动会将相应的

11、命令翻译为对文件操作的函数ReadFile,WriteFile, DeviceIoControl并传递相应的参数。此时,按照流驱动工作原理,flash驱动中流接口函数将被调用。flash驱动流接口前缀为“DSK”。第4节电源管理驱动的分析4.1 Windows CE中的电源状态4.2 Windows CE设备的启动方式4.3 电源状态在驱动间的传递4.1 Windows CE中的电源状态许多基于Windows CE便携式和手持式设备,对功耗及电源管理有苛刻的要求。Windows CE设备有五种电源状态:关机:无电源输入,无功耗。正常:系统正常运行,任务忙,功耗大。一段时间无任务将进入空闲状态。

12、空闲: 系统正常,但无任务处于运行状态,功耗较小,当有任务激活时,可随时进入正常状态。挂起:无任务运行,且系统处于休眠状态。可通过特定的中断唤醒,进入正常状态。低电量状态: 当系统侦测到电池电量低时,会进入该状态,此时,一些开销大的任务将会被暂停。4.2 Windows CE设备的启动方式Windows CE设备有三种启动方式:开机,即等同于PC的POWER ON。冷启,系统完全重新启动,所有易失存储器(如SDRAM)上的资料被擦除。热启,关闭当前运行的用户程序,清除SDRAM中的数据,但保留当前的文件系统。4.3 电源状态在驱动间的传递当系统处于正常状态时,可以通过SetSystemPowerS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论