wince驱动开发

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

CE驱动程序所有驱动皆为动态链接库驱动实现中可以调用所有标准的APICE驱动程序模型本机驱动程序流接口驱动程序本机驱动程序用于低级、内置设备提供一组定制的接口可通过移植、定制微软提供的驱动样例来实现流接口驱动程序基本的设备驱动类型实现一组固定的流接口函数所有的CE设备皆可使用此模型实现GWES加载驱动KeyboardMouseTouchScreenDisplayBatteryNotificationLED设备管理器加载的驱动本地驱动:PCMCIAHostControllerUSBHostControllerdriverNDIS.DLL流接口驱动:AudiodriverSerialportdriverParallelportdriverPortMonitor需要时加载驱动PCCardClientdriversUSBClientdriversNDISMiniportdrivers中断处理内核模式的中断服务例程(ISR)短小的汇编语言代码返回中断号给内核用户模式的中断服务线程(ISP)接收中断通知,并进行中断的处理RegisteringanInterruptHandlerAfteradevicedriverisloaded,thedrivercreatesanISTandregistersitwiththeinterrupthandlerISTisregisteredforoneormorelogicalinterrupts.(InterruptInitialize)Microsoft’stheMDDlayerregistersthedriverforinterruptsDeregisteringanInterruptHandler调用InterruptDisable来删除IST和逻辑中断的连接调用OEMInterruptDisable关闭中断ProcessinganInterrupt1.中断发生时.内核跳至异常处理程序2.异常处理程序使所有中断无效.然后调用合适的中断服务例行程序准备物理中断经3.中断服务例行程序以中断标识符的形式返回逻辑中断。4.中断处理程序重新启动除当前中断以外的所有中断,并把信号传递给适当的中断服务线程。5.中断服务线程调用依赖平台的驱动程序来访问硬件和完成逻辑中断的处理。6.中断服务线程调用InterruntDone函数。7.中断处理程序重新启动当前中断.并在OAL中调用OEMIntemptDone函数。中断处理本机驱动程序单片驱动程序直接将硬件设备的功能传递给操作系统分层驱动程序模型设备驱动程序(MDD)依赖平台的设备驱动程序(PDD)嵌套的中断256个优先级,0最高,以前的8个优先级映射为248-255高优先级的ISR和IST可以中断低优先级的ISR和IST四个范围0-96:高优先级实时任务97-152:缺省的CE驱动153-247:比普通的用户级任务高的任务248-255:非实时的用户应用驱动程序的安装连接CE设备把驱动DLL拷贝到\Windows目录】设置注册表键值本地驱动程序模型MDD执行任务链接PDD层并定义它希望调用的函数把不同的函数集提供给操作系统处理像中断处理这样的复杂任务与GWES模块和内核通信MDD特点提供标准的设备驱动程序接口一般不需改变PDD不象MDD层.依赖平台的驱动程序(PDD)层与MDD和硬件都有接口,这就意味着必须适合目标平台的需要。一个PDD由针对具体硬件的函数组成.而这些函数与一个MDD相对应、但这种对应不是直接的—一对应。MDD函数实现独立的任务,而MDD则通过使用这些任务来实现其目标。因为PDD是硬件相关的,因此必须生成一个设置好的PDD并输出到平台硬件、微软为各种各样的内部设备提供了几个样本PDD层本机驱动程序实例保存位置Platform\ODO\Drivers和Platform\ODO\GWE例子.样本电池驱动程序.样本显示器驱动程序.样本键盘驱动程序.样本示警发光二极管驱动程序.样本PC卡插槽驱动程序.样本串行口驱动程序.样本触摸屏驱动程序.样本USBHostCOntroller驱动程序电池驱动程序例子功能:提供一些关于平台电池的电力水平的信息。电池驱动程序报告主电池的状态并备份电池的状态。是单片驱动程序DDI函数BatteryDrvGetLevelsBatteryDrvGetStatusBatteryDrvSupportChangeNotification键盘驱动程例子功能:把键盘输入转换为输入系统的键盘事件.然后驱动程序生成这些键盘事件的统一代码符。MDD层的源码在路径publlc\ommontoaktonversDDI函数:KeybdDriverGetInfoKeybdDriverSetModeKeybdDriverInitializeKeybdDriverVKeyToUnicodeKeybdDriverInitStatesKeybdEventCallbackKeybdDriverPowerHandlerDDSI函数:KeybdPdd_DllEntryKeybdPdd_GetEventKeybdPdd_InitializeDriverKeybdPdd_PowerHandler在样本模型设备驱动程序(MDD)中,键盘驱动程序的中断服务线程IST的名字是KeybdDriverThread。这个线程调用函数Intenfljntlnltlallze注册SYSINTR_KEYBOARD中断,然后等待系统发出SYSINTR_KEYBOARD信号,在收到信号后中断处理程序调用函数KeybdPdd_GetEvent.把从设备依赖驱动程序(PDD)返回的键盘事件发送到输入系统。输入系统对它们进行排队以分发给相应的应用程序样本串行口驱动程功能:串行D驱动程序处理和串行口工作类似的任何I/O设备,包括那些基于16450和16550通用异步接收传送器(UART)芯片的设备和那些使用直接内存访问(DMA)的设各、许多基于WndoWWCE的平台都有这种类型的设备,包括普通9针串行口、红外线I/OD和PC卡串行设备如调制解调器位置:Public\Common\Oak\Driver\SerialDDI函数:COM_CloseCOM_PowerDownCOM_DeinitCOM_PowerUpCOM_INITCOM_ReadCOM_IOControlCOM_WriteCOM_OpenDDSI函数GetSerialObjectHWGetModemStatusHWPutBytesHWClearBreakHWGetRxBufferSizeHWResetHWClearDTRHWGetRxStartHWSetBreakHWClearRTSHWGetStatusHWSetCommTimeoutsHWCloseHWInitHWSetDCBHWDeinitHWIoctlHWSetDTRHWDisableIRHWLineIntrHandlerHWSetRTSHWEnableIRHWOpenHWTxIntrHandlerHWGetBytesHWPowerOffHWXmitComCharHWGetCommPropertiesHWPowerOnHWGetIntrTypeHWPurgeComm电源管理为提供对可删除国行口硬件的连接事件的自动侦测串行口驱动程序需对受检数据载体线(theDataCarrerDetectedline)进行监视、对于可以自动侦测的串行口如基于pC卡的串行口硬件,驱动程序使用函数CeEventHasoccured查看NOTIFCATIONEVENTRS232DETECTED消息流接口驱动程序流接口驱动程序是动态连接库.由一个叫做设备管理程序的特殊应用程序加载、管理和卸载、与具有单独目的接口的内部设备驱动程序相比.所有流接口驱动程序使用同一个接口并调用同一个函数集——流接口函数流接D驱动程序的主要任务是把外设的使用传递给应用程序,这是通过把设备表示为文件系统的一个特殊文件实现流接口驱动程序模型PCCard客户端设备流程图流接口驱动程序接收来自设备管理程序和应用程序的命令,并把这些命令转换成他控制的设备的适当控制信息。用户应用程序:包括任何访问外部设备的应用程序,对外部设备的访问是通过文件系统和连接外围设备的特殊文件完成的。设备管理程序:设备管理程序是一个用于加载和卸载流接口驱动程序的特殊应用程序。外围设备:由设备驱动程序管理的设备。设备管理程序用户层程序,非内核,与内核、注册表、流接口驱动程序DLL关系密切。在系统启动时或收到用户在基于WindowSCE的中自上增加了外围设备的信息时,初始化驱动程序的加载、例如在用户插入一个PC卡时.设备管理程序就试图寻找这PCi并为之加载设备驱动程序。向内核注册特定文件名,该文件名把应用程序使用的流接口函数映射到流接口驱动程序的那些函数的实现。通过从外围设备获得即插即用标识符或激活一个检查子程序来发现可以处理该设备的驱动程序为外围设备找到合适的设备驱动程序。通过读写注册值加载和跟踪驱动程序。当不再敲要设备时卸我其驱动程序、例如.在用户去掉PC卡后设备管理程序就卸载PC卡设备的驱动程序。设备管理程序使用的注册键位置:HKEY_LOCAL_MACHINE\Drivers子键:Active\:包含由设备管理程序加载的跟踪当前活动驱动程序的子键、设备驱动程序设置子程序不应修改Active\键的内容.也不应依赖于Active\键中任何特殊值的存在。PCMCIA\:含有与PC卡及其流接口驱动程序有关的子键。这个子链中最重要的信息是PC卡的即插即用标识符.它是和特殊的驱动程序相对应的.Detect\子键包含已编号的条目项这些项是DLL名和侦测函数的列表、这些函数为即插即用标识符的PC卡或为未知即插即用标识符的PC卡识别一个通用流接回驱动程序。Driver:在通用PC卡驱动程序之后命名的Driver子键含有用于加载驱动程序的值.当通用流接口驱动程序侦测函数指示它可以驱动一个特殊设备时.设备管理程序就生成单独的Driver子键。Driver子键的存在说明由驱动程序完成的侦测的存在,该侦测在PCMCIA\dete。的键中有一个条目项。Plug_and_PlayID:子键含有用于加载PC卡流接口驱动程序的值.典型地.PC卡驱动程序的设置子程序在基于WndowsCE平台上安装驱动程序时就生成了这些子键.加载流接口驱动程在启动时进行。在基于WINDOWSCE的平台启动时,就启动设备管理程序。设备管理程序读取HKEY_LOCAL_MACHINE\Drivers\BUILTIN键的内容并加载已列出的流接口驱动程序、例如.在许多基于WINDOWSCE的平台上,设备管理程序通过这个机制加载内部串行口(Serialdll)的驱动程序在设备管理程序自动检测外围设备与基于WndowsCE平台的连接时进行的.设备管理程序不能识别设备时,应用程序自己加载:启动应用程序,检测驱动是否加载,调用RegisterDevice函数来加载驱动并锁入内存应用程序进行正常操作.卸载流接口驱动设备管理程序卸载用户程序自行卸载:DeRegisterDevice函数从文件系统卸载设备文件,通知FreeLibrary函数卸载DLL流接口驱动程序入口点XXX_CloseXXX_DeinitXXX_InitXXX_IOControlXXX_OpenXXX_PowerDownXXX_PowerUpXXX_ReadXXX_SeekXX_Write单访问和多访问多个应用可以同时访问驱动多访问对XXX_Open的调用返回不同的hOpenContext值.单访问返回相同值.以后的调用使用这个值.串行设备驱动设计创建一个流接口驱动程序在应用程序中直接对串口读写,并处理数据串行设备驱动的考虑因素单点或多点访问:若要支持多个应用的同时访问,使用流接口实现,简

1 / 62
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功