




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
垦堕塾兰垫垄奎兰堑筌尘堕耋堡垒塞 摘要 u s b 接口技术作为近年来流行的计算机外设接口标准备受关注。本文对u s b 接 口技术的基本原理进行了较详尽的研究,同时在实际的工程项目开发中应用了其中 的部分技术,并最终实现了u s b r s 2 3 2 转换器。 u s b 全称u n i v e r s a ls e r i a lb u s ,即通用串行总线。作为一种串行通信接口,它本 质上符合串行通信标准,同时因为本文最终实现的转换器涉及到r s 2 3 2 串行通信标 准,所以本文首先介绍了串口通信技术的基本知识。 其后,本文简单介绍了设备驱动程序从v x d 到w d m ( 即w i n d o w s 驱动程序模 型) 的发展历史,并详细针对w d m 设备驱动程序及其设计做了介绍,然后简介了 w d m 功能驱动程序开发环境,并以本文的工程项目为例介绍了如何使用第三方开 发工具d r i v e r s t u d i o 开发所需的w d m 功能驱动程序。 最后本文结合实际的工程项目,着重阐述了基于h d 类的u s b 接口技术,以及 在u s b - - r s 2 3 2 转接器的实现过程中如何设计总体架构、如何选择芯片、如何设计 源代码、并最终实现整体的设计思想,同时对项目中存在的不足和技术改进作了论 述,并阐述了u s b 2 0 接口技术的前景和展望。 关键词:u s b ( u n i v e r s a ls e r i a lb u s ) 一通用串行总线,w d m ( w i n d o w sd r i v e r m o d e ) - - w i n d o w s 驱动程序模型,h i d 一人机接口设备 :垦堕塾:耋垫垄叁耋堡l 蜜尘堕耋堡垒塞 a b s t r a c t a sap o p u l a rs t a n d a r di n t e r f a c eu s e db yd e v i c e sf o rc o m p u t e r , t h et e c h n o l o g yo fu s b i n t e r f a c eh a sb e e np a i dm o r ea n dm o r ea t t e n t i o nt od u r i n gt h e s ey e a r s t h i sa r t i c l ed o e ss o m e d e t a i l e dr e s e a r c h e so nr u d i m e n to f u s bi n t e r f a c e a tt h es a m et i m e ,s o m eo f t h et e c h n o l o g y h a sb e e na p p l i e dt ot h ep r o j e c ti t e m a n df i n a l l yw ec o m et h r o u g hac o n v e r t e rt h a tc a n c o n v e r td a t af r o mu s bt or s 2 3 2 t h ef u l ln a m ef o ru s bi su n i v e r s a ls e r i a lb u s b e i n gas e r i a lc o m m u n i c a t i o ni n t e r f a c e , i ts u i t sa l ls t a n d a r d so fs e r i a lc o m m u n i c a t i o n a n db e c a u s et h ep r o j e c ti n v o l v e st h e t e c h n o l o g yo f s e r i a lc o m m u n i c a t i o n ,s os o m eb a s i ca c k n o w l e d g eo f i ti si n t r o d u c e df i r s t l y a f t e rt h a t ,t h i sa r t i c l ei n t r o d u c e st h eh i s t o r yo fd r i v e rp r o g r a m m i n g - - f r o mv x dt o w d m t h e ni td e t a i l st h et e c h n o l o g yo fw d mp r o g r a m m i n ga n dt h ee n v i r o n m e n tf o r d e v e l o p i n gd r i v e r s a n dh o w t od e v e l o paw d md r i v e rw i t ht h et o o lo fd r i v e r s t u d i oi s i n t r o d u c e d i nt h el a s tp a r t ,t h i sa r t i c l ep u t se m p h a s i so nt h eu s bi n t e r f a c eo f h i dc l a s s ,e s p e c i a l l y o nt h ew h o l es t r u c t u r e ,h a r d w a r ea n ds o f t w a r eo ft h ep r o j e c t a tt h ee n do ft h i sa r t i c l e , d e t a i l e dd i s c u s s i o no nt h es h o r t a g ea n di m p r o v e m e n tf o rt h ep r o j e c ti sm e n t i o n e d ,a n dt h e f o r e g r o u n do f u s b 2 0 i sa l s op r o s p e c t i n g k e yw o r d s :u s b - u n i v e r s a ls e r i a lb u s ,w d m - w i n d o w sd r i v e rm o d e ,h i d - h u m a n 独创性声明 、s 1 9 8 s | 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它 教育机构的学位或证书而使用过的材料与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示谢意。 学位论文题目: 蠼旦盔! 兰数缉亟鸯纽虱 学位论文作者签名 立p l 日期:矽年,j 月日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留、使用学位论又的规足。本人搜权 国防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子 文档,允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文 ( 保密学位论文在解密后适用本授权书:) 学位舣题目丝堑盘聱弛勰 学位论文作者签名: 童i 垒日期:矽咿碑,f 月2 二日 作者指导教师签名:汹日期:凇年,月t q 旦堕型兰垫查盔堂竺茎生堕堂堡笙苎 第一章概述 1 1 研究现状及背景 目前,计算机使用的大多数外围设备是基于接口实现的,这些接口最早由 i b m 公司在2 0 世纪8 0 年代设计,由于这些接口的设计存在很多缺陷,给设计 者和用户带来了许多不便。比如说在传统的i o 模式下,外围设备通常被映射 为c p u 的i o 地址空间,并且被分配一个指定的i r q ( 终端请求) ,某种情况下 也可能是一个d m a 通道,这些系统资源的分配通常由i 叫公司和其他设备制造 商指定,互相之间不可共享,而且容易产生冲突,而且一般只支持单个设备的 连接,这样连接的灵活性受到限制,通过扩展卡虽可解决但相对而言成本比较 昂贵,且主机主板上的插槽数目也同样有限,无法满足众多外设连接的需要。 因此,为满足现在越来越多、各式各样的外设连接的需要,制造商和用户都亟 待一种新的接口方案来解决传统接口现存的各种缺陷。 对应上述需求,产生了几种新的接口方案:g e o p o r t 、i e e e1 3 9 4 和u s b 。 ( 1 ) g e o p o r t :数据传输率为2 0 4 8 m b p s ,主要作为苹果机上的一种专门解 决方案,几乎完全应用于远程通信的功能,不能完全支持p c 下外围设 备的所有功能。 ( 2 ) i e e e1 3 9 4 :通常被称为f i r e w i r e ,最高数据传输率达到4 0 0 m b p s ,已 经基本能为所有的外围设备应用提供足够的带宽,但是由于其协议的 复杂性使制造成本大为增加,不适合实现低性能、低成本的外设。 ( 3 ) u s b :u s b 总线接口是相对上述接口而言在性价比上最好的一个解决方 案,也是本文即将介绍的接口总线形式。通用串行总线u s b ( u n i v e r s a l s e r i a lb u s ) 是一种快速、灵活的计算机外设接口,与传统的串口和 并口等通信接口比较,u s b 接口的最大特点是易于使用、支持热插拔和 即插即用,并且所有的配置过程由系统自动完成,无需用户手工操作, 数据传输速率在1 1 版本时支持1 2 m b p s ,2 o 版本支持4 8 0 m b p s ,而且 目前用于外设端的接口芯片价格低廉,一个支持u s b l 1 规范的u _ s b 接 口芯片价格在1 - 2 美元之间。 正是基于以上对比,1 9 9 8 年6 月w i n d o w s9 8 发布时。微软对u s b 接口的 前景更看好,因此在操作系统内部整合了对通用串行总线u s b 标准的支持,这 样也使基于u s b 接口外设的应用程序开发随之降低了难度,在其后的四年中, 随着w i n d o w s9 8 对操作系统市场份额的逐步垄断,u s b 接口技术也逐渐被几乎 所有外设厂商采用,并成为目前串行通信接口的行业标准之一。 虽然u s b 接口有如此多的优点,但白1 9 9 8 年正式提出1 0 版本白皮书以来, u s b 技术也只不过经历了短短几年的发展,现在正处于应用研究的开发成熟阶 段,而且由于其接口协议较传统的通信接口协议复杂,开发也较困难,又不支 持传统通信接口,与原有老设备( 即只有传统通信接口) 的兼容问题亟待解决, 所以研究、发展并在实践中应用这一技术,有利于我们高起点储备技术和进行 前瞻性研究。 第1 页 里堕型堂垫查奎堂堑塞竺堕堂堡丝苎 1 2 研究目标及研究环境建立 初涉u s b 接口技术,我们针对上述与老设备的兼容问题,特别在实践调研 后得知湖南计算机厂的现有成熟产品接口基本上都采用传统的r s 2 3 2 串口,而 现在新的p c 标准主板已不再提供传统的串口,基本上都只提供u s b 总线接口, 我们因此提出设计目标为完成一块u s b - r s 2 3 2 接口转换器,以满足其老设备与 新p c 机的兼容。并希望在此设计过程中,达到我们的研究目标:即全面和深入 地探讨u s b 接口技术,:并最终在实践中得到检验。 、 基于上述研究设计目标,对此u s b - - r s 2 3 2 接口转换器具体要求如下: ( 1 ) u s b - - r s 2 3 2 接口转换器的u s b 端与主机的u s b 接口直接相连,与主机 进行数据通讯。 ( 2 ) u s b r s 2 3 2 接口转换器对外围设备提供两个9 芯针式r s 2 3 2 标准串口, 要求支持1 2 k b p s 1 9 2 k b p s 传输波特率,同时支持m o d e m 通信所需 信号r x d 、t x d 、g n d 等。 ( 3 ) u s b r s 2 3 2 接口转换器由u s b 总线供电,无需外接电源,要求为每个 r s 2 3 2 串口提供电压为+ 5 v 、电流为1 0 0 m a 的电源v c c 。 ( 4 ) 完成u s b - - r s 2 3 2 接口转换器在w i n d o w s9 8 、w i n d o w s2 0 0 0 下的驱动 程序,并提供与其他应用程序的接口。 为完成研究目标,我们阅读了大量关于u s b 接口技术的书籍及网上资料, 并最终选择了c y p r e s s 公司的c y 7 c 6 3 0 0 0 系列的批u 开发板和仿真环境作为硬 件开发平台,该环境必须建立在w i n d o w s9 8 英文版操作系统上,其他驱动程序 和应用程序开发环境使用中文w i n d o w s9 8 和w i n d o w s2 0 0 0 操作系统,以及v i s u a l b a s i c 、v i s u a lc + + 、n u m e g a 公司的d r i v e r s t u d i o 软件。 第2 页 国防科学技术大学研究生院学位论文 第二章传统串行通信技术 2 1 传统串行通信接口的基本类型 传统的串行通信标准接口主要包括以下三种: l 、r s 2 3 2 它是由美国e i a ( 电子工业联合会) 与b e l l 公司开发,于1 9 6 9 年公布,r s 全称r e c o m m e n d e ds t a n d a r d ,该协议数据传输速率在0 2 0 k b p s ,并且明确规 定了连接电缆、机械特性、电气特性、信号功能及传送过程等各项标准,最初 标准是为d t e ( d a t at e r m i n a le q u i p m e n t ) 设备和d c e ( d a t ac o m m u n i c a t i o n e q u i p m e n t ) 设备之问的通信而设计,并未考虑计算机系统的应用要求,但目前 已被广泛用于计算机外设接口。 2 、r s 4 2 2 它改进了r s 2 3 2 通信距离短、速率低的缺点,定义了一种平衡总线的通信 接口,将传输速率提高到l o m b p s ,传输距离延长到4 0 0 0 英尺( 此时速率必须 低于i o o k b p s ) ,允许在一条平衡总线上连接最多1 0 个终端接收器,是一种单 机发送、多机接收的单向、平衡总线传输规范。 3 、r s 4 8 5 为扩展应用范围,e i a 又于1 9 8 3 年在r s - 4 2 2 基础上制定了r s 一4 8 5 标准, 增加了多点、双向通信能力,即允许多达1 2 8 个发送器连接到同一条总线上, 同时增加发送器的驱动能力和冲突保护特性,扩展了总线共模范围。 串行通信协议具有统一标准,主要包括通信控制规程和传输控制规程,是 对通信双方的一种约定。对涉及数据传输链路层的数据格式、同步方式、传送 速度、传送步骤、检纠错方式以及控制字符定义等各方面做出的统一规范。目 前采用的通信协议主要分为异步传输协议和同步传输协议两类。 异步传输协议规定,按字符传输数据时,低位在前,高位在后,每个字符 以1 位起始位( 一般为低电平) 开始,后接5 - 8 位数据位和1 位校验位,以卜 2 位停止位( 一般为高电平) 结束,在字符间加以不定长度的空闲位( 高电平) , 同时在下一起始位处( 低电平) 必须要有一个下降沿。异步传输靠起始位和停 止位来实现字符的界定( 或可称为同步,但应严格与同步协议中的同步区分开 来) ,因此接收和发送设备的时钟频率偏差不会导致错位,加之字符之间的空闲 位也为这种偏差提供了缓冲,故异步通信的可靠性较高。但由于起始位和停止 位等附加位不是有效传输位,这样使传输效率降低了2 0 ,因此一般常用在数 据传输速率较慢的场合( 小于1 9 2 k b p s ) 。 同步传输协议规定。所有的设备都使用一个通用的时钟,所有的传输位都 和这个时钟信号同步,换言之,每个传输位在时钟信号跳变( 上升或下降沿) 之后的一个规定的时间内有效,接受方利用时钟跳变来决定何时读取每个输入 的位。由于同步协议传输过程中的无效传输位很少,传输效率高,有助于提高 第3 页 国防科学技术大学研究生院学位论文 传输速率,所以一般在高速传输时采用同步协议。但同步传输协议对于检错和 纠错较麻烦,而且需要另外传输时钟信号,这就需要一条额外的传输线,并且 这条线对屏蔽噪声干扰要求严格,所以对于距离较长的连接不太适合。 异步传输与同步传输协议的数据传输示例可参见下图2 - 1 及图2 - 2 。 r 一发送方利用一个内部时钟来确定何时发送每个位 l 厂一接受方检测开始信号的下降沿,然后利用它自己的内 山山部时钟来从每一位的中间附近读取接下来的数据位 数据( 以6 1 h碉厂 l l | 厂广 厂 妇始倒1 0 0 00 1 10l 停止位 数据( 以6 1 h 图2 一l 异步传输一异步协议先发送l s b ( 低位) 图2 2 同步传输一同步协议先发送m s b ( 高位) 2 2 串行通信接口简介 2 2 1r s 2 3 2 接口简介 如前所述,r s 2 3 2 接口最初并非专为p c 机通信所开发,它所针对的是更广 域的通信接口应用,因此在实际应用中使用最为广泛,并且由于其价格便宜、 编程容易,所以在相当长时间内,还可能与u s b 、f i r e w i r e 等这些新标准接口 并存。 r s 2 3 2 接口连接器可使用9 针外壳和2 5 针外壳,它们都有9 个异步通信电 压信号脚,2 5 针串口还另有9 个2 0 m a 电流环信号脚、6 个空( 保留) 脚和1 个 保护地脚。,本文在实际应用中使用了9 针r s 2 3 2 标准串口。 如下表2 - 1 所示,9 个异步通信电压信号脚具体说明如下: ( 1 ) d s r 一数据设置准备好,有效状态表明m o d e m 处于可使用的状态。 ( 2 ) d t r 一数据终端准备好,有效状态表明数据终端可以使用。 ( 3 ) r t s 一请求发送,表示d t e 请求向d c e 发送数据。即当终端要发送数据 时,使该信号有效,向m o d e m 请求发送,甩来控制m o d e m 是否要进入 发送状态。 ( 4 ) c t s 一允许发送,表示d c e 准备好接收d t e 发来的数据,是对请求发送 信号r t s 的响应信号。当m o d e m 已准备好接收终端传来的数据,使该 信号有效,通知终端开始沿发送数据线t x d 发送数据,在半双工m o d e m 第4 页 国防科学技术大学研究生院学位论文 系统中用于发送方式和接收方式之间的切换。 ( 5 ) r l s d 一数据载波( 接收线信号) 检测,有效则表示d c e 已接通外部通 信链路,并将告知d t e 准备接收数据。即当本地的m o d e m 收到由外部 通信链路另一端( 远地) 的m o d e m 送来的载波信号时,使r l s d 信号有 效,通知终端准备接收,并且由m o d e m 将接收下来的载波信号解调成 数字数据后,沿接收数据线r x d 送到终端。 ( 6 ) r i 一振铃指示,当m o d e m 收到交换机送来的振铃呼叫信号时使其有效, 通知终端已被呼叫。 ( 7 ) t x d 一发送数据,通过t x d 数据线将串行数据发送到m o d e m ,d t e d c e 。 ( 8 ) r x d 一接收数据,通过r x d 数据线接收从m o d e m 发来的串行数据,d c e d t e 。 表2 - i 串口连接器针脚说明 9 针串口( d b 9 ) 4 2 5 针串口( d b 2 5 ) 针脚号i功能说明 l 缩写j i 针脚号4 功能说明4 缩写i 1 i i 数据载波检测ld c dl | 8l 数据载波检测i id c d i 2 4 接收数据 i r x d43 4 接收数据 4r x d 3 8 发送数据 l l t x d82 l 发送数据 l i t x d 4 9 数据终端准备id t r9 2 0 | i 数据终端准备i id t r 5 信号地 0 g n d67 信号地 0 g n d 6 i i 数据设置就绪i ld s r 6 9 数据设置就绪l ld s r 7 i i 请求发送i lr t s 4 4 请求发送l ir t s 8 i 清除发送 l c t s55 i l 清除发送 l c t s 、 9 l 振铃指示 i i b e l l82 2 8 振铃指示 i l b e l l 在r s 2 3 2 标准中,通信速率低于2 0 k b p s 时,直接连接的最大距离为1 5 m ( 误 码率小于4 时要求导线电容值应小手2 5 0 0 p f ,普通导线的电容值约1 7 0 p f m ) , 传输速率与传输距离及电缆的对应关系参见下表2 - 2 。实际应用中,当使用普 通屏蔽双绞线、传输速率为9 6 0 0 b p s 时,传输距离可达3 0 3 5 米。 表2 2 通信波特率与传输距离的对应关系 波特率( b p s ) 1 号电缆传输距离扩2 号电缆传输距离 1 l o 5 0 0 0 l 3 0 0 0 3 0 0 i 5 0 0 0 4 3 0 0 0 1 2 0 0 l 3 0 0 0 i i , 3 0 0 0 2 4 0 0 l 1 0 0 0 l 5 0 0 4 8 0 0 1 0 0 0 4 2 5 0 9 6 0 0 0 2 5 0 i l 2 5 0 当采用r s 2 3 2 直接将两台计算机对接时,出于对应的发送接收数据方向正 第5 页 国防科学技术大学研究生院学位论文 好相反,所以其对应针脚连接需根据下表2 - 3 互换。 表2 - 3r s 2 3 2 连接器针脚互连说明 9 针- 9 针l2 5 针一2 5 针i9 针一2 5 针 20392 。439292 3i29 3 l2 3i 3 5 i 5i l 7 j i 75 9 7 2 2 2r s 4 2 2 、r s 4 8 5 接口标准简介 l 、r s 4 2 2 接口 r s 4 2 2 接口为平衡电压数字接口电路,共5 根线,使用d b 9 连接器。由于 接收器采用高输入阻抗,发送器驱动能力比r s 2 3 2 强,故允许在相同传输线上 连接最多1 0 个接收节点,其中一个为主设备,其余均为从设备,支持主对从的 双向通信,但从设备之间不能通信。 由于接口采用单独的发送和接收通道,不必控制数据方向,各设备之间任 何必须的信号交换均可按软件方式( x o n x o f f 握手) 或硬件方式( 一对单独的 双绞线) 实现。 r s 一4 2 2 的传输距离与传输速率成反比,1 0 0 米长的双绞线的最大传输速率 为1 m b p s ,最大传输距离为1 2 1 9 米,最大传输速率为l o m b p s 。并且传输电缆终 端需要接终结电阻,电阻阻值约等于传输电缆的特性阻抗( 在3 0 0 米以下无需 终结电阻) o 2 、r s 4 8 5 接口 r s 4 8 5 接口是在r s - 4 2 2 接口基础上发展而来的,它们有许多电气规定相似, 如同样采用平衡电压传输方式,传输电缆终端都需要接终结电阻等。 但r s - 4 8 5 接1 :3 总线能力与r s - 4 2 2 接口不同。传输线可以采用两线或四线 方式,两线方式连接可实现真正的多点双向通信,而采用四线方式连接时,与 r s 一4 2 2 接口一样只能实现一点对多点的双向通信,即只能有一个主设备,其余 均为从设备。但无论四线还是两线连接方式下,r s 4 8 5 接口总线上均可连接最 多1 2 8 个设备。 r s - 4 8 5 接口与r s - 4 2 2 接口的不同还在于其共模输出电压不同。r s 一4 8 5 接 口的共模输出电压是一7 v 至+ 1 2 9 之间,而r s - 4 2 2 接口的共模输出电压在一7 v 至 + 7 v 之间。 另外r s - 4 8 5 接口需要2 个终结电阻,这一点也与r s 4 2 2 接口不同。 2 3 串行通信编程 第6 页 里堕型堂垫查奎堂婴圣生堕堂垡丝塞 传统串行通信方式的研究和开发已有近2 0 年历史,所以相关的编程方式和 方法已相当成熟,而u s b 同样属于串行通信方式,它的编程方式在原理上也大 同小异,以下就串行通信编程原理作一些简单介绍。 1 、轮询方式 c p u 通过i 0 指令询问指定外设当前的状态,如果外设准备就绪,则进行 数据的输入或输出,否则c p u 等待,循环查询:优点是结构简单,只需要少量 的硬件电路即可,缺点是由于c p u 的速度远远高于外设,因此通常处于等待状 态,工作效率很低。 2 、中断处理方式 在这种处理方式下,c p u 不再被动等待,而是同时执行其他程序,一旦外 设为数据交换准备就绪,可以向c p u 提出中断服务请求,c p u 如果响应该请求, 便暂时停止当前其他程序的执行,转去执行与该请求对应的服务程序,完成后 再继续执行原来被中断的程序。这种方式的优点显而易见,它不但为c p u 省去 了查询外设状态和等待外设就绪所花费的时间,提高了c p u 的工作效率,还满 足了外设的实时处理要求。但缺点是需要为每个i o 设备分配一个中断请求号 和相应的中断服务程序,此外还需要一个中断控制器管理i o 设备提出的中断 请求,如设置中断屏蔽、中断请求优先级等,这样每传送一个字符都要进行中 断,启动中断控制器,还要保留和恢复现场以便能继续原程序的执行,花费的 工作量很大,如果需要交换大量数据时,系统性能会降低很多。 3 、串行通信流控制 数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算 机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满, 则此时继续发送来的数据就会丢失。尤其在网络上通过m o d e m 进行数据传输时, 这个问题就更为突出。而流控制可以解决这个问题,当接收端数据处理不过来 时,就发出“不再接收”的信号,发送端收到后就停止发送,直到收到“可以 继续发送”的信号后再开始发送数据。因此流控制可以控制数据传输的进程, 防止数据丢失。p c 机中常用的两种流控制是硬件流控制( 包括r t s c t s 、d t r c t s 等) 和软件流控制x 0 n x 0 f f ( 继续停止) o 4 、奇偶校验 串行数据传输中由于干扰可能引起信息出错,即误码。如何发现传输中的 错误叫“检错”,发现错误后如何消除错误叫“纠错”。最简单的检错方法是“奇 偶校验”,即在传送字符的各位之外,再传送i 位奇偶校验位。奇校验是指,在 加入校验位后,使所有传送的位中1 的个数为奇数;偶校验是指,在加入校验 位后,使所有传送的位中l 的个数为偶数。奇偶校验能够检测出信息传输过程 中的部分误码( 1 位误码能检出,2 位及2 位以上误码不能检出) ,但是它无法 纠错,在发现错误后,只能要求重发。这种校验方式由于实现简单而得到了广 泛应用。有些检错方法如循环冗余码( c r c ) 检错等,则不但可以检错,还具有 自动纠错能力。 第7 页 国防科学技术大学研究生院学位论文 第三章w d m 驱动程序设计 3 1 驱动程序概述 从广义上讲,驱动程序是指一系列控制硬件设备的函数,它为连接到计算 机的硬件提供软件接口,使用户应用程序可以以规范的方式访问各种硬件,而 不必考虑如何具体实现对不同硬件的控制,也就是说它使用户态程序员操作各 种不同的硬件设备如同操作一个文件一样简单。 在d o s 操作系统中,由于允许编程者直接控制硬件设备,所以驱动程序可 以是软件中与应用程序完全分开的另一部分( 如一个单独的t s r ) ,也可以是直 接嵌入到应用程序中的一个模块,甚至可以由应用程序直接操作硬件设备。这 样可能由于某些操作员对硬件设备的错误操作而导致损坏硬件设备或造成操作 系统崩溃,也就是说,d o s 操作系统对硬件设备资源没有保护特性。 进入w i n d o w s 操作系统后,出于对操作系统稳定性以及对硬件设备的保护, 系统不再允许编程者直接与硬件设备打交道,这种对硬件设备资源的保护机制 使对设备的访问变得复杂起来。因此,在w i n d o w s 9 5 之后,微软公司提出了v x d ( v i r t u a ld e v i c ed r i v e r ) 一虚拟设备驱动程序的概念,将复杂的、针对不同 具体硬件设备的控制封装在设备驱动程序之中,使用户态程序员不必过多考虑 硬件层次的编程,而是简单地调用标准的函数接口实现对设备硬件的控制。 v x d 和v m m ( 虚拟机管理器) 共同运行在i n t e l 系列c p u 保护模式下的r i n g o 层,拥有对硬件的最高控制权,帮助系统对各种硬件资源进行识别、管理和维 护,以维持系统的正常运转。 w i n d o w s 操作系统进一步升级至w i n d o w s 9 8 以后,在w i n d o w sn t 驱动模型 的基础上,增加了即插即用、电源管理等内容后,微软提出了新的驱动程序模 型w d m ( w i n d o w sd r i v e rm o d e l s ) 一w i n d o w s 驱动程序模型。也就是说,在 + w i n d i w s 9 8 以后的w i n d o w s 系列操作系统中,设备驱动程序必须根据w d m 驱动 程序模型来设计和实现。 以w i n d o w s 2 0 0 0 操作系统为例,我们可以对驱动程序进行分类。在操作系 统的最高层,w i n d o w s 2 0 0 0 支持两种类型的驱动程序:用户模式和内核模式。 用户模式驱动程序是按用户模式运行的系统级代码,由于用户模式不允许直接 访问硬件,它必须依赖运行于内核模式的驱动程序;内核模式驱动程序由运行 于内核模式的系统级代码组成,可直接控制硬件。再往下一层,内核模式的驱 动程序可进一步分为遗留驱动程序和w d m 驱动程序。它们同样都可进一步分为 三种类型,即高级驱动程序、中级驱动程序和低级驱动程序。高级驱动程序依 赖于中级和低级驱动程序完成工作,而中级驱动程序依赖于低级驱动程序完成 工作。具体分类可参见下图3 - 1 。 第8 页 国防科学技术大学研究生院学位论文 图3 - 1w i n d o w s 2 0 0 0 驱动程序分类 3 2v c d m 设备驱动程序简介 w d m 驱动程序也是分层的,即不同层次上的驱动程序有着不同的优先级。w d m 驱动程序模型除了核心模型描述设备驱动程序的标准结构外,还为常见类型的 硬件设备实现了一个模块化的、分层的总线驱动程序和类驱动程序。w d m 总线 驱动程序实现了支持通用串行总线( u s b ) 、i e e e1 3 9 4 ( f i r e w i r e ) 总线协议等; w d m 类驱动程序对标准类接口的支持减少了w i n d o w s9 5 和w i n d o w sn t 所需的 设备驱动程序的数量和复杂性,为实现标准w i n d o w s 功能提供了条件。因此在 w i n d o w s9 8 以后的操作系统平台上,w d m 驱动程序已成为主流的驱动程序模型。 w d m 技术通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬 件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性,它支持 u s b 、i e e e1 3 9 4 、a c p i 等全新的硬件标准。 w d m 引入功能设备对象f d o ( f u n c t i o n a ld e v i c eo b j e c t ) 与物理设备对象 p d o ( p h y s i c a ld e v i c eo b j e c t ) 两个新类来描述硬件。一个真实硬件对应一个 且只能有一个p d o ,却可以拥有多个f d o ,在驱动程序中直接操作的不是硬件而 是相应的p d o 与f d o 。在用户态和内核态通信方面,系统将每一个用户请求打 包形成一个i r p 结构,然后发送至驱动程序,并通过识别i r p 中的p d o 来区别 是发送给哪一个设备的。在驱动程序的加载方面,w d m 不通过驱动程序名称识 别,而是通过一个1 2 8 位的全局唯一标识符g u i d 来实现驱动程序的识别。 w d m 和其它模式驱动程序基本上是相同的,代码的主要区别在于如何创建 设备。在w d m 驱动程序中,即插即用( p n p ) 管理器告知何时向系统添加一个设 备、或从系统删除设备,p n p 管理器使用爿c i n f 文件查找新设备并安装正确驱动 程序;其它模式驱动程序必须在系统重启时发现设备,然后使用专门的安装程 序安装。另外,这两者在细节上也存在很多区别,其它模式驱动程序参数一般 由注册表提供,在d r i v e r e n t r y 里调用读注册表的函数,然后根据注册表再调 用c r e a t e d e v i c e ;但是w d m 一般不是这样,这是由于w i n d o w s2 0 0 0 下支持p n p , 第9 页 里堕型兰垫查查堂堑壅生堕兰些笙茎 在设备插入或加载时,p n p 管理器调用a d d d e v i c e 入口点创建p d o 设备,一般 在d r i v e r e n t r y 里创建的是一个与设备或者对象毫无物理关系的f d o 虚拟设备, 用于管理与w i n 3 2 的通讯,如果不想对该设备做什么特别处理,或者设备不复 杂,a d d d e v i c e 可以简单返回n ts u c c e s s ,而无需调用c r e a t e d e v i c e 。 w d m 支持p n p 协议,实现时仅仅需要在m a j o rf u n c t i o n 里加入一些对p n p 事件响应的例程即可。 w d m 本身的p n p 管理器被抽象地提升到了r o o t 的地位,从而使安装程序发 生了很大的改变。p n p 管理器负责所有的总线驱动程序的加载,总线驱动程序 则负责遍历所有位于总线上的设备,并且为每个设备创建相应的设备对象。当 p n p 管理器发现一个设备对象,就查找该对象对应的d r i v e r ( 驱动程序) 。并调 用该d r i v e r 的a d d d e v i c e 例程。如果d r i v e r 不在内存中,就先加载,然后调 用a d d d e v i e e 例程。 当然,总线本身并没有发出任何信号告诉p n p 管理器自己的存在,所以, 总线驱动是在系统安装时设定的。而i s a 设备并没有类似的规范,所以需要k m d t ( 翰n e lm o d ed r i v e r ) 检查i s a 总线上硬件的存在及状态,这也是老式k m d 存在的惟一理由,同时也是微软极力在新规范里取消i s a 总线的理由之一。 一个完整的w d m 驱动程j ! 笋要完成以下工作:初始化设备:创建与删除设备 ( 包括可热插拔设备的加入和删除事件) :处理应用层程序的打开和关闭句柄的 请求;处理应用层程序的输入输出请求;串行化( 获可称为排队) 对设备硬件 的访问:调用其他驱动程序;取消i o 请求:超时i o 请求;实现电源管理和 _ l v 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 i n d o w s 管理诊断) 。 w i n d o w s9 5 和w i n d o w sn t 采用的驱动程序体系不同,所以大多数情况下 驱动程序也不能通用。如果设备需要在w i n d o w s9 x n t 下使用,一般至少要设 计w i n d o w s9 x 和w i n d o w sn t 两个驱动程序版本。但是w i n d o w s9 8 可以兼容 w i n d o w s9 5 的驱动程序,而w d m 驱动可以同时适用于w i n d o w s9 8 和w i n d o w s2 0 0 0 ( 以前叫w i n d o w sn t 5 0 ) 中,因此从长远的角度看,今后驱动程序开发人员 只要开发w d m 驱动程序就可以了。 3 3w d m 功能驱动程序设计 设备驱动程序的作用是提供操作系统与硬件设备的接口,并最终支持用户 及其应用程序要求的信息流。因此1 d m 功能驱动程序设计不仅仅包括物理设备 的驱动程序,也包括为文件系统之类的非物理设备所编写的虚拟设备驱动程序。 通过设备驱动程序,多个进程可以同时使用这些资源,从而可以实现多进程并 行。在本文中只讨论物理设备的驱动程序。 在设计驱动程序之前,必须为硬件设备选择合适的驱动程序。最简单的方 法是购买现成的商业通用驱动程序,也可以使用现成的标准总线驱动程序或类 驱动程序。然而大多数情况下,为充分利用和控制硬件资源,我们必须自己为 第1 0 页 国防科学技术大学研究生院学位论文 硬件编写最适合的设备驱动程序,这就需要对自己控制的硬件设备进行细致地 分析,以详细了解硬件设备的特性。这些硬件特性主要包括: ( 1 ) 设备的总线结构 设备采用何种总线结构非常关键,因为不同的总线类型( 如i s a 和p c i ) 在硬件工作机制上有许多不同,所以驱动程序的设计也会大不相同。 ( 2 ) 寄存器特性 即要了解硬件设备的控制寄存器、数据寄存器和状态寄存器等各种寄 存器工作的特性,这样才能充分利用设备的特有资源。 ( 3 ) 设备状态信号 要了解如何接收、解释和处理设备的状态和错误信号,这些信号通常 需要由驱动程序来获取并返回给用户。 ( 4 ) 中断行为 要了解设备是否支持中断,以及产生中断的条件和使用中断的数量, 这些对于驱动程序的中断控制至关重要。 ( 5 ) 数据传输机制 设备最常见的数据传输机制是通过i o 端口,也就是通过c p u 的i n 或 o u t 指令进行数据读写,另一种重要的传输机制是d m a ( d i r e c tm e m o r y a c c e s s ) ,这种直接内存读取机制很少涉及数据复制,因此传输数据较 快,但因为需要编写专门的d m a 驱动程序,所以通常适用于传输大批 量数据。 ( 6 ) 设备内存 许多设备自身带有内存,p c i 总线设备大多采用映射的方式,将设备内 存映射至p c 系统的物理内存地址,但有的设备需要通过驱动程序来设 置设备的内存接口寄存器。 有关驱动程序的加载和响应用户请求的内容,在d d k 文档中有规定,所以 在设计设备驱动程序时主要面临的问题是如何进行硬件操作,这是根据具体设 备的不同而各不相同的。然而硬件驱动程序的功能虽然千差万别,其完成的功 能却基本相同,即完成设备的初始化,对端口的读写操作,对中断的设置、响 应和调用,以及对内存的直接读写j w d 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 i n d o w s 管理诊断) 例程、 事件报告倒程、,系统线程控制铡程等等。这其中,最主要的例程是驱动程序入 口点( d r i v e r e n t r y ) 例程,当驱动程序被装入时,内核调用该例程作初始化工 作,然后内核会调用许多其他例穗,它们有个通用名称;回调例程。回调例程 主要有:i o 请求包( 即i r p ) 处理例程、u n l o a d 例程、a d d d e v i c e 例程、s t a r t l o 例程、中断服务例程( i s r ) 、d p c f o r i s r 例程、c a n c e l 例程、c o m p l e t i o n 例程。 即插即用通知例程、c a l i b a c k 例程等等。 驱动程序所要完成的具体工作简述如下: ( 1 ) 设备初始化 第l l 页 国防科学技术大学研究生院学位论文 p c i 设备驱动程序要实现识别p c i 器件、寻址p c i 器件的资源和配置p c i 器件中断服务。在p c i 设备驱动程序的初始化过程中,系统利用设备 识别号( d e v i c ei d ) 、厂商识别号( v e n d o ri d ) 和索引号( i n d e x ) 来搜索和识别p c i 设备,并确定其物理位置( 总线号、设备号和功能 号) ,总线号、设备号和功能号是该设备在系统中的唯一寻址标志,系 统可以利用它们寻址该设备的配置空间( c o n f i g u r a t i o ns p a c e ) 。然 后由设备驱动程序从配置空间获得设备硬件参数,包括所使用的中断 号、端口地址的范围、i o 读写方式、存储器的地址空间以及存储器的 映射方式等等。 ( 2 ) 端口操作。 在p c 机上,i o 端口的寻址空间和内存寻址空间是不同的,所以处理 方法也不同。i o 空间是一个6 4 k 字节的寻址空间,它不象内存有实模 式和保护模式之分,在各种模式下寻址方式都相同。在w i n d o w s9 8 下, 用户程序可以直接使用i o 指令,而不一定要通过专门的驱动程序来 完成,所以如果软件对硬件的操作完全是通过i o 端口操作来完成的, 甚至可以不用专门设计驱动程序,而直接由应用程序来完成对硬件的 控制。 ( 3 ) 内存的读写。 w i n s o w s 操作系统工作在3 2 位保护模式下,保护模式与实模式的根本 区别就在于c p u 寻址方式上的不同,这也是w i n d o w s 驱动程序设计中 需要着重解决的问题。w i n d o w s 采用了分段、分页机制,这样
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危化证安全员考试题库及答案解析
- 消防安全考核题库及答案解析
- 信息服务协议书
- 2025年皮肤性病学常见皮肤病诊断治疗模拟答案及解析
- 土建安全员c2测试题及答案解析
- 2025年全科医学患者健康管理计划设计考核答案及解析
- 工程贷款协议书
- 合伙购买车辆协议书
- 银行从业考试步骤及答案解析
- 2025年培训讲座进修课程培训试题答案及解析
- 2025年职业培训学校建设项目可行性分析与初步设计方案报告
- 2025年软件架构师专业技术考核试题及答案解析
- 八上语文第9课《天上有颗南仁东星》课件
- 导尿术操作护理课件
- 推进班组信息化建设:利用信息技术提高工作效率
- 2023年上海市虹口区初三一模语文试卷(含答案)
- 优势视角课件完整版
- 花城版音乐课时15-第12课 走近戏曲(一)观赏京剧学习念白-京剧丑角的念白《报灯名》-课件
- 《食品安全法》与粮食质量安全专题培训课件
- 2023年安康市交通建设投资集团有限公司招聘笔试题库及答案解析
- 文理分科心理测试问卷
评论
0/150
提交评论