欢迎来到天天文库
浏览记录
ID:14140480
大小:24.00 KB
页数:4页
时间:2018-07-26
《基于usb接口的数据采集系统的wdm驱动程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于USB接口的数据采集系统的WDM驱动程序设计 USB发展现状与特点 USB(UniversalSerialBus)通用串行总线。1995年11月由Compaq、Digital、IBM、Intel、微软、NEC以及北方电讯(加拿大)等7家主要电脑、电子科技厂商共同开发了USB0.9标准。这是一种PC的外挂总线,诸家公司联合提出这一新型总线,是为了解决PC机外围设备的拥挤和提高设备的传输速度。但是,由于USB的复杂性,各公司不能及时提供必要的硬件和软件支持,这种新型的PC总线直到Windows98推出以后,才得到迅猛发展。它的市场价
2、值才真正显现出来,人们才真正领略到它的方便与快捷。USB具有许多其他总线无法比拟的优点。这里主要就USB1.1技术做一些研究和应用。 WDM驱动模型 WDM即Win32驱动程序模型,是微软公司在VxDs之后推出的新驱动模型,运行平台是Windows98/2000/XP操作系统。WDM中驱动程序的识别是通过一个128位的GUID实现的。USB总线驱动程序由操作系统WindowsXP提供,负责与实际USB总线通信。因此,USB驱动程序的开发实际上是USB设备驱动程序的设计。 WDM驱动程序有一个主要的初始化入口点,即一个必须称为Dri
3、verEntry的例程。它有一个标准的函数原型。当WDM驱动程序被装入时,内核调用DriverEntry例程。系统提供的默认驱动程序的入口处为DriverEntry,负责驱动程序的初始化,用以初始化驱动程序范围的数据结构和资源。 在AddDevice例程中,驱动程序创建一个设备对象作为目标I/O设备,并将设备对象附着到设备堆栈中,设备堆栈为每一个相关设备驱动程序包含一个设备对象。在设备被第一次枚举时,系统初始化时调用AddDevice例程。DriverObject参数指向一个驱动程序对象,就是在DriverEntry例程中初始化的驱动
4、程序对象。PDO参数对应于设备堆栈底部的物理设备对象(PDO)。对于设备驱动程序,其AddDevice函数的基本职责是创建一个设备对象并把它连接到以PDO为底的设备堆栈中,相关步骤如下:通过调用IoCreateDevice例程创建设备对象之后建立一个私有的设备扩展对象;为了使应用程序能识别设备,需要对USB一个或多个设备接口寄存,以便应用程序能知道设备的存在。另外,给出设备名以便创建符号连接。初始化设备扩展对象和设备对象中的Flag成员;通过IoAttachDeviceToDeviceStack函数把新设备对象放到堆栈上。 即插即用(
5、PnP)是计算机硬件和软件支持的组合,包括硬件设备、系统软件和驱动程序的支持。其功能为:对已安装的硬件进行自动动态识别;硬件资源分配;加载驱动程序;PnP使驱动程序和用户模式的代码登记,并通知一定的硬件事件。 电源管理是在系统范围内用集成的方法来使用和保存电源,包括电源管理的软硬件支持,提供以下功能:实现最小的启动和关机延迟。系统能在低电力状态时休眠,在这种状态下要恢复操作完全无须重新引导系统。从用户的角度来看,可以简单的唤醒休眠中的计算机;提高了电源效率和电池生命期。仅仅当设备传输功能给用户时电源才启用于设备,如果一个设备未使用,按
6、照命令,电源可被断开,而后再加电;使操作更加安静。 驱动程序开发 采用DriverStudio开发USB驱动程序,必须严格遵循安装顺序:首先安装VisualC++6.0,然后安装WinXPDDK,最后安装DriverStudio。安装之后,VisualC++编程工具栏中自动添加了一个菜单DriverStudio。由于DriverWorks所用的类库是在DDK库函数基础上生成的,所以必须在VisualC++中打开DriverWorks\source目录下的VdwLibs.dsw,选择BatchBuild菜单,通过RebuildAll来
7、创建自己的库文件。 在使用DriverWorks开发工具之前,首先要设置一下DDK的路径,SetDDkGo用以创建编译驱动程序的环境,它执行一系列的操作:运行SETENVBAT;设置DriverWorks环境变量;设置开始程序的环境属性。缺设置情况下,自动调用C++编译器编译所生成的工程文件。 对于创建驱动框架,则按照如下步骤:启动DriverWizard,填写工程名和选择路径;由于WindowsXP系统下使用的是WDM驱动模型,故选择驱动类型WDMDriver;本设计开发的是设备驱动,选择WDMFunctionDriver;选择W
8、DM的总线类型USB,USB设备使用的是Philips公司的PDIUSBD12芯片,产品的ID号ProductID为0666;选择端点及参数设置。这里增加端点1的中断输入,最大传输字节为16;选择所生成的驱
此文档下载收益归作者所有