(系统分析与集成专业论文)基于windows的usb接口wdm驱动研究和应用.pdf_第1页
(系统分析与集成专业论文)基于windows的usb接口wdm驱动研究和应用.pdf_第2页
(系统分析与集成专业论文)基于windows的usb接口wdm驱动研究和应用.pdf_第3页
(系统分析与集成专业论文)基于windows的usb接口wdm驱动研究和应用.pdf_第4页
(系统分析与集成专业论文)基于windows的usb接口wdm驱动研究和应用.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(系统分析与集成专业论文)基于windows的usb接口wdm驱动研究和应用.pdf.pdf 免费下载

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

文档简介

南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 摘要 w m d o w s 2 0 0 0 ) ( p i s t a 已经成为p c 的主流操作系统,要想实现在w i n d o w s 操作系 统下对硬件设备的操作,必须通过在w d m 模型下设计的驱动程序这个软接口。随着u s b 2 0 的发展,运用u s b 这种具有热插拔,高速率等优点的接口设备已开始流行。w i n d o w s 驱动 程序模型w d m ( w i n d o w sd r i v e rm o d e l ) 是一种全新的设备驱动程序模式,可以运行于 w i n d o w s 9 8 2 0 0 0 ) ( p 等多种操作系统平台。w d m 采用模块化、分层次类型的驱动程序结 构。作为一种符合w d m 的驱动程序,u s b 驱动程序分为u s b 总线驱动程序和u s b 功能 驱动程序两个层次。u s b 总线驱动程序负责控制实际的硬件,实现与底层的通信。u s b 功 能驱动程序由设备开发者编写,位于u s b 总线驱动程序的上层,通过向u s b 总线驱动程 序发送u s b 请求包,来实现对u s b 设备信息的发送或接收。本文以运用e z u s b 芯片的 卫星视频接收设备为例,论述了如何运用d d k 工具包,开发u s b 设备w d m 驱动程序。 重点介绍了u s b 驱动程序中“d r i v e r e n t r y ”、添加设备例程、即插即用处理例程、读写操 作例程等几个重要例程的设计实现,以及应用程序如何访问设备。并介绍了编译、安装及 测试u s b 设备驱动程序的过程。为适应不同版本的晰n d o w s 操作系统( 如w i n d o w s v i s t a ) ,将接收卡驱动程序在各类w i n d o w s 操作系统下出现的一些新问题,进行了处理。 本文首先介绍了驱动程序开发的历史、w d m 基本概念及w i n d o w s 驱动程序的种类, 并对u s b 技术和开发驱动工具做了简单介绍。第二章讨论了w d m 的层次结构模型,驱动 程序的加载流程以及几个重要的数据结构。第三章分析了w d m 的数据读写方式及中断的 处理方式。第四章对w d m 的一般处理流程进行了介绍。第五章详细介绍了卫星视频信号 接收卡设备的驱动程序开发及对程序中的重要代码进行了列举与讲解,并对某些错误及其 处理进行了列举。第六章对本文的一个总结。 关键词:w i n d o w s ,u s b ,w d m ,驱动程序,例程 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 a b s t r a c t w i n d o w s 2 0 0 0 x p v i s t ah a sb e c o m et h em a i n s t r e a mo fp co p e r a t i n gs y s t e m i no r d e rt o c o n t r o lt h eh a r d w a r eu n d e rt h ew i n d o w so p e r a t i n gs y s t e m ,s o f ti n t e r f a c eo fd e s i g n i n gu n d e r w d mm o d e lm u s tb ea d o p t e d w i t ht h ed e v e l o p m e n to fu s b 2 0 u s be q u i p m e n th a ss t a r t e dt o p o pb e c a u s eo ft h ea d v a n t a g e so fu s bs u c ha sh o t - s w a p p a b l ea n dh i 曲- s p e e d w i n d o w sd r i v e r m o d e l w d mi sa ne n t i r e l yn e wm o d e lo fd e v i c ed r i v e r s 。i tc a nb er u no nt h eo p e r a t i o ns y s t e m s u c ha sw i n d o w s9 8 2 0 0 0 ) ( p w d mt a k e st h em o d u l a r , l a y e r e dd r i v e rs t r u c t u r e a sap a r to f w i n d o w sd r i v e rm o d e l 。u s bd e v i c ed r i v e r si sd e p a r t e dt ot w ol a y e r e d o n ei su s bb u sd e v i c e d r i v e ra n dt h eo t h e ri su s bf u n c t i o nd e v i c ed r i v e r t h eu s bb u sd e v i c ed r i v e rt a k e sc h a r g eo f c o n t r o la n dc o m m u n i c a t e sw i t hh a r d w a r e ,u s bf u n c t i o nd e v i c ed r i v e ri sd e s i g n e db yc l i e n t 。i t l i e st h eu pl a y e ro fu s bb u sd e v i c ed r i v e li ts e n d sa n dr e c e i v e si n f o r m a t i o nf r o mu s bd e v i c eb y s e n du r bt ou s bb u sd e v i c ed r i v e r t h i sp a p e rt a k es a t e l l i t ev i d e or e c e i v i n ge q u i p m e n tu s e e z u s bc h i pa sa ne x a m p l e d e s c r i b e sh o wt ou s ed d kk i tt od e v e l o pw d md r i v e ro fu s b d e v i c e s m o s t l yi n t r o d u c e ss o m ei m p o r t a n tr o u t i n es u c ha s “d r i v e r e n t r y r o u t i n e a d dd e v i c e r o u t i n e ,p l u ga n dp l a yp r o c e s sr o u t i n e ,r e a do rw r i t er o u t i n e a n da p p l i c a t i o np r o g r a m sh o wt o a c c e s sd e v i c e a n di n t r o d u c e sc o m p i l e i n s t a l la n dd e b u gp r o c e s so fu s bd r i v e rd e v i c e s t om e e t t h ed i f f e r e n tv e r s i o n so ft h ew i n d o w so p e r a t i n gs y s t e m ( s u c ha sw i n d o w sv i s t a ) ,s o m en e w p r o b l e m st h a td r i v e ro fr e c e i v i n gc a r dr u n n i n gu n d e rd e f e r e n tw i n d o w so p e r a t i n gs y s t e mw a s d e a l tw i t h a tf i r s t , t h ep a p e ri n t r o d u c e st h eh i s t o r yo fd e v i c ed r i v e sd e v e l o p m e n t ,b a s i cc o n c e p to f w d ma n dt y p e so fw i n d o w sd e v i c ed r i v e r s a n di n t r o d u c e st h eu s bt e c h n o l o g y , d r i v e r d e v e l o p m e n tt o o l s c h a p t e r2d i s c u s s e st h el a y e r e da r c h i t e c t u r em o d e lo fw d ma n dl p a df l o wo f d e v i c ed r i v e r sa n ds o m ei m p o r t a n td a t as t r u c t u r e c h a p t e r3a n a l y z e sd a t aa c c e s sm e t h o da n d i n t e r r u p t sp r o c e s so fw d m c h a p t e r4i n t r o d u c e st h eg e n e r mp r o c e s s e so fw d m c h a p t e r5 d e t a i l e dd e s c r i b e st h ed e v e l o p m e n to fs a t e l l i t ev i d e os i g n a lr e c e i v i n gc a r du s bd e v i c ed r i v e r s a n ds o m ei m p o r t a n tp r o c e d u r a lc o d eo nt h el i s ta r ee x p l a i n e d s o m ee r r o r sa n dt h e i rt r e a t m e n ta r e c i t e d c h a p t e r6g i v e sac o n c l u s i o n k e yw o r d s :w i n d o w s u s b 。w d m ,d r i v e r s ,r o u t i n e 本人郑重声明: 学位论文独创性声明 l 、坚持以“求实、创新”的科学精神从事研究工作。 2 、本论文是我个人在导师指导下进行的研究工作和取得的研究成果。 3 、本论文中除引文外,所有实验、数据和有关材料均是真实的。 4 、本论文中除引文和致谢的内容外,不包含其他人或其它机构已经发 表或撰写过的研究成果。 5 、其他同志对本研究所做的贡献均已在论文中作了声明并表示了谢意。 作者签名: j 耋 日 期:211 :占:2 学位论文使用授权声明 本人完全了解南京信息工程大学有关保留、使用学位论文的规定,学校 有权保留学位论文并向国家主管部门或其指定机构送交论文的电子版和纸 质版:有权将学位论文用于非赢利目的的少量复制并允许论文进入学校图书 馆被查阅;有权将学位论文的内容编入有关数据库进行检索:有权将学位论 文的标题和摘要汇编出版。保密的学位论文在解密后适用本规定。 、 互 作者签名: ! 鎏 关于学位论文使用授权的说明 本人完全了解南京信息工程大学有关保留、使用学位论文的规定,即:学校有权保留 送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以 采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵循此规定) 作者签名: 日期: 导师签名: 日 期: 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接1 2 1w d m 驱动研究和应用 第一章绪论 在w i n d o w s 操作系统中,驱动程序能让设备看起来像是一个文件,可以打开设备的一 个句柄,然后应用程序可以在设备句柄最后关闭之前向驱动程序发出读写请求。设备驱动 程序是操作系统的一个信任部分,提供连接到计算机的硬件的软件接e l ,用户不必考虑如何 控制硬件,便可让应用程序以一种规范的方式访问硬件,而不必考虑如何控制硬件。驱动程 序作为一个软件,在装入后成为操作系统内核的一部分。它使一个或多个设备可用于用户 态程序,每个设备代表一个物理的或逻辑的硬件。一个完整的w i n d o w s 驱动程序要完成以 下工作:初始化;创建和删除设备;处理w i n 3 2 打开和关闭文件旬柄的请求:处理w i n 3 2 输入输出请求;串行化对设备的访问;访问硬件;调用其他驱动程序;取消i 0 请求;超 时i 0 请求;处理一个可热拔插的设备被加入或删除的情况:处理电源管理请求;使用 w i n d o w sm a n a g e m e n ti n s t r u m e n t a t i o n ( w i n d o w s 管理诊断,w m i ) 和n t 事件向系统管理员报 告。, 1 1w i n d o w s 设备驱动程序发展历史 微软已经发布了很多版本的w i n d o w s 操作系统,从开始的w i n d o w s 3 0 到w i n d o w s 2 0 0 0 和w i n d o w s x p ,以及到最近发布的全新操作系统w m d o w sv i s t a 。一些底层的技术一直在各 个w i n d o w s 平台下共享,而其它的一些技术随版本的不同有了很大的变化。由于设备驱动 程序是与操作系统最低层的功能发生交互,因此,如果要实现跨平台的兼容,首先必须在 不同平台的底层结构上做到兼容。w i n d o w 3 0 的基本结构一直延续到w m d o w s 9 x 家族,虽 然后来的操作系统在驱动程序的开发和管理上有了非常大的改变,但底层的基本结构没有 变化。在w i n d o w s 3 x 、w i n d o w s 9 5 和w i n d o w s 9 8 下使用的是虚拟设备驱动( v i r t u a ld e v i c e d r i v e r ) ,也称为v x d 。虚拟设备驱动程序,原来的设计目标是为了支持在w i n d o w s 平台下 的设备,它作为动态连接库( d l l ) 链接到操作系统里,工作在保护模式下( r i n 9 0 ) 。v x d 解决了那些常规应用程序不能完成的工作,比如直接硬件的读写,也可以说,使用v x d 是 扩展操作系统内核的一种方法。v x d 最初的编写采用的是i n t e l 汇编语言,后来随着v t o o l s d 的使用,使用c 和c + + 也开始流行起来。w i n d o w sn t 的设计体现更现代和模块化的内部 体系,它的目标是更好的灵活性和更加的健壮。n t 采用了一种特有的内核模式驱动程序体 系,一般也采用c 语言来编写。当n t 下的驱动程序需要直接控制机器时,它会向硬件抽 象层( h a l ) 发出请求。硬件抽象层建立在驱动程序和实际的硬件之间,为驱动程序隐藏 了硬件的不同,这样就可以编制出跨处理器( 比如p e n t i u m 和a l p h a ) 、源代码兼容的设备 驱动程序。因为w i n d o w s n t 可以工作在单处理器和多处理器环境中,驱动程序必须十分小 心的保护关键的数据结构。w i n d o w s n t 提供了一种分层的体系结构,每一个n t 设备驱动 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 程序有一个底层和一个上层接口。底层的驱动程序直接控制硬件。在底层和上层驱动程序 之间的是中间层驱动程序。w i n d o w s n t 也定义了一种类驱动程序体系,并且支持某些设备 类。w i n d o w sn t 的这种驱动程序体系,在w i n d o w s9 8 和m n d o w s 2 0 0 0 p v i s t a 中得到 了继承和扩展,形成了现在的w d m 体系。 认识到跨平台兼容能力的价值后,微软开始尝试统一设备体系,给未来的驱动程序开 发提供一个简单的平台。微软的做法,不是重新开发一套新的体系,而是在更合理的 w i n d o w sn t 体系的基础上,进行必要的完善,从而形成一个新的设备驱动程序体系,称为 w i n d o w sd r i v e rm o d e l ( w i n d o w s 驱动程序模型,w d m ) 这个名字。w i n d o w s9 8 最先支 持w d m ,随后推出的操作系统中也都支持w d m ,包括w i n d o w s 2 0 0 0 系列,w i n d o w sm e 和w i n d o w sx p ,v i s l a 。 1 2w d m 驱动程序简介 编写硬件设备驱动程序一直是一种具有很强挑战性的复杂工作,即便是编写过具有相 当难度的w i n 3 2 程序的开发人员,在编写设备驱动程序时也必须去应对种种不适。编写设 备驱动程序很像在执行一项艰巨的任务:没有窗口、没有消息需要处理,很难对源代码进 行调试设置,几乎所有支持库都无法调用;更加糟糕的是由于设备驱动程序属于操作系统 的信任部分,于是很容易伤害系统,对此开发人员却往往缺乏一种保护手段去防止进程、 线程以及w i n d o w s 系统故障。 w d m ( w i n d o w sd r i v e rm o d e l ) 是微软为开发人员提供的一种编写运行在w i n d o w s 平 台下新硬件驱动程序的有效方法,这就是w i n d o w s 驱动程序模型。w d m 提供了设备类 ( d e v i c ec l a s s e s ) ,由此形成的源代码可以运行在各类w i n d o w s 平台:w i n s t a x p 2 0 0 0 m e 9 8 。 w d m 是一种便携式的编程技术,它使开发人员写出的驱动程序可以跨平台运行,支 持编写微软所有支持的w d m 总线驱动程序,在w d m 中总线的概念是一种附加在其它设 备( 包括物理设备、逻辑设备、虚拟设备) 上的设备协议。例如w i n d o w s x p 内置的w d m 技术支持的总线类型包括:p o ( p e r i p h e r a lc o m p o n e n ti n t e r c o n n e c t ) 、动态式即插即用串行 i o 总线( 如u s b 和i e e e l 3 9 4 ) , s c s i ( s m a l lc o m p u t e rs y s t e mi n t e r f a c e ) 、n d i s ( n e t w o r k d r i v e ri n t e r f a c es p e c i f i c a t i o n ) 以及远程式n d l s ( r n d i s ) 。 新版w d m 中的r n d i s 属于新内容:如简化了对网络设备硬件的开发,减弱了网络设 备对驱动程序的依赖性,使最终用户对网络设备的设置安装更简便。w d m 新版中对设备 的支持主要包括:u s b 设备类,例如其中的h i d ( h u m a ni n t e r f a c ed e v i c e ) ;数码相机扫 描仪;通过i e e e l 3 9 4 标准的视频捕捉设备;音频:控制调制解调器的w i n m o d e m 。在w d m 类代码中提供的p o r t m i n i p o r t 驱动范文,支持第三方厂商为其特殊设备编写的“迷你型” 驱动m i n i d r i v e r 。现将w d m 的特点总结如下: - 2 南京信息工程大学硕士学位论文 基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 1 支持即插即用( p a p ) 和电源管理 即插即用是指外部设备可以在系统运行时添加或者删除,操作系统可以在任何时候分 配设备需要的硬件资源。w d m 驱动程序支持即插即用,因而可以动态配置设备。电源管 理是指设备对系统电源的使用情况是动态变化的。w d m 驱动程序支持设备的电源管理, 使得设备对系统电源的使用情况同设备所处的工作状态相关。操作系统通过发送i r p 请求, 通知外部设备进行资源配置和电源管理,这些i r p 主函数的代码分别为i r pm jp n p 和 i r p m j p o w e r 。针对每个主函数代码还有详细的次函数代码,表明系统对设备进行的详 细操作和请求。w d m 设备驱动程序中有响应这些i r p 请求的分发例程。 2 支持w m i w m i 是w i n d o w sm a n a g e m e n ti n s t r u m e n t a t i o n 的缩写,是一种向系统管理员报告管理信息 的协议,这个协议能测量和管理消耗在本地或者是网络中客户机上的资源信息。w d m 驱 动程序必须支持w m i ,一般这种请求是通过i r pm js y s t e mc o n t r o l 请求传递给 p d o ( 物理设备对象) 的,支持w m i 的驱动程序具有这样特点:可以测试应用程序性能、配 置数据和其它信息;可以允许应用程序改变驱动程序中的设置,使得驱动程序执行特定功 能;可以通知应用程序,驱动程序检测到哪些事件或者警告信息。 3 支持类驱动程序微驱动程序分层结构 w d m 驱动程序采用分层结构,可和其它驱动程序相联系,接收建立在其他驱动程序 上的服务,也可向其它驱动程序发送i r p 请求。w d m 驱动程序模型支持类驱动程序微驱 动程序。类驱动程序是针对一个特定类设备的驱动程序,处理针对这一类设备的i r p 请求。 类设备驱动程序向上为这一类设备提供了基于i r p 的接口,向下对一个或者多个微驱动程 序定义了接口。而微驱动程序主要任务是为特定驱动程序提供服务。 4 提供系统总线驱动程序 w d m 环境提供了系统总线驱动程序,通过系统总线驱动程序,设备驱动程序实现对 物理设备的底层控制和资源配置。驱动程序依靠p d o ( 物理设备对象) 存取系统总线驱动程 序,一个f d o ( 功能设备对象) 通过向p d o 发送i r p ,实现和总线驱动程序的通信。 1 3 分类w i n d o w s 驱动程序 w i n d o w s 操作系统中包含很多种驱动程序,可以将这些驱动程序分为用户模式驱动程 序和内核模式驱动程序两大类。图1 。1 中列出了其中的一部分。 用户模式驱动程序包含了w i n 3 2 多媒体驱动程序,支持m s d o s 应用程序的虚拟设备 驱动程序( v i r t u a ld e v i c ed r i v e r v d d ) 和其他保护子系统的驱动程序。v d d 是用户模式部 件,它可以使d o s 应用程序访问x 8 6 平台上的硬件,v d d 通过屏蔽i o 权限掩码来捕获 端口访问操作,它基本上是模拟硬件操作。 3 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 圈1 1w i n d o w s 驱动程序种类 内核模式驱动程序使用系统级代码编写,且运行在内核模式下,因为内核模式允许直 接访问硬件,这些驱动程序被用来直接控制硬件。内核模式驱动程序包含了许多子类: 1 p i l p 驱动程序就是一种遵循w m d o w s 即插即用协议的内核模式驱动程序。 2 w d m 驱动程序是一种p i l p 驱动程序,它同时还遵循电源管理协议,并能在 w i n d o w s 9 8 和w i n d o w s2 0 0 0 间实现源代码级兼容。w d m 驱动程序还细分为类驱动程序 ( c l a s sd r i v e r ) 和迷你驱动程序( m i n i d r i v e r ) ,类驱动程序管理属于已定义类的设备,迷你驱 动程序向类驱动程序提供厂商专有的支持。 3 小端口驱动程序( m i n i p o r td r i v e r ) ,包括视频小端口驱动程序,s c s i 小端口驱动程序 和n d i s 小端口驱动程序。 4 文件系统驱动程序( f s d ) 在本地硬盘或网络上实现标准p c 文件系统模型,包括多层 次目录结构和命名文件概念。 1 4u s b 设备驱动程序简介 u s b 设备驱动程序是基于w d m 结构之上的。w d m 的分层驱动程序结构在u s b 设备上体现在驱动程序分为u s b 总线驱动程序和u s b 功能驱动程序两个层次。u s b 总 线驱动程序一般由w i n 9 8 或更高的操作系统提供,它位于u s b 功能驱动程序的下面,负责 与实际的硬件打交道,实现烦琐的底层通信。u s b 功能驱动程序( 也称为用户自定义驱动) 由设备开发者编写,位于u s b 总线驱动程序的上层,不与实际的硬件打交道,而是通过向 4 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 u s b 总线驱动程序发送包含u r b ( u s br e q u e s tb l o c k 请求块) 的i r p 请求包,来实现对u s b 设备信息的发送或接收。 1 5u s b 技术的特点 ( 1 ) 操作简便,即插即用。因为u s b 接口支持热插拔,用户在使用外接设备时,不需 要关机安装硬件后再开机安装驱动程序,只需直接将u s b 接口插上p c 机的接口。u s b 接 口为连接电缆和连接头提供了单一的模型,支持自我检测外设,自动地进行设备驱动设置。 而过去的串口和并口只能接一个设备,并且从一个设备转而使用另一个设备时必须关机后 才能进行。u s b 设计的驱动程序和应用软件可以自动启动,无需用户做更多的操作,为用 户带来极大的方便。 u s b 设备也不涉及i r q 冲突问题。u s b 口单独使用自己的保留中断,不会同其它设备 争用p c 机有限的资源,同样为用户省去了硬件配置的烦恼。 ( 2 ) 成本低廉,携带方便。u s b 接口以低廉的价格提供1 5 m b p s 的子通道设施将外设 和主机硬件进行了最优化的集成促进了低价格外设的发展廉价的电缆和连接头。u s b 设备 大多以“小、轻、薄”见长,对用户来说,同样2 0 g 的硬盘,u s b 硬盘比i d e 硬盘要轻一 半的重量,在想要随身携带大量数据时,当然u s b 硬盘会是首选了。 ( 3 ) 标准统一。大家常见的是i d e 接口的硬盘,串口的鼠标键盘,并口的打印机扫 描仪,可是有u s b 之后,这些应用外设统统可以用同样的标准与p c 连接,这时工程硕士 学位论文接口通信协议研究和接口驱动开发就有了u s b 硬盘、u s b 鼠标、u s b 打印机, 等等。 ( 4 ) 可以连接多个设备。u s b 接口适应不同的设备,并支持对多个设备的同时操作, 在主机和设备之间可以利用底层协议传输多个数据和信息流,提高了总线利用率。u s b 在 p c 上往往具有多个接口,可以同时连接几个设备,如果接上一个有4 个端口的u s bh u b 时,就可以再连上4 个u s b 设备,以此类推,尽可以连下去,将你家的设备都同时连在一 台p c 上而不会有任何问题( 最高可连接至1 2 7 个设备) 。 u s b 采用“级联”方式,即每个u s b 设备用一个u s b 插头连接到一个外设的u s b 插 座上,而其本身又提供一个u s b 插座供下一个外设连接用。通过这种类似菊花链式的连接, 一个u s b 控制器可以连接多达1 2 7 个外设,而每个外设间距离线缆长度可达5 米。u s b 能智能识别u s b 链上外围设备的插入或拆卸,u s b 为p c 的外设扩充提供了一个很好的解 决方案。 ( 5 ) 同步传输带宽,确定的带宽和低延迟适合电话系统和音频的应用同步工作可以利 用整个总线带宽。可以选择一系列大小的数据包,允许对设备缓冲区大小进行选择通过指 定数据缓冲区大小和执行时间,支持各种数据传输率;通过协议对数据流进行缓冲处理。 ( 6 ) 可靠性。在协议中使用出错处理差错恢复机制,可以对有缺陷设备进行认定。与 5 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 p c 机即插即用的体系结构的一致;对现存操作系统接口的良好衔接。 ( 7 ) 传输速度快。速度性能是u s b 技术的突出特点之一。u s b l 1 支持两种传输速 率:1 5 m b p s 和1 2 m b p s ,比串口快了整整1 0 0 倍,比并口也快了十多倍,主要应用在中低速 传输要求的场合。2 0 0 0 年发布的u s b 2 0 规范提供了4 8 0 m b p s 的传输速率,以满足更快的 数据传输要求。目前2 0 已经广泛投入使用。 ( 8 ) 独立供电,生产成本低。普通的使用串口、并口的设备都需要单独的供电系统, 而u s b 设备则不需要,因为u s b 接口提供了内置电源。u s b 电源能向低压设备提供5 伏 的电源,因此新的设备就不需要专门的交流电源了,从而降低了这些设备的成本并提高了 性价比。 ( 9 ) 支持多媒体。u s b 提供了对电话的两路数据支持。u s b 可支持异步以及等时数据 传输,使电话可与p c 集成,共享语音邮件及其它特性。u s b 还具有高保真音频。由于u s b 音频信息生成于计算机外,因而减小了电子噪音干扰声音质量的机会,从而使音频系统具 有更高的保真度。 ( 1 0 ) u s b 存在的问题。 尽管在理论上,u s b 可以实现高达1 2 7 个设备的串列连接,但是在实际应用中,也许 串联3 到4 个设备就可能导致一些设备失效。而且,实际的u s b 产品中,只有键盘是有一 个输入口、一个输出口的设备,其它的则只有一个输入口而已 根本无法再连接下一个u s b 设备,所以当前的应用中,使用h u b 来连接多个u s b 设备是必需的。 另一个问题出在的u s b 电源上,尽管u s b 本身可以提供5 0 0 m a 的电力,但一旦碰到 高电耗的设备,就会导致供电不足。解决这个问题的办法仍然是使用h u b 。 1 6 创建驱动程序的所用工具 因为微软没有公布的源代码,w i n d o w s 2 0 0 0 平台下的驱动程序开发工具目前只有 m i c r o s o f t 的驱动程序开发工具包d d k ( d e v i c ed r i v e rk i t ) 。其他如v i r e os o f t w a r e 公司的等 开发工具v t o o l s d 只是对d d k 所提供的函数进行了一些封装,向开发者提供更友好的编程 接口。它开发的驱动程序最终连接到的函数库仍然是d d k 提供的,所以并不是一个独立 的驱动程序开发工具。因此选用常用的开发工具d d k 。 w i n d o w s 2 0 0 0d d k 是开发基于w i n d o w s 2 0 0 0 平台设备驱动程序的开发工具包,从微 软官方网站即可获得。安装了w i n d o w s 2 0 0 0d d k 后,开始菜单上将出现d e v e l o p m e n tk i t s 菜单项。在w i n d o w s 2 0 0 0 中可以为不同的处理器构造自由或检查版本的驱动程序。自由构 造的目标是驱动程序的最终发行版本,所以要进行必要的优化并删除所有的调试符号。检 查构造的目标是一个未优化的调试版本,包括用于驱动程序调试的符号。w i n d o w s 2 0 0 0 有 自由版本和检查版本。如果使用m i c r o s o f tw i n d o g 调试程序,则需要两台允许w i n d o w s 2 0 0 0 的计算机。开发计算机应是允许w i n d o w s 自由版本的更快的计算机,驱动程序应该在运行 6 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 检查本的另一台目标计算机上测试运行。我在编写驱动程序的过程中使用的是w i n d e b u g 和d e b u g v i e w ,利用w i n d e b u g 连接到m i c r o s o f t 的网址后,打开p c 自动保存在系统目录 下的内存拷贝文件,可以跟踪到驱动最后运行而导致问题的代码处,能够解决例如p c 突 然蓝屏死机等问题。d e b u g v i e w 进行代码内打印信息跟踪和注册表跟踪。w i n d o w s 2 0 0 0 还 可在a l p h a 平台上运行,也可以为a l p h a 平台构造自由目标和检查目标。 d d kb u i l d 命令行实用程序是构造驱动程序的主要工具,它使用正确的编译器和链接 程序设置调用n m a k e 实用程序来构造驱动程序。如果有必要,b u i l d 也可以用于构造标准用 户态w i n 3 2 下的可执行文件。必须设置b u i l d 才可以在命令行运行它。除了源代码,还要 指定一个s o u r c e 文件、一个标准的m a k e f i l e 、目录结构和可选的m a k e f i l e i n c 和文件d i r s 。 b u i l d 把构造过程的详细信息和错误结果显示到标准输出。另外,它在b u i l d e r r 文件中记录 错误信息,在b u i l d w r r l 中列出警告,在b u i l d 1 0 9 中列出日志。在w i n d o w s 2 0 0 0 中,这些 文件都有一个自由构造版本和一个检查版本。即b u i l d f r e 1 0 9 、b u i l d c h k 1 0 9 等。 n m a k e 实用程序使用m a k e f i l e 文件中的指令确定运行什么命令来更新一个项目。 例如下面的m a k e f i l e 文件说明,如果d r i v e r c p p 文件已经更新,使用c l 编译器把它编 译成d r i v e no b j ,并使用链接工具把d r i v e r o b j 链接生成d r i v e n e x e 。 d r i v e ro b j :d r i v e r c p p c ld r i v e r d r i v e r e x e :d r i v e r o 巧 l i n k od r i v e ne x ed r i v e r o b j 大多数m a k e f i l e 文件比这个文件复杂的多,但是设置用于驱动程序的编译器和链接程 序是相当复杂的工具,所以m i c r o s o f t 坚持在驱动程序的编写过程中使用m a k e f i l e 文件。 b u i l d 在当前目录中的查找一个叫做s o u r c e s 的n m a k e 宏文件,了解驱动程序构造的 详细信息。例如下面的程序清单给出了i o 端口驱动程序的s o u r c e s 文件。它给出了如 下信息驱动程序目标名称为s c a r d s y s ,要构造一个w d m 类型的驱动程序,在o b j 目录中 构造。d d k 的i n e 目录被添加到头文件的搜索列表中;s o u r c e s 宏指定要编辑的文件列表。 如下程序段所示: t a r g e t n a m e = s c a r d t a r g e t l y p e = d r i v e r d r i v e r t y p e = w d m t a r g e t p a t h = o b j i n c l u d e s = $ ( b a s e d i r ) k i n c ; $ ( b a s e d i r ) k s r c u s b i n c ;| $ ( b a s e d i r ) k s r c w d m u s b i n c ;| i n c ;、 $ ( b a s e d i r ) i n c d d k ;t 。c o m m o n d e f ; 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 e :w o r k 、2 0 0 7 c i cd e f i n e s = $ f cd e f i n e s ) t a r g e t l i b s = $ ( d d kl 1 1 3p a t h 、k s 1 i b $ ( d d k _ l i b _ p a t h ) k k s g u i d 1 i b $ ( d d k _ l i b _ p a t h ) b d a s u p 1 i b $ ( d d kl i bp a t h ) u s b d 1 i b e :w o r k :2 0 0 c l l o b j c h k1_wlh x 8 6 i 3 8 6 c i l i bi b u s em a p s y m = 1 s o u r c e s = m u s b s y s c p p f i r m w a r e c p p | s t b 0 8 9 9 c p p u d s t b d a r c 1 7 本论文的目的和主要内容 本文的主要目的就是为一个基于u s b 通讯接口的卫星电视接收卡在w i n d o w s 平台下 开发的设备驱动程序。由于u s b 设备所具有的低成本、即插即用、热拔插、多级级联、传 输距离远、带宽高、简单易用等优点,使其更加广泛地应用于各种p c 外设、移动存储设 备、消费类电子产品以及工业领域。为了支持对这些设备的控制,必然需要根据设备的特 性开发相应的驱动程序,因此,认真研究和分析设备驱动程序的开发很有必要。 本文首先深入分析了在w i n d o w s 环境下w d m 驱动程序开发模型的基本机制及实现的 基本原理,并介绍了u s b 设备驱动程序的体系结构。在文章的后半部分详细描述了本人开 发u s b 设备驱动程序的过程,并给出了部分驱动程序中的关键代码并加以诠释。 本文组织结构如下: 第一章介绍w i n d o w s 设备驱动程序开发的背景及w i n d o w s 驱动程序的种类,并对w i n d o w s 驱动程序模型w d m 的特点和u s b 设备驱动程序开发做了简单介绍。 第二章讨论w d m 的层次结构,驱动程序的加载流程以及驱动程序开发中用到的几个重要 的数据结构和对象。 第三章分析w d m 的数据读写方式及中断处理方式。 第四章对对w d m 的一般处理流程进行了介绍。 第五章详细介绍了卫星视频信号接收卡设备的驱动程序开发及对程序中的重要代码进行了 列举与讲解。 第六章是对本文的一个总结。 8 一 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b 接口w d m 驱动研究和应用 第二章w d m 驱动程序的基本构造和重要概念 2 1w d m 驱动程序基本构造 2 1 1w d m 的层次模型 w d m 模型是一种分层化的驱动程序模型,在这个模型中,驱动程序的层或堆栈一起 工作处理i 0 请求。w i n d o w s 2 0 0 0 的i o 子系统是基于对象的。对于w d m 驱动程序而言, 最重要的对象是驱动程序对象和设备对象。w i n d o w s 的i o 子系统也是包驱动的系统。在 这个系统中,每个i o 操作可以通过一个i r p 描述,驱动程序的工作过程就是对i r p 的处 理过程。 图2 1w d m 中设备对象和驱动程序的层次结构 w d m 模型使用了如图2 1 的层次结构。图中左边是一个设备对象堆栈。设备对象是系 统为帮助软件管理硬件而创建的数据结构。一个物理硬件可以有多个这样的数据结构。处 于堆栈最底层的设备对象称为物理设备对象( p h y s i c a ld e v i c eo b j e c t ) ,或简称为p d o 。位于 设备对象堆栈中部的对象称为功能设备对象( f u n c t i o n a ld e v i c eo b j e c t ) ,或简称f d o 。在 f d o 的上面和下面一般有一些过滤器设备对象( f i l t e rd e v i c eo b j e c t ) 。位于f d o 上面的过滤 器设备对象称为上层过滤器,位于f d o 下面p d o 之上的过滤器设备对象称为下层过滤器。 在w d m 驱动程序模型中,每个硬件设备一般包含两个驱动程序。其中一个驱动程序称为 功能驱动程序,即硬件驱动程序。它知道如何控制设备的主要功能,负责初始化i o 操作, 处理i o 操作完成时所产生的中断事件,并为用户提供一种适当的设各控制方式。另一个 驱动程序称为总线驱动程序( b u sd r i v e r ) ,它控制对总线上的所有设备的访问。例如,如果 想访问u s b 设备,必须使用u s b 总线驱动程序。总线驱动程序负责枚举它的总线,这意 9 南京信息工程大学硕士学位论文基于w i n d o w s 的u s b

温馨提示

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

评论

0/150

提交评论