(计算机系统结构专业论文)windows下三类典型驱动程序的设计与实现.pdf_第1页
(计算机系统结构专业论文)windows下三类典型驱动程序的设计与实现.pdf_第2页
(计算机系统结构专业论文)windows下三类典型驱动程序的设计与实现.pdf_第3页
(计算机系统结构专业论文)windows下三类典型驱动程序的设计与实现.pdf_第4页
(计算机系统结构专业论文)windows下三类典型驱动程序的设计与实现.pdf_第5页
已阅读5页,还剩67页未读, 继续免费阅读

(计算机系统结构专业论文)windows下三类典型驱动程序的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 设备驱动程序是实现计算机与外部设备间正常通信的重要保障。本文介绍并 且简要分析了p c i 总线和u s b 总线协议;分析了w d m 驱动程序的结构、工作 原理和特点,介绍了w d m 驱动程序设计中的常用技术;分析了w i n d o w 的n d i s 网络驱动程序接口规范。 本文着力描述了基于p c i 总线和u s b 总线接口的用户化外部设备的w d m 驱 动程序的设计与实现过程,讨论了基于一般用途的p c i 接口芯片,实现w 试d o w s 定义的、标准的网络设备的驱动程序的方法。 关键词:驱动程序w d mp c i 总线u s b 总线n d i s a b s t r a c t t h i sp a p e r b e g i n sw i t ht h ea n a l y s i so f t h ep c ib u sa n dt h eu s b s p e c i f i c a t i o na n d t h ea r c h i t e c h t u r e ,t h em e c h a n i s ma n dt h ec h a r a c t e r i s t i c so fw d m t h e p r o g r a m m i n g t e c h n i q u e i nd e s i g n e i n gw d md r i v e ra n dt h en d i sa l ea l s od i s c u s s e d t h ep a p e rd e t a i l e dd i s c u s s e st h em e t h o do fd e s i g n i n gw d md r i v e rf o rt h e c u s t o m i z a t i o np e r i p h e r a lb a s e do nt h ep c ib u sa n du s b i n t e r f a c e s ,a n db r i n gf o r w a r d t h em e t h o do f d e s i g n i n gt h en d i sc o m p a t i b l em i n i p o r td r i v e rb a s e do n ac o m m o n u s e p c ib u s b r i d g ec h i p k e y w o r d s :d r i v e r w d mp c iu s bn d i s 创新性声明 y6 9 5 7 1 7 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特另t , l t m 以标注和致谢中所列的内容外,论文中不包含 其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名 再 圈趣 日期:避2 :垄 关于论文使用授权说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权属西安电子科技大学。本人保证毕业离 校后,发表论文或使用论文工作成果时署名仍然为西安电予科技大学。学校有权 保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分 内容,可以允许采取影印、缩印或其他手段保存论文。( 保密的论文在解密后遵守 此规定) 本学位论文属于保密,在一年解密后适用本授权书。 本人签名 导师签名 同期:墨翌:乏丛 第一章绪论 第一章绪论 本章介绍驱动程序技术的发展动态与驱动程序设计在实际应用中的意义与任 务。最后简要说明了课题的背景、来源和论文的结构以及作者的工作安排。 1 ,1 驱动程序设计的意义和任务 从8 0 3 8 6 开始,i n t e lc p u 提供了三种c p u 工作模式:实模式、保护模式和 虚拟8 6 模式。 实模式也称实地址模式,在这种模式下工作的程序使用的逻辑地址就是实际 物理地址。在实模式下内存管理采用分段技术。这种技术将1 m b 的物理空间分段, 每个段最大6 4 k b ,段地址的基地址存储在段寄存器中。实际物理地址就是段寄存 器中的数值左移4 位,再加上偏移量形成2 0 位的物理空间地址,从而实现1 m b 地址空间的访问。早期的c p u 只支持这样的架构,使得应用于其上的操作系统和 应用软件均拥有对系统所有资源的访问与控制权限,从这个角度讲,当时的应用 程序与操作系统软件的分界线并不清楚:凡是涉及硬件资源访问与控制的应用程 序,可以并且也必须自己完成对该资源的操作与维护,设备驱动程序这个概念在 当时并不明确。 保护模式的出现,为实现多任务宏观并行工作提供了有力支持。该模式中实 现了内存分段、分页管理,并且c p u 硬件支持对多个任务的工作环境的隔离,以 保证给每个任务提供一个隔离的工作环境。该模式为运行其上的软件提供了 r i n g o r i n 9 3 共4 种特权级别,每种级别上的软件拥有的能力和权利不同。操作 系统软件一般运行在特权级别最高的r i n g o 层上,拥有整个系统的软硬件资源的 访问控制权;应用程序运行在特权级别最低的r i n 9 3 层上,系统的硬件、中断和 操作系统的核心软件资源的访问控制权均被屏蔽。采用保护模式明显提高了整个 系统的可靠性和健壮性,但是造成了应用程序无法直接访问硬件。同时,由于系 统硬件设备的制造厂商和功能特性的不同,操作系统也不可能提供对于所有设备 的直接访问接口。这样就引出了设备驱动程序的概念:设备驱动程序提供链接到 计算机的硬件的软件接口,它是操作系统的一个信任部分。应用程序以一种规范 的方式访问硬件,而不必考虑如何控制硬件。 设备驱动程序将外部设备的不同特性和高层软件分割开,隐藏了硬件设备功 能的内部实现细节,并对操作系统透明。设备驱动程序只实现对硬件具体控制 发挥硬件的所有功能,应用程序只决定如何使用设备的各种功能。这样,具体的 应用程序崩溃与否将不会影响到整个系统的正常工作。但是,如前所述,设备驱 w m d o w s2 0 0 0 下的三种典型设备驱动程序的设计与实现 动程序是操作系统可信任的一部分,它拥有r i n g o 层的权限,所以设备驱动程序 的实现必须是安全可靠的。 1 2w i n d o w s 驱动程序技术的发展 w i n d o w s 操作系统是当今主流的桌面操作系统,它同样采用前述的屏蔽的低 层操作的策略。随着w i n d o w s 系统本身的发展,其驱动程序模型也不断的发展和 完善。 w i n d o w s3 x 和w i n d o w s 9 x 采用虚拟设备驱动程序( v x d ,v i r t u a ld e v i c e d r i v e r ) 模型,应用程序总是通过v x d 来访问硬件设备。v x d 可以虚拟化物理设 备,使得多个应用程序或者多个线程可以同时操作硬件,实现w i n d o w s 系统下多 线程多任务的工作方式。v x d 程序分为标准型和非标准型:标准v x d 由w i n d o w s 系统提供,用于支持公共设备;非标准v x d 驱动程序是为支持户设备而编写的驱 动程序。根据加载方式的不同,v x d 驱动程序又可以分为在系统启动时加载、系 统关闭时卸载的静态型和根据需要加载、卸载的动态型。动态型v x d 是从 w i n d o w s 9 5 才开始支持的特性。 w i n d o w s 9 5 及其之前的w i n d o w s 操作系统的设备驱动程序分类比较混乱:硬 件由v x d 驱动,网络和文件系统由实模式驱动程序驱动,多媒体硬件和打印机有 r i n g 3d l l 驱动,这样的分类策略显然具有天然的不合理性。 随着w i n d o w sn t 的出现,微软提出了一种新的驱动程序模型:核心模式驱动 程序( k e r n e lm o d ed r i v e r ,k m d ) 。这种模式的驱动程序运行于操作系统的核心 模式下,对硬件资源拥有类似r i n go 层的权限。k m d 对于设备的管理采取了层次 结构抽象:对于所有的设备功能进行分层,对于系统底层的功能如总线管理、中 断管理和存储器管理等由操作系统提供驱动程序进行支持;设备的硬件功能由设 备的驱动程序负责实现;设备又可以根据其逻辑功能需求可选的实现所谓过滤驱 动程序,对于某些特殊功能进行特殊处理。k m d 相对于v x d 型驱动程序最大的特 点就是引入了对多c p u 的支持;同时也改进了v x d 时代驱动程序分类的混乱局面, 统一了大多数驱动程序的开发模型。 从w i n d o w s 9 8 开始,微软又在k m d 的基础上提出了新的驱动程序模型w d m ( w i n d o w sd r i v e rm o d e l ) 。w d m 在k m d 的基础上进一步支持即插即用( p l u ga n d p l a y ,p n p ) 规范与电源管理规范,并且对与设备进行了进一步的分类:不同的设 备遵循不同的规范进行开发。w d m 驱动程序正是本文的讨论重点,在后续章节中 会详细描述。 第一章绪论 1 3 本文的选题背景和作者的主要工作 本文选题主要来源于作者参与的两个科研项目:大副面c i s 扫描输入技术研 究和网络入侵检测系统。这些项目中均涉及到多种接口的外部设备与计算机 主机的通信,驱动程序的设计是实现这些通信要求的一个重要方面,作者主要负 责w in d w o s 2 0 0 0 环境下的驱动程序设计。 本文在第一章中对驱动程序的概念及其发展现状做了概括性描述。 在第二章中,介绍了总线的基本概念和p c i 以及u s b 总线协议,并且介绍了 它们在p c 机标准下的体系结构。 在第三章中,分析了w d m 型驱动程序的工作原理和特点,介绍了w d m 型驱动 程序的开发工具以及w d m 型驱动程序设计中的常用技术。 在第四章中,基于项目采用的p c i 接口芯片的硬件特性,提出了一般用途p c i 设备驱动的设计方案,最终详细介绍了驱动程序的实现方法。 在第五章中,针对特殊的应用需求,介绍了基于一般p c i 接口芯片的、实现 网卡功能的外设卡的驱动程序的设计与实现。 在第六章中,详细分析了u s b 接口控制器的特性,提出了基于其特性的驱动 程序设计方案,介绍了两种特殊功能的驱动程序设计方法。 第二章典型设备接口总线概述 第二章典型设备接口总线概述 2 1 总线概念 在微型机应用系统中,需要利用总线在芯片与芯片、插件板与插件板、系统 与系统之间进行连接和通信。总线设计的好坏会直接影响到整个微机系统的效率 和可靠性。广义说来总线就是连接两个以上数字系统元件的信息通路,从其应用 范围的角度可以分为以下几类: 1 片内总线:连接集成电路芯片内部个功能单元的信息通路。 2 元件级总线:元件级总线也可以称为插件板内总线。该总线闲着在一块电 路板内,用以实现电路板内个元件的连接。元件级总线是由系统设计者构成系统 是规划的,多数情况下通过构成一个各个元件均支持的硬件互连规范,通过系统 设计者指定软件通信规范而构成。 3 内总线:内总线可以看作是插件板级总线,通常又称为系统总线。它用于 构成微型计算机的各插件电路板的相互连接,是微型计算机的重要组成部分。从 微型机问世以来,人们纷纷研究和设计各种系统总线。各种性能优良、用途不一 的系统总线不断出现。而c p u 运行速度的提高、多处理器结构的出现、高速缓冲 存储器的广泛应用等,都要求有更高速的总线来传输数据,从而出现了多总线结 构。多总线结构是指c p u 与存储器、i o 等设备之间有两种以上的总线,这样可 以将慢速的设备和快速的设备挂在不同的总线上,以减少总线竞争现象,提高系 统的效率。在多总线结构中,p c i 局部总线是当前最流行的高性能总线之一。在 下面的章节中,我们将对p c i 总线作进一步的介绍。 4 外总线:外总线又称为通信总线,它用于微型机系统与微型机系统、微型 机系统与其他仪器或设备的相互连接。一般来说,外部系统与设备相距微型机系 统要远一些。它们的通信联系可以用并行方式或串行方式来实现。但数据传输速 率通常都较低,不像内总线那样,都是并行的高速总线。 2 2p c i 总线概述 p c i ( p e r i p h e r a lc o m p o n e n t i n t e r c o n n e c t ) 总线是当前最流行的总线之一,是由 i n t c l 公司首先推出的一种局部总线。它定义t 3 2 位数据地址复用总线,且可扩展 为6 4 位,支持突发读写操作,可同时支持多组外围设备。 p c i 总线能够配合要求彼此间快速访问或快速访问存储器的适配器工作,也能 w i n d o w s2 0 0 0 下的三种典型设备驱动程序的设计与实现 让处理器以接近自身总线全速的速度访问适配器。通过p c i 总线的全部读写都可以 用突发传送。突发传送的长度由总线主设备决定,在交易开始时,目标得到其始 地址和交易类型,但没有传送长度。当主设备准备传送每一个数据段时,主设备 通知目标是否为最后一个数据项。当最后一个数据项传送后交易即告结束。突发 传送使p c i 总线在3 2 位数据宽度、3 3 m h z i 作频率时读写传送中支持1 3 2 m b 的峰值传 送速率。p c i 总线规范通过对地址、命令和数据进行奇偶校验对交易的完整性进行 校验,提高了传输的可靠性。p c i 总线规范中的配置寄存器的位级规范支持自动的 设备检测与配置,提高了设备的兼容性。 p c i 局部总线不能兼容在它之前出现的i s a 、e i s a 、m c a ( m i c r oc h a n n e l a r c h i t e c t u r e ) 等总线,但大多数基于上述总线的设备可以通过自行设计p c i 桥接电 路挂接在p c i 局部总线之上。实际上在当前的p c 体系结构内,几乎所有外部设备采 用的各种各样的接口总线,均是通过桥接电路挂接在p c i 系统内的。在这种p c i 系 统中,h o s t p c i 桥称为北桥,连接主处理器总线到基础p c i 局部总线;p c i i s a 桥 称为南桥,连接基础p c i 总线到i s a 总线。其中南桥通常还含有中断控制器、i d e 控 制器、u s b 控制器和d m a 控制器等设备,南桥和北桥组成所谓主板的 芯片组。通过芯片组的扩展,实现了多种总线与基础p c i 局部总线的桥接,从而实 现了多种总线对整个p c 系统的挂接。在基础p c i 局部总线或p c i 插入卡上,可以嵌 入一个或多个p c i p c i 桥,从而实现在基础p c i 局部总线上挂接多个p c i 设备。图2 i 表明了p c i 总线、扩展总线、处理器和存储器总线间的基本关系。 2 2 1p c i 总线的特点 图2 1p c i 体系结构 目前我们见到的p c 机几乎都采用p c i 总线。该总线自1 9 9 3 年推出以来 第三章w d m 驱动程序介绍 得到了广泛的应用,这归于它的许多优秀特点: 1 良好的性能:当采用3 2 位传送时,数据传送速率达到1 3 2 m b s ,而当采 用6 4 位传送时,数据传送速率达到2 6 4 m b s 。 2 独立于处理器:为p c i 总线设计的器件是面向p c i 总线的,而不是针对 处理器的,所以设备的设计独立于处理器的升级。 3 可扩展性好:一个p c i 局部总线支持约l o 个p c i 设备,每个设备可以 有8 个功能,每个功能就是一个p c i 逻辑设备,每个p c i 总线支持8 0 个p c i 逻 辑设备,系统中总共可以有2 5 6 个p c i 总线。 4 低功耗:p c i 技术规范的主要设计目标之一就是使用尽可能小电流的系 统设计,具体的实现方法包括利用波前端的反射驱动信号等。 5 并行总线操作:桥支持完全总线并行操作,处理器总线、p c i 总线和扩展 总线在北桥和南桥的支持下完全可以并行操作。 6 隐式总线仲裁:p c i 局部总线仲裁能够在另一个总线主设备正在p c i 局 部总线上执行数据传送时发生。 7 引脚数少:总线信号使用经济,一个功能的p c i 目标只有4 7 个引脚,主 设备只有4 9 个引脚。 8 即插即用:在每个p c i 接口上都包含一系列寄存器,其中存贮着包括主 板信息在内的一系列信息。利用这些信息,主机能够自动配置p c i 卡,使插到p c i 插槽上的各接口卡都会为c p u 所知且不会发生冲突。 9 软件透明:在与p c i 设备或面向扩展总线的同类设备通信时,软件驱动 程序使用相同的命令集和状态定义。 2 2 2p c i 总线操作 p c i 总线操作的类型的指定是通过在交易的地址周期内的命令字节使能 ( c b e 3 :0 ) 信号指定的。该过程中主设备负责驱动该信号线,声明命令;目标 设备负责采样信号,解码命令。其中主设备是指通过总线仲裁获得总线控制权的 设备;目标设备是指在地址周期c b e 3 :o # 上出现命令的同时,被a d 3 1 :0 线上 的地址寻址到的设备。p c i 规范详细定义了一系列p c i 总线命令的编码和命令类 型。 p c i 局部总线上所有的数据交易基本上都是由f r a m e # 、i r d y # 、t r d y # 三条信 号线控制的。f r a m e # 由当前主设备驱动,表明一个数据交易的开始和结束。i r d y # 也是由当前主设备驱动,当主设备准备完成当前数据段时,此信号有效。在写交 易中,有效的i r d y # 表明主设备已经将有效数据驱动到数据总线;而在读交易中, w i n d o w s2 0 0 0 下的二种典型设备驱动程序的设计与实现 有效的i r d y # 表明主设备正准备接收来自当前寻址的目标设备的数据。t r d y # 由当 前寻址目标驱动,当目标准备完成当前数据段时,此信号有效。在读交易中,有 效的t r d y # 表明目标正在数据总线上驱动有效数据;而在写交易中,有效的t r d y # 表明目标正准备接收来自主设备的数据。如果读者想要了解p c i 局部总线交易的 具体规则,请参见参考文献2 。 1 总线上的读交易:图2 2 表示了总线上一次读操作中有关信号的变化情况。 当f r a m e # 信号开始有效时,地址周期就开始。在地址周期内,a d 3 1 :0 上 c 瀵nnn 。n 厂、八厂、n 厂 辩矗m e # d c 憋e # 、i l l节 i lij 一蜮蝎 参队瞰1 )x 哦2 xw 舶卜掣 d e v s e l # 一二熏 :厶iili 庄 焉醑赢番百弼一番飞鞠一母飞m g o l , 憾秘 s e 弭t 船ep h 怔 r _ 翻略t r 村s c 1 1 0 件 图2 2p c i 读交易时序 包含有有效地址c b e # 3 :0 上含有一个有效的总线命令。主设备在接下来的一 个时钟周期放弃对a d 3 1 :0 的驱动,并停止驱动c b e # 3 :0 上的命令而开始驱 动字节使能表示它准备从第一个双字的哪个位置读取数据。此后主设备开始等待 d e v e l # 信号有效,表明目标设备已经被选中。而后,主设备在每个时钟上升沿采 样i r d y # 信号,若此信号有效,则表明此时数据总线上存在有效数据。主设备读 取倒数第二个数据段后,必须无效f r a m e # 信号。而当目标设备采样到无效的 f r a m e # 时,即可确认将要传输的是最后一个数据段。在最后一个数据段完成以后, 主设备和目标设备放弃对所有信号的驱动。这样,一次突发读操作即告完成。 在读操作中的地址周期和数据期之间a d 总线上要有个交换周期,这是目标 设备利用t r d y # 强制实现的。但在交换期后并且d e v s e l # 有效时,目标设备必须驱 动a d 总线。如图2 2 所示,在这种情况下,地址在时钟2 处有效,然后主设备 停止驱动a d 线,在时钟4 处目标提供有效数据。 应该注意的是无论是在读操作还是在下面要讲到的写操作中,从数据期开始 第三章w d m 驱动程序介绍 一直到传输完成,c b e # 的输出缓冲器必须始终保持有效状态而且当主设备要无效 f r a i v i e # 信号以表明是最后一个数据段时,必须确定此时i r d y # 信号有效,否则 f r a m e # 信号必须保持有效,这个时刻应理解成为主设各延迟。数据的真正传输是 发生在t r d y # 和t r d y # 信号同时有效的时钟前沿的,这两个信号任何一个无效,则 表明插入等待周期,此时并未传输数据。 据传输和若干个等待周期。在图2 2 中, 在时钟3 、5 、7 处插入了等待周期。 这说明,一个数据周期可以包含一次数 时钟4 、6 、8 处各进行了一次数据传输, 图2 2 中尽管时钟7 是最后一个数据周期,但是由于主设备因某种原因不能 马上完成最后一次传输( 表现为此时i r d y # 无效) ,故f r a m e # 此时不得撤销,只 有当主设备准备好( 即使i r d y # 有效) 后,才能撤销f r a m e # 信号。 2 总线上的写交易图2 3 表示总线上一次写交易的时序关系。 洲n 八n 八八n 八n 厂 f r a h 毫滞 矗o c 博e # i 昀y t r o y 尊 o v s e l 掌 最瓣拳气耵妒勺酊声七一d 硼广_ ;! 缝黧! :驾耕队h s 硼渊:罂 - 图2 3p c i 写交易时序 总线上的写操作与读操作类似,也是f r a m e # 有效的时钟前沿表明地址周期的 进行。 图2 3 表明,读交易不同于写交易:地址期和数据期之间没有交换周期,这 是因为在此类操作中数据和地址都是由主设备发出的。 图2 3 所示的数据期也与读交易基本相同,只是在第三个数据期中由目标设 备连续插k t _ - - 个等待周期,时钟5 处传输双方均插入了等待周期。值得注意的 是,当f p 4 蛳e g 撤消时必须要有i r d y g 有效为前提,以表明是最后一个数据期。另 外,从图2 3 中可以看出,主设备在时钟5 处因撤消了i r d y # 而插入等待周期, 表明要写的数据将延迟发送,但此时,字节使能信号不受等待周期的影响,不得 w i n d o w s2 0 0 0 下的三种典型设备驱动程序的设计与实现 延迟发送。 需要强调的是:上述的读写操作均是以多个数据期为例来说明的,单个数 据期情况与此类似。 3 交易的终止过程无论是主设备,还是目标设备,都可以提出终止一次p c i 总线交易的要求,但要求不等于具体实旌,也就是说双方均无权力单方面实施交 易停止工作,需要互相配合。不过,有一点是肯定的,那就是传输的最终停止控 制要由主设备完成,这是因为交易的结束必须满足系统的要求并且应是有次序的, 这只有主设备才能做到。同时,所有传输的结束标志是f r a m e # 信号和i r d y # 信号 均已撤消而进入总线空闲状态。 主设备提出的终止:主设备是通过无效f r a m e # 和有效i r d y # 信号来提出终止 请求的。实际上,这样做就是要告诉目标设备现在已进入了最后的数据期,此后 i r d y # 一直保持有效,直到出现t r d y # 信号,完成最后的数据传输。接着i r d y # t 便 无效,从而达到完全终止的条件,结束传输,总线回到空闲状态。 主设备提出终止的原因有二,一是它已经完成要做的操作,二是主设备的 g n t # 信号无效并且其内部的延时计数器已满,从而不得不终止传输,即所谓超时。 就其超时原因来说,不是目标设备访问的延时就是要做的操作耗时太长。 目标设备提出的终止:从设备向主设备发出s t o p # 信号以请求停止一次传输。 只要该信号有效,就必须保持到f r a m e # 信号无效为止。在此期间,i r d y # 和t r d y # 间的关系与s t o p # 与f r a m e # 间的关系是互相独立的,即在目标设备要求终止传输 的操作中,数据的传输可有可无,具体情况取决于当时i r d y # 和t r d y # 的状态。但 有一点应注意:当耳标设备发出s t o p # 信号同时又使t r d y # 信号无效时,则表明目 标设备将不在传输任何数据,这意味着主设各此时不必等待最后次的数据传输, 而是使整个操作结束。 目标设备提出终止的原因有二,一是由于死锁、某些非p c i 资源处于非空闲 状态及该设备处于互斥访问的锁定状态等原因,使得当前目标设备无法进行正常 的传输,不愿不要求终止相应的传输操作。通常这种情况称为重试。二是由于目 标设备在八个时钟周期内不能对主设备作出响应,从而只能要求停止传输,这种 情况一般不会发生在第一个数据期。通常这种情况称为断开。 除了上述终止模式外,对于在p c i 规范要求范围内不能完成初始数据期的目 标设备,可采用延迟交易终止。使用延迟交易的设备有两种:i o 控制器和桥( 特 别是p c i - - p c i 桥) 。延迟交易有两大优点,其一是:当对一个低速设备进行访 问时,不需要保持等待状态,、当发起主设备重新仲裁总线时,允许其他总线主设 备使用总线带宽:其二是:在接受请求之前,不需要刷新所有的报告( 存储器写) 数据,对报告数据的真正刷新发生在延迟交易完成于发起总线之前,这就使得在 一个非报告交易完成且仍然保持系统规则的情况下,允许报告保持使能状态。 第三章w d m 驱动程序介绍 2 2 3p c i 配置地址空间 在机器上电启动时,配置软件会扫描系统中的所有总线( 包括p c i 和其他) , 以确定总线上存在什么设备和各个设备有什么配置要求,这个过程常常指的是扫 描总线、激活总线、检查总线、发现过程、总线枚举,执行p c i 总线扫描的程序 常被称为p c i 总线枚举程序。 为了实现这种即插即用功能,所有的p c i 功能都必须实现由p c i 规范定义的 一组配置寄存器。依赖其操作特性,各设备功能还可以实现由p c i 规范定义的其 他要求的或可选的配置寄存器。另外,规范保留许多附加的配置单元,以实现功 能指定的配置寄存器。 恻2 4 目b 置首部0 结构图 每个p c i 功能都拥有6 4 个配置双字的单元,保留用于实现配置寄存器。第 一个1 6 双字的格式和用法由p c i 规范定义,这个区域称为设备的配置首部区( 或 首部空间) 。目前规范定义了三种首部格式,称为首部类型0 、l 和2 。其中首部 类型l 是为p c i p c i 桥而定义,首部类型2 是为了p c i - - c a r d b u s 桥而定义, 而首部类型0 是为了除p c i - - p c i 和p c i - - c a r d b u s 桥以外的其他p c i 设备而定 慨 呲 溉 蟋 瑚 m 燃 燃 涮 辩 蛳 | 薹 潲 溉 燃 w i n d o w s2 0 0 0 下的三种典型设备驱动程序的设计与实现 义,其格式如图2 4 所示,其中黑底色的寄存器是必须实现的。一般情况下,操 作系统使用以下配置寄存器的内容来决定为该p c i 设备加载何种驱动程序:供应 商i d ,设备i d ,版本号,类别代码,子供应商i d ,子系统i d 。 需要特别说明的是基地址寄存器:p c i 设备可以在地址空间中浮动是p c i 总 线中最重要的功能之一,它能够简化设备的配置过程。在系统上电时,与设备无 关的系统软件必须确定有哪些设备存在,同时建立一个统一的地址映射关系并确 定一个设备是否有扩展r o m 。为了使这种映射能够做到与相应的设备无关,在配 置空间的头标区中安排了一个供映射时使用的基地址寄存器。在所有的基地址寄 存器中,位0 均为只读位并且用来决定是存储器空间映射还是i o 空间映射。映 射到i o 空间的基地址寄存器宽度为3 2 位,映射到存储器空间的基地址寄存器可 以是3 2 位宽也可以是6 4 位宽。 所有寄存器实现的具体要求和具体功能均有规范,详细内容可以参阅p c i 规 范。 2 3u s b 总线概述 随着p c 应用的拓展,p c 机的外设越来越多,机箱后的插口也形形色色:并 行口,串行口,键盘口,鼠标口,游戏手柄接口,音频输入输出口,视频输出口 等。而按常规,用户为p c 增加一个新的外设却有一套复杂的操作,至少需要做以 下的工作:首先打开音箱,安装新外设的接口插卡:其次,为了避免资源占用冲 突,用户必须设置跳线为新的外设插卡选择合适的i r q ,d g a 和i o 口地址,然后 安装外设的驱动程序。 上述外设扩充方式造成的问题是:p c 有限的i o 资源无法满足日益增加的外 设需要;不具备专业知识的普通用户难于选择合适的资源和完成复杂的安装工作。 因此,为了克服当时外设扩充方式不便、硬件资源消耗过多、适当提高应用消费 类慢速外设的数据传输速率,在1 9 9 6 年召开的面向p c 机硬件技术工作者会议上, c o m p a q 、i n t e l 和m i c r o s o f t 三家厂商提出了设备插架( d e v i c eb a y ) 概念,u s b 就是设备插架的一种规范。 2 - 3 1u s b 总线的特点 u s b 是u n i v e r s a ls e r i a lb u s 的缩写,中文意思就是“通用串行总线”。由于 如前所述的产生背景,其最初制定时主要针对于对数据传输速率不敏感的消费类 电子产品,目的是要使该类产品的最终用户能够简便的安装和使用它们。所以, 第三章w d m 驱动程序介绍 在u s b 规范的支持下,即便是在w i n d o w s9 x 操作系统下,用户也只需花费很少的 时间对u s b 设备进行安装和配置,就可以使用,在w i n d o w s9 8 之后的w i n d o w s 操作系统支持下,许多标准化设备如u s b 接口鼠标、u 盘和u s b 接口的移动硬盘 都实现了无需用户干预的标准化安装、初始化过程;另外,u s b 规范规定的设备 电气特性使得u s b 设备在硬件上有条件支持即插即用功能,通过操作系统软件与 主控制器软硬件的支持,用户可以在不断电的情况下直接把设备插在u s b 插口上, 从而使连接到p c 机上的u s b 设备的连接和配置变得很容易。 与现行其它外部设备总线相比,从易用性、速度、所需硬件资源和成本等不 同角度考虑,u s b 总线在消费类电子产品中的应用具有综合优势:p c i 总线具有较 高数据传输率和即插即用功能,但是应用于消费类电子产品,它存在插拔设备麻 烦、主板扩展槽资源有限、硬件复杂度高和成本过高等缺点,并且很少有真正支 持带电热插拔的p c i 设备;i s a 总线存在类似p c i 总线并且更为突出的问题:数 据传输率更低、硬件资源要求更高和不支持即插即用;传统r s 一2 3 2 与并行口具有 成本和硬件复杂度上的优势,但是它们的数据传输率和安装使用的方便性与u s b 设备相差甚远。 综上所述,u s b 的技术优点可以概括为: 1 使用简单。所用u s b 系统的接口一致,连线简单。系统可对设备进行自动 检测和配置,支持热插拔。新添加设备系统与主机相连时,u s b 控制器可自动地 识别所有的u s b 设备,并从主机获得指挥其正常运做的智能信g ( 包括相应高层 驱动程序和配置参数) 。这意味着不需要重新启动主机,即可动态完成对外设的 配置,因此u s b 具有即插即用( p l u ga n dp l a y ) 的特性。 2 应用范围广。u s b 系统数据报文附加信息少,带宽利用率高。u s b 设备的 带宽可从几k b p s 到几m b p s ( 在u s b 2 0 版本,最高可达几百m b p s ) 。一个u s b 系 统可同时支持不同速率的设备,如低速的键盘、鼠标,全速的i s d n 、语音,高速 的磁盘、图像等( 仅u s b 2 0 版本支持高速设备) 。同时u s b 允许在同根电缆上传 输实时的非实时数据,且允许多个外设同时操作,并支持复合设备。 3 较强的纠错能力。在u s b 协议中包含了传输错误管理、错误恢复等功能, 同时根据不同的传输类型来处理传输错误。在中高速数据传输过程中,数据容易 受外界干扰而出错,u s b 协议规定在每个数据包中加入c r c 检验,通过校验算法 检测传输过程中出现的差错,并通过纠错算法尽可能地恢复出错数据。 4 总线供电。u s b 总线可为连接在其上的设备提供5 v 电压1 0 0 m a 电流的供电, 最大可提供5 0 0 m a 的电流。u s b 设备也可采用自供电方式,或者两者结合的方式。 5 低成本。u s b 接口电路简单,易于实现,特别是低速设备。u s b 系统接n 电缆也比较简单,成本比串口并口低。 6 强大的外设连接能力。一个u s b 系统能够以菊链( d a i s y c h a i n i n g ) 的形 w i n d o w s2 0 0 0 下的二种典型设备驱动程序的设计与实现 式将多个外设连接到同一系统上,最多可支持1 2 7 个物理设备,且各种外设均采 用同一的u s b 接口标准的连接器,这极大的简化了安装过程。 2 3 2u s b 2 0 规范概述 上述u s b 具有的特点之所以也成为了它的优点,是由于其遵循独特而完善的 协议和规范、对应用领域的准确定位。u s b 从产生开始,其规范的版本已经进行 了多次更新。仅u s b 2 0 就有三个版本,其中2 0 0 0 4 2 7 发布的版本是正式版, 1 9 9 9 年的两个版本只是草案。u s b 2 0 协议规范对以往的协议规范作了较大的改 动。以下仅以u s b 2 0 为例介绍一部分核心的u s b 结构、功能和实现。 1 u s b 总线体系结构。一个完整的u s b 系统可以分为三部分:u s b 总线的主机、 u s b 总线的设备以及它们之间的互联。 图2 3u s b 系统体系结构 在任何u s b 总线系统中,只能有一个主机。主机系统中提供u s b 总线接口驱 动的模块,称作u s b 总线主机控制器。主机系统中整合有u s b 总线的根( 节点) 集线器,通过次级的集线器则可以连接更多的外设。u s b 总线的设备可以分为网 络集线器和功能外设两大类。 在p c 体系下,系统外部设备总线通常基于p c i ,在这样的系统中u s b 一般是 第三章w d m 驱动程序介绍 通过将u s b 总线主机控制器挂接在系统p c i 总线上实现的。图2 3 表示了基于p c i 的u s b 系统的硬件实现。 如图2 3 所示,u s b 总线连接外设和主机时,利用菊花链的形式对端点加以 扩展,形成了类似金字塔型的外设连接形态,从而有效的避免了p c 机内插槽数对 外设扩充的限制,减少对p c 机i o 口的需求数量。 图2 4 表示了u s b 系统内主机与设备间通信的软件模型。 图2 4u s b 系统的数据交互 如图2 4 所示,主机与设备间的通信被抽象成为一种层次结构,各个层次完 成相对独立的功能。图2 4 中主机系统的客户软件层( 包括设备驱动程序) 对应 于u s b 设备的设备功能层,分别完成设备的逻辑功能的使用和实现功能。客户软 件通过i r p ( 输入输出请求包) 向u s b 系统软件层提出设备访问请求。这些抽象 的功能请求最终将转化为对u s b 设备的硬件访问,但是在发送这些i r p 时,客户 软件并不知道、不需要知道u s b 总线的传输机制和协议细节。u s b 系统软件层对 应于u s b 逻辑设备层,分别完成对各个设备的逻辑对象的管理和实现功能。相对 于它们的高层和低层对象,这两个层次更加具有抽象性,它们都是为了更清晰的 划分u s b 系统的功能层次而存在的:设备的硬件特性决定了它的功能属性,其硬 件特性被抽象成为设备描述符,由u s b 系统软件负责管理与维护这些描述符,并 且根据设备特性为客户软件建立u s 8 总线交易。在w i n d o w s9 x 以后的w i n d o w s 系统中,u s b 系统软件开始捆绑在操作系统软件内。u s b 主机控制器驱动程序负责 将u s b 系统软件请求的总线交易串行化并且将它们按照特定的规则穿插安排在 u s b 总线的数据帧之中,具体的穿插安排的规则详见u s b 规范。最后,与所有u s b w i n d o w s2 0 0 0 下的三种典型设备驱动程序的设计与实现 设备物理连接的u s b 根集线器将u s b 主机控制器组织的数据帧广播到u s b 总线上, 使得u s b 设备开始识别发送给自己的请求,进而作出正确的响应。 2 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 设备端点问的 通信抽象成为一些管道对象进行管理。管道对象的主要属性除了上述的数据传输 方式外,还包括设备地址、端点编号和数据传输方向等。需要指出的是每个设备 最少必须实现一个( 可以为多个,但一般仅实现一个即可满足应用要求) 支持控 制传输的端点,用于主机与设备间的基本控制通信。 u s b 总线属一种轮询方式的总线,主机控制器发起所有的数据传输。上述4 种数据类型的数据流,在每一次总线的具体执行动作中最多传送三个数据包。按 照u s b 总线的传输规范,在每次传送开始时,主机控制器发送一个描述传输运作 的种类、方向、u s b 设备地址和终端号的u s b 数据包,这个数据包通常称为令牌 包( t o k e np a c k e t ) 。u s b 设备从解码后的数据包的适当位置取出属于自己的数据。 在传输开始时,u s b 设备根据令牌包的信息来解析主机具体请求,然后发送端开 始发送包含特定信息的数据包或表明没有数据传送。接收端也要相应发送一个握 第三章w d m 驱动程序介绍 手的数据包表明是否传送成功。发送端和接收端之间的u s b 数据传输通过的主机 和设备的端口之间的数据通路即为前文所述的管道对象。显然,管道中传送的数 据可以分为两类:流和消息。流的数据不像消息的数据,它没有u s b 所定义的数 据结构。 3 u s b 总线规范中重要的其它特性。u s b 2 0 的规范条文十分严谨、复杂,我 们不再具体解释其细节内容,仅简要介绍u s b 系统的电气特性与系统的健壮性。 u s b 传送信号和电源是通过一根四线的电缆来实现的,其中两根绞线是用于 发送信号,另外两根提供电源。 基于u s b 2 0 规范的系统中存在三种数据传输率: u s b 的高速信号的比特率定为4 8 0 m b p s ; u s b 的全速信号的比特率定为1 2 m b p s ; u s b 的低速信号的比特率定为1 5 m b p s ; 为了提供对高数据传输率的支持,u s b 总线上的数据编码采取了差分编码方 式:时钟被调制后与差分数据一同被传送出去,时钟信号被转换成n r z z 码,并填 充了比特以保证转换的连续性,每一数据包中附有同步信号以便接收方可以还原 出时钟信号。 电缆中v b u s 、g n d 二条线,可用来向设备提供电源。v b u s 使用* 5 v 电源。 u s b 对电缆长度的要求很宽,可达几米。为了保证足够的输入电压和终端阻抗, 重要的终端设备应位于电缆的尾部。在每个端口都可检测终端是否连接或分离, 并区分出高速,全速或低速设备。 u s b 系统的健壮性体现在: 使用差分的驱动接收和防护,以保证信号完整性: 在数据和控制信息上加了循环冗余码( c r c ) : 对装卸的检测和系统级资源的设置; 对丢失或损坏的数据包暂停传输、利用协议自我恢复; 对流数据进行控制,以保证同步信号和硬件缓冲管理的安全; 数据和控制管道的建立,使功能部件的相互不利的影响独立开,消除了负 作用。 u s b 主要通过错误检测和错误处理来保证数据的正确传输。 错误检测u s b 传输介质产生的错误率是与自然界的异常现象的概率相吻 合,是瞬时一现的

温馨提示

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

评论

0/150

提交评论