首页 理论教育深入剖析Linux内核与设备驱动:USB总线驱动需求

深入剖析Linux内核与设备驱动:USB总线驱动需求

【摘要】:USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。USB总线已经成为使用最广泛的设备连接标准。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。

USB(Universal Serial Bus)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等通信产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其他相关领域。

USB最初是由英特尔公司与微软公司倡导发起的,其最大的特点是支持热插拔和即插即用。当设备插入时,主机枚举到此设备并加载所需的驱动程序,使用比其他总线方便。在速度方面,USB 1.1的最大传输带宽为12Mbit/s,USB 2.0的最大传输带宽为480Mbit/s,USB 3.0的最大传输带宽为5Gbit/s。

USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB主机处于主模式,设备处于从模式。USB总线是由主机控制器和若干hub设备以及与hub连接的从设备组成的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。

978-7-111-49426-3-Chapter07-164.jpg

图7-12 USB总线拓扑

从图7-12可见,一个Host控制器会和root hub绑定,并可以通过Hub连接多个设备。

USB可以连接的外设有鼠标、键盘、游戏手柄、游戏杆、扫描仪数码相机、打印机、硬盘和网络部件等各种设备。USB总线已经成为使用最广泛的设备连接标准。

规范中为了实现以上的功能对总线中的很多环节都进行了定义。一个USB物理设备可以承担多种功能,USB的术语中设备(device)指的是功能(functions),更注重逻辑性。规范中关于主从设备的交互如图7-13所示。

978-7-111-49426-3-Chapter07-165.jpg(www.chuimin.cn)

图7-13 USB主从设备交互框图

从图7-13可见,管道(pipe)把主机控制器和端点(endpoint)连接起来形成一个交互通道进行主从设备的交互。端点只能单向(进/出)传输数据,管道也是单向的。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。按照各自的传输类型,管道被分为4类:

●控制传输(Control)。一般用于短的、简单的设备命令和状态反馈,例如用于总线控制的0号管道。

●同步传输(Isochronous)。按照有保障的速度传输,可能有数据丢失,例如实时的音频和视频。

●中断传输(Interrupt)。用于必须保证尽快反应的设备(有限延迟),例如鼠标和键盘。

●批量传输(Bulk)。使用余下的带宽大量地(但是没有对于延迟、连续性、带宽和速度的保证)传输数据,例如普通的文件传输。

为了访问端点,必须获得设备一个分层的配置。连接到主机的设备只有一个设备描述符(device descriptors),而设备描述符有若干配置描述符(configuration descriptors)。这些配置一般与状态相对应,例如活跃和节能模式。每个配置描述符有若干接口描述符(interface setting),用于描述设备的一个功能方面,所以可以用于描述从设备不同的功能,如一个相机可能拥有视频和音频两个接口。接口描述符有一个默认接口设置(default interface set-tings)和可能多个替代接口设置(alternate interface settings),接口设置中包含端点描述符。一个端点能够在多个接口和替代接口设置之间复用。

总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。