USB驱动开发
第17章USB设备驱动
USB设备驱动和PCI设备驱动是PC中最主要的两种设备驱动程序。与PCI协议相比,USB协议更复杂,涉及面较多。本章将介绍USB设备驱动开发。首先介绍USB协议,使读者对USB协议有个整体认识。然后介绍USB设备在WDM中的开发框架。由于操作系统的USB总线驱动程序提供了丰富的功能调用,因此开发USB驱动开发变得相对简单,只需要调用USB总线驱动接口。
17.1  USB总线协议
USB总线协议比PCI协议复杂的多,涉及USB物理层协议,又涉及USB传输层协议等。对于USB驱动程序开发者来说,不需要对USB协议的每个细节都很清楚。本节概要地介绍USB总线协议,并对驱动开发者需要了解的地方进行详细介绍。
17.1.1 USB设备简介
USB即通用串行总线(Universal Serial Bus),是一种支持即插即用的新型串行接口。也有人称之为“菊链(daisy-chaining)”,是因为在一条“线缆”上有链接127 个设备的能力。USB要比标准串行口快得多,
其数据传输率可达每秒4Mb~12Mb(而老式的串行口最多是每秒115Kb)。除了具有较高的传输率外,它还能给外围设备提供支持。
需要注意的是,这不是一种新的总线标准,而是计算机系统连接外围设备(如键盘、鼠标、打印机等)的输入/输出接口标准。到现在为止,计算机系统连接外围设备的接口还没有统一的标准,例如,键盘的插口是圆的、连接打印机要用9针或25针的并行接口、鼠标则要用9针或25针的串行接口。USB能把这些不同的接口统一起来,仅用一个4针插头作为标准插头,如图17-1所示。通过这个标准插头,采用菊花链形式可以把所有的外设连接起来,并且不会损失带宽。USB正在取代当前PC上的串口和并口。
第17章  USB 设备驱动
4
31
图17-1  USB 的四条传输线
以USB 方式连接设备时,所有的外设都在机箱外连接,连接外设不必再打开机箱;允许外设热插拔,而不必关闭主机电源。USB 采用“级联”方式,即每个USB 设备用一个USB 插头连接到另一个外设的USB 插座上,而其本身又提供一个USB 插座供下一个USB 外设连接用。通过这种类似菊花链式的连接,一个USB 控制器可以连接多达127个外设,而每个外设间距离(线缆长度)可达5米。USB 能智能识别USB 链上外围设备的插入或拆卸。
它可使多个设备在一个端口上运行,速度也比现在的串行口或并行口快得多,而且其总的连线在理论上说可以无限延长。对PC 来说,以上这些都是一些难得的优点,因为不再需要PS/2端口、MIDI 端口等各种不同的端口了,还可以随时随地在各种设备上任意插拔。可以在一个端口上运行鼠标、控制手柄、键盘以及其他输入装置(例如数码相机),而且,也不必重新启动系统去做这些工作。现在USB 设备正在快速增多,且由于操作系统已内置支持USB 的功能,因而用户现在就可以方便地使用。显然,USB 为PC 的外设扩充提供了一个很好的解决方案。
目前USB 技术的发展,已经允许用户在不使用网卡、HUB 的情况下,直接通过USB 技术将几台计算机连接起来组成小型局域网,用户只需要给各台计算机起个名字就可以开始工作。这种网络具备Ethernet 网络的各种优点,同时少了Ethernet 网络的许多限制。假设一位用户上班时使用笔记本电脑,
回家时使用PC 机,为实现数据传输,他可以通过采用USB 技术的接口将两部电脑连接起来交换资源,其数据传输速度可达12Mbps ,这是传统串行口无法比拟的。而且用户在组网的时候根本无须考虑DIP 、IRQ 等问题。此类技术除支持兼容Ethernet 的软硬件外,也支持标准的网络通信协议,包括IPX/SPX 、NetBEUI 和TCP/IP ,这为通过USB 技术组成的小局域网连接至大型网络或Internet 提供了条件。 17.1.2  USB 连接拓扑结构
USB 设备的连接如图17-2所示,对于每个PC 来说,都有一个或者多个称为Host 控制器的设备,该Host 控制器和一个根Hub 作为一个整体。这个根Hub 下可以接多级的Hub ,每个子Hub 又可以接子Hub 。每个USB 作为一个节点接在不同级别的Hub 上。
(1)USB Host 控制器:每个PC 的主板上都会有多个Host 控制器,这个Host 控制器其实就是一个PCI 设备,挂载在PCI 总线上。Host 控制器的驱动由微软公司提供,如图17-3所示,这是笔者PC 中的Host 控制器及USB Hub 的驱动。值得注意的是,这里Host 分别有两种驱动,一种是1.0,另一种是2.0,分别对应着USB 协议1.0和USB
巴西龟
性价比最好的剃须刀
Windows 驱动开发技术详解
432 议2.0。
非主流文字第17章  USB 设备驱动
追女孩子的短信
4
33
图17-2  USB 连接拓扑结构
(2)USB Hub :每个USB Host 控制器都会自带一个USB Hub ,被称为根(Root)Hub 。这个根Hub 可以接子(Sub)Hub ,每个Hub 上挂载USB 设备。一般PC 有8个USB 口,通过外接USB Hub ,可以插更多的USB 设备。当USB 设备插入到USB Hub 或从上面拔出时,都会发出电信号通知系统。这样可以枚举USB 设备,例如当被插入的时候,系统就会创建一个USB 物理总线,并询问用户安装设备驱动。如图17-4所示为一个典型的USB Hub 的示意图。
图17-3  USB Host 和USB Hub 驱动                  图17-4  USB Hub 示意图 (3)USB 设备:USB 设备就是插在USB 总线上工作的设备,广义地讲USB Hub 也算是USB 设备。每个根USB Hub 下可以直接或间接地连接127个设备,并且彼此不会干扰。对于用户来说,可以看成是USB 设备和USB 控制器直接相连,之间通信需要满足USB 的通信协议。
有的USB 设备功能单一,直接挂载在USB Hub 上。而有的USB 设备功能复杂,
会当凌绝顶一览众山小会将
Windows 驱动开发技术详解
434 多个USB 功能连在一起,成为一个复合设备,它甚至可以自己内部带一个Hub ,这个Hub 下接多个USB 子设备,其和多个子设备作为一个整体当做一个USB 设备,如图17-5所示。
以上是USB 的物理拓扑结构,但对于用户来说,可以略去USB Hub 的概念,或者说USB Hub 的概念对于用户可以看成是透明的。用户只需要将USB 设备理解成一个USB Host 连接多个逻辑设备。可能逻辑设备1和逻辑设备2是集中在第一个物理设备里,例如有的手机连接计算机后,系统会当做多个US
B 设备加载。因此,作为用户需要用如图17-6所示的逻辑拓扑结构理解USB 拓扑结构。
图17-5  符合设备                          图17-6  USB 逻辑拓扑结构 但对于具体USB 设备来说,每个USB 设备的传输绝对不会影响其他USB 设备的传输。例如,在有USB 设备传输的时候,其他USB 设备的带宽不会被占用。对于USB 设备来说,每个USB 设备是直接连接到USB Host 控制器上的。因此,应该用如图17-7所示的视角考虑USB 设备的通信。青春随想作文
图17-7  用户对USB 设备的观察
17.1.3  USB 通信的流程
USB 的连接模式是Host 和Devcie
的连接模式,它不同于早期的串口和并口,所有的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。