USB2.0技术规范(中文)

更新时间:2023-07-22 04:19:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章

绪论

1.1 起因

Intel公司开发的通用串行总线架构(USB)

的目的主要基于以下三方面考虑

(一)

计算机与电话之间的连接显然用计算机来进行计算机通信将是下一代计算机基本的应用机器和人们的数据交互流动需要一个广泛而又便宜的连通网络

然而由于目前产业间的相互独立发展,尚未建立统一标准,而USB则可以广泛的连接计算机和电话

(二)

易用性众所周知,PC机的改装是极不灵活的对用户友好的图形化接口和一些

软硬件机制的结合

加上新一代总线结构使得计算机的冲突大量减少且易于改装但以

终端用户的眼光来看PC机的输入/

输出如串行/并行端口键盘鼠标操纵杆接口等均还没有达到即插即用的特性USB正是在这种情况下问世的

(三)

端口扩充外围设备的添加总是被相当有限的端口数目限制着缺少一个双向价廉

与外设连接的中低速的总线限制了外围设备(诸如电话/电传/调制解调器的适配器扫描仪键盘PDA)的开发

现有的连接只可对极少设备进行优化对于PC机的新

的功能部件的添加需定义一个新的接口来满足上述需要USB就应运而生它是快速双向同步动态连接且价格低廉的串行接口可以满足PC机发展的现在和未来的需要

1.2 USB规范的目标

本书规范了USB的工业标准该规范介绍了USB的总线特点协议内容事务种类总线管理

接口编程的设计以及建立系统制造外围设备所需的标准

设计USB的目标就是使不同厂家所生产的设备可以在一个开放的体系下广泛的使用

该规范改进了便携商务或家用电脑的现有体系结构进而为系统生产商和外设开发商提供

了足够的空间来创造多功能的产品和开发广阔的市场

并不必使用陈旧的接口害怕失去兼容性

1.3 适用对象

该规范主要面向外设开发商和系统生产商并且提供了许多有价值的信息给操作系统/BIOS/设备驱动平台IHVS/ISVS适配器以及各种计算机生产厂家使用 该USB版本的规范可以用来设计开发新产品

改进一些经典的模型并开发相应的软件所有的产品都应遵循这个规范——USB 1.1

1.4 本书结构

第一章至第四章为读者提供了一个纲要第五章至第十章则提供了USB的所有的具体技术细节 外设厂家应着眼于第四章至第十章 USB的主机控制器应用主要参考第四章至第七章和第九十章 USB 设备驱动厂家主要参考第四七九章

Universal Serial Bus Device Class Specification一书可以作为本书的补充和参考

各种设备的规范是形形色色的

如有疑问请与USB Implements Forum索要更多细节

读者也可以为向操作系统厂商索取关于USB的一些具体特性

第2章

背景知识

本章将对USB

背景知识作简单描述其中主要包括设计目标

总线特性以及现行技术特点

2.1 USB的设计目标

USB的工业标准是对PC机现有的体系结构的扩充USB的设计主要遵循以下几个准

易于扩充多个外围设备 价格低廉且支持12M

比特率的数据传输

对声音音频和压缩视频等实时数据的充分支持 协议灵活

综合了同步和异步数据传输

兼容了不同设备的技术 综合了不同PC

机的结构和体系特点

提供一个标准接口

广泛接纳各种设备 赋予PC

机新的功能使之可以接纳许多新设备

2.2 使用的分类

表2-1按照数据传输率(USB可以达到)进行了分类可以看到12M比特率可以包括中速和低速的情况

总的来说

中速的传输是同步的

低速的数据来自交互的设备USB设计的初衷是针对桌面电脑而不是应用于可移动的环境下的软件体系通过对各种主机控制器提供支持以保证将来对USB的扩充

性能 应用 特性

低速

交互设备

10-20kb/s

中速

电话

音频压缩视频 500kb/s-10Mb/s 键盘鼠标游戏棒

低价格热插拔易用性

ISBN

PBXPOTS 低价

格易用性动态插拔限定带宽和延迟

音频磁盘 高速 高带宽限定延迟易用性

音频磁盘

25-500Mb/s

表2-1

2.3 特色

USB的规范能针对不同的性能价格比要求提供不同的选择以满足不同的系统和部件及相应不同的功能其主要特色可归结为以下几点

终端用户的易用性

为接缆和连接头提供了单一模型

电气特性与用户无关

自我检测外设自动地进行设备驱动设置

动态连接动态重置的外设

广泛的应用性

适应不同设备传输速率从几千比特率到几十兆比特率

在同一线上支持同步异步两种传输模式

支持对多个设备的同时操作

可同时操作127个物理设备

在主机和设备之间可以传输多个数据和信息流

支持多功能的设备

利用低层协议提高了总线利用率

同步传输带宽

确定的带宽和低延迟适合电话系统和音频的应用

同步工作可以利用整个总线带宽

灵活性 直接一系列大小的数据包

允许对设备缓冲器大小的选择 通过指定数据缓冲区大小和执行时间

支持各种数据传输率 通过协议对数据流进行缓冲处理

健壮性 出错处理/

差错恢复机制在协议中使用

对用户感觉而言

热插拔是完全实时的 可以对有缺陷设备进行认定

与PC

产业的一致性

协议的易实现性和完整性 与PC

机的即插即用的体系结构的一致 对现存操作系统接口的良好衔接

价廉物美 以低廉的价格提供1.5

兆比特率的子通道设施

将外设和主机硬件进行了最优化的集成

促进了低价格的外设的发展

廉价的电缆和连接头 运用了商业技术

升级路径

体系结构的可升级性支持了在一个系统中可以有多个USB主机控制器

第3章 体系结构概述

本章主要内容是关于USB的概述和一些关键的概念USB是一种电缆总线支持在主机和各式各样的即插即用的外设之间进行数据传输由主机预定的标准的协议使各种设备分享USB带宽

当其它设备和主机在运行时总线允许添加设置使用以及拆除外设 后续章节将着重描述USB的细节

3.1 USB系统的描述

一个USB

系统主要被定义为三个部分 USB

的互连 USB

的设备 USB的主机

USB的互连是指USB

设备与主机之间进行连接和通信的操作

主要包括以下几方面

总线的拓扑结构USB

设备与主机之间的各种连接方式 内部层次关系

根据性能叠置USB

的任务被分配到系统的每一个层次

数据流模式描述了数据在系统中通过USB

从产生方到使用方的流动方式

USB

的调度USB提供了一个共享的连接对可以使用的连接进行了调度以支持同步数据传输并且避免的优先级判别的开销

USB的设备及主机的细节将讲述于后

3.1.1 总线布局技术

USB连接了USB设备和USB主机USB的物理连接是有层次性的星型结构每个网络

集线器是在星型的中心每条线段是点点连接

从主机到集线器或其功能部件或从集线

器到集线器或其功能部件从图3-1中可看出USB的拓扑结构

3.1.1.1 USB的主机

在任何USB

系统中只有一个主机USB

和主机系统的接口称作主机控制器主机控图

31 总线的拓扑结构

制器可由硬件

固件和软件综合实现根集线器是由主机系统整合的用以提供更多的连接点关于主机更多的内容可参见4.9节和第9章

4.1.1.2 USB的设备 USB的设备如下所示

:

网络集线器向USB提供了更多的连接点;

功能器件为系统提供具体功能如ISDN的连接

数字的游戏杆或扬声器 USB设备提供的USB标准接口的主要依据

对USB

协议的运用

对标准USB操作的反馈如设置和复位

标准性能的描述性信息

关于USB设备的更多信息请参见3.8节和第8章

3.2 物理接口

USB 的物理接口的电气特性在第六章,机械特性在第五章详细介绍

3

21电气特性

USB传送信号和电源是通过一种四线的电缆图3-2中的两根线是用于发送信号 存在两种数据传输率

图3-2 USB 的电缆

USB的高速信号的比特率定为12Mbps 低速信号传送的模式定为1.5Mbps

低速模式需要更少的EMI保护两种模式可在用同一USB总线传输的情况下自动地动态切换

因为过多的低速模式的使用将降低总线的利用率所以该模式只支持有限个低带宽的设备(如鼠标)

时钟被调制后与差分数据一同被传送出去时钟信号被转换成NRZI

并填充了比特以保证转换的连续性每一数据包中附有同步信号以使得收方可还原出原时钟信号

电缆中包括VBUSGND

二条线向设备提供电源 VBUS使用+5V电源USB对电缆长度的要求很宽最长可为几米通过选择合适的导线长度以匹配指定的IR drop和

其它一些特性如设备能源预算和电缆适应度为了保证足够的输入电压和终端阻抗重要的终端设备应位于电缆的尾部

在每个端口都可检测终端是否连接或分离并区分出高速或低速设备

3.2.2 机械特性

电缆和连接器的机械特性将在第5章详述所有设备都有一个上行的连接上行连接

器和下行连接器是不可简单的互换

这样就避免了集线器间的非法的循环往复的连接电

缆中有四根导线

一对互相缠绕的标准规格线

一对符合标准的电源线连接器有四个方向

具有屏蔽层以避免外界干扰并有易拆装的特性

3.3 电源

主要包括两方面

电源分配即USB的设备如何通过USB

分配得到由主计算机提供的能源 电源管理

即通过电源管理系统USB的系统软件和设备如何与主机协调工作

3.3.1 电源分配

每个USB单元通过电缆只能提供有限的能源主机对那种直接相连的USB设备提供电源供其使用并且每个USB设备都可能有自己的电源那些完全依靠电缆提供能源的设备

称作

总线供能设备

相反

那些可选择能源来源的设备称作

自供电设备

而且集线器也可由与之相连的USB设备提供电源受一定布局限制的带有

总线供能集线器的体系结构将在第十章讨论在图4-4(位于3.8)

键盘

输入笔和鼠标均为总线供能设备

3.3.2 电源管理

USB主机与USB系统有相互独立的电源管理系统USB的系统软件可以与主机的能源管理系统结合共同处理各种电源子件如挂起

唤醒

并且有特色的是USB设备应用特有

的电源管理特性可让系统软件和控制其电源管理

USB

的电源分配和电源管理特性使之可以被设计在电源传感系统中如采用电池的笔记本电脑

3.4 总线协议

USB总线属一种轮讯方式的总线主机控制端口初始化所有的数据传输

每一总线执行动作最多传送三个数据包

按照传输前制定好的原则在每次传送开始时主机控制器发送一个描述传输运作的种类

方向USB设备地址和终端号的USB数据

包这个数据包通常称为标志包(token packet)USB设备从解码后的数据包的适当位置取出属于自己的数据数据传输方向不是从主机到设备就是从设备到主机在传输开始

由标志包来标志数据的传输方向然后发送端开始发送包含信息的数据包或表明没有数据传送接收端也要相应发送一个握手的数据包表明是否传送成功发送端和接收端之间的USB数据传输

在主机和设备的端口之间可视为一个通道

存在两种类型的通道流和消息

流的数据不像消息的数据它没有USB所定义的结构而且通道与数据带宽

传送服务类型端口特性

如方向和缓冲区大小有关多数通道在USB设备设置完成后即存在USB中有一个特殊的通道——

缺省控制通道

它属于消息通道当设备一启动即存在从而为设备的设置查询状况和输入控制信息提供一个入口

事务预处理允许对一些数据流的通道进行控制从而在硬件级上防止了对缓冲区的高

估或低估通过发送不确认握手信号从而阻塞了数据的传输速度

当不确认信号发过后

若总线有空闲数据传输将再做一次

这种流控制机制允许灵活的任务安排可使不同性

质的流通道同时正常工作

这样多种流通常可在不同间隔进行工作传送不同大小的数据包

3.5 健壮性

USB

健壮性的特征在于

使用差分的驱动接收和防护

以保证信号完整性 在数据和控制信息上加了循环冗余码(CRC)

对装卸的检测和系统级资源的设置 对丢失或损坏的数据包暂停传输

利用协议自我恢复

对流数据进行控制

以保证同步信号和硬件缓冲管理的安全

数据和控制通道的建立使功能部件的相互不利的影响独立开消除了负作用

3.5.1 错误检测

USB

传输介质产生的错误率是与自然界的异常现象的概率相吻合

是瞬时一现的因

此就要在每个数据包中加入检测位来发现这些瞬时的错误并且提供了一系列硬件和软件设施来保证数据的正确性

协议中对每个包中的控制和数据位都提供了循环冗余码校验若出现了循环冗余码的错误则被认为是该数据包已被损坏循环冗余码可对一位或两位的错误进行100%的修复

3.5.2 错误处理

协议在硬件或软件级上提供对错误的处理硬件的错误处理包括汇报并重新进行上一次失败的传输

传输中若遇到错误USB

主机控制器将重新进行传输最多可再进行三次

若错误依然存在

则对客户端软件报告错误客户端软件可用一种特定的方法进行处理

3.6 系统设置

USB

设备可以随时的安装和折卸

因此系统软件在物理的总线布局上必须支持这种动态变化

3.6.1 USB设备的安装

所有的USB设备都是通过端口接在USB

上网络集线器知道这些指定的USB设备集

线器有一个状态指示器指明在其某个端口上USB

设备是否被安装或拆除了主机将所有的集线器排成队列以取回其状态指示在USB设备安装后主机通过设备控制通道激活该端口并以预设的地址值给USB设备

主机对每个设备指定唯一的USB地址并检测这种新装的USB设备是集线器还是功能部件主机为USB设备建立了控制通道使用指定的USB的地址和零号端口

如果安装的USB设备是集线器并且USB

设备连在其端口上那上述过程对每个USB设备的安装都要做一遍

如果安装的设备是功能部件那么主机中关于该设备的软件将因设备的连接而被引发

3.6.2 USB设备的拆卸

当USB

设备从集线器的端口拆除后集线器关闭该端口并且向主机报告该设备已不存在USB

的系统软件将准确进行处理如果去除的USB设备上集线器USB的系统软件将对集线器反连在其上的所有设备进行处理

3.6.3 总线标号

总线标号就是对连接在总线上的设备指定唯一的地址的一种动作因为USB允许USB设备在任何时刻从USB

上安装或拆卸所以总线标号是USB

的系统软件始终要作的动作而且总线标号还包括对拆除设备的检测和处理

3.7 数据流种类

数据和控制信号在主机和USB设备间的交换存在两种通道单向和双向USB的数据传送是在主机软件和一个USB设备的指定端口之间这种主机软件和USB设备的端口间的联系称作通道总的来说各通道之间的数据流动是相互独立的一个指定的USB设备可

有许多通道

例如一个USB

设备存在一个端口可建立一个向其它USB设备的端口发送数据的通道它可建立一个从其它USB设备的端口接收数据的通道

USB

的结构包含四种基本的数据传输类型

控制数据传送在设备连接时用来对设备进行设置还可对指定设备进行控制如

通道控制

批量数据传送

大批量产生并使用的数据在传输约束下

具有很广的动态范围 中断数据的传送用来描述或匹配人的感觉或对特征反应的回馈

同步数据的传送由预先确定的传送延迟来填满预定的USB带宽

对于任何对定的设备进行设置时一种通道只能支持上述一种方式的数据传输数据流模式的更多细节在第四章中详述

3.7.1 控制数据传送

当USB

设备初次安装时USB

系统软件使用控制数据对设备进行设置设备驱动程序

通过特定的方式使用控制数据来传送数据传送是无损性的

3.7.2 批量数据传送

批量数据是由大量的数据组成

如使用打印机和扫描仪时批量数据是连续的在硬

件级上可使用错误检测可以保证可靠的数据传输并在硬件级上引入了数据的多次传送

此外根据其它一些总线动作被大量数据占用的带宽可以相应的进行改变

3.7.3 中断数据传输

中断数据是少量的且其数据延迟时间也是有限范围的这种数据可由设备在任何时刻发送并且以不慢于设备指定的速度在USB上传送

中断数据一般由事件通告

特征及座标号组成只有一个或几个字节匹配定点设备的座标即为一例

虽然精确指定的传输率不必要但USB必须对交互数据提供一个反应时间的最低界限

3.7.4 同步传输

同步数据的建立

传送和使用时是连续且实时的同步数据是以稳定的速率发送和接

收实时的信息

同步数据要使接收者与发送者保持相同的时间安排

除了传输速率同步数据对传送延迟非常敏感

所以同步通道的带宽的确定必须满足对相关功能部件的取样特性不可避免的信号延迟与每个端口的可用缓冲区数有关

一个典型的同步数据的例子是语音

如果数据流的传送率不能保持数据流是否丢失将取决于缓冲区的大小和损坏的程度即使数据在USB

硬件上以合适的速率传送软件造成的传送延迟将对那些如电话会议等实时系统的应用造成损害

实时的传送同步数据肯定会发生潜在瞬时的数据流丢失现象

换句话说即使许多硬

件机制如重传的引入也不能避免错误的产生

实际应用中USB的数据出错率小到几乎可以忽略不计从USB的带宽中给USB同步数据流分配了专有的一部分以满足所想得到

的传速率USB还为同步数据的传送设计了最少延迟时间

3.7.5 指定USB带宽

USB

的带宽分配给各个通道

当一个通道建立后USB就分配给它一定的带宽USB设备需要提供一些数据缓冲区若USB提供了更多带宽则需更多的缓冲区USB的体系要保证缓冲引导的硬件的延迟限定在几毫秒内

USB

的带宽容量可以容纳多种不同的数据流因此保证USB上可以连接大量设备如可以容纳从1B+D直到T1速率范围的电信设备同时USB支持在同一时刻不同设备具有不

同比特率并具有一个动态变动的范围

USB规范对总线的每类转输规定的具体的原则

3.8 USB设备

USB设备分为诸如集线器分配器或文本设备等种类集线器类指的是一种提供USB连接点的设备(详见第十章

)USB

设备需要提供自检和属性设置的信息USB设备必须在任何时刻执行与所定义的USB设备的状态相一致的动态

3.8.1 设备特性

当设备被连接

编号后该设备就拥有一个唯一的USB地址设备就是通过该USB地

址被操作的每一个USB设备通过一个或多个通道与主机通讯所有USB设备必须在零号

端口上有一指定的通道每个USB设备的USB控制通道将与之相连通过此控制通道所有的USB设备都列入一个共同的准入机制以获得控制操作的信息

在零号端口上控制通道中的信息应完整的描述USB设备此类信息主要有以下几

类 标准信息这类信息是对所有USB设备的共同性的定义包括一些如厂商识别设备种类电源管理等的项目设备设置接口及终端的描述在此给出关于这些具体的描

述信息在第九章给出 类别信息此类信息给出了不同USB的设备类的定义主要反映其不同点

USB

厂商信息USB

设备的厂商可自由的提供各种有关信息其格式不受该规范制约

此外每个USB设备均提供USB的控制和状态信息

3.8.2 设备描述

主要分为两种设备类集线器和功能部件只有集线器可以提供更多的USB的连接点功能部件为主机提供了具体的功能

3.8.2.1 集线器

在即插即用的USB的结构体系中集线器是一种重要设备图3-3所示是

图 –3 典型集线器 一种典型的集线器

从用户的观点出发集线器极大简化了USB的互连复杂性而且以很低的价格和高易用性提供了设备的健壮性

集线器串接在集中器上可让不同性质的设备连接在USB

上连接点称作端口每个集线器将一个连接点转化成许多的连接点并且该体系结构支持多个集线器的连接 每个集线器的上游端口向主机方向进行连接每个集线器的下游端口允许连接另外的

集线器或功能部件

集线器可检测每个下游端口的设备的安装或拆卸并可对下游端口的

设备分配能源

每个下游端口都具有独立的能力不论高速或低速设备均可连接集线器可将低速和高速端口的信号分开

一个集线器包括两部分

集线控制器

Controller和集线放大器(Repeater)集线放大器是一种在上游端口和下游端口之间的协议控制开关而且硬件上支持复位挂起唤醒的信号集线控制器提供了接口寄存器用于与主机之间的通信集线器允许主机对其

特定状态和控制命令进行设置并监视和控制其端口

3.8.2.2 功能部件

功能部件是一种通过总线进行发送接收数据和控制信息的USB设备通过一根电缆连

接在集线器的某个端口上功能设备一般是一种相互无关的外设然而一个物理单元中可

以有多个功能部件和一个内置集线器并利用一根USB

电缆这通常被称为复合设备即一个集线器连向主机并有一个或多个不可拆卸的USB设备连在其上

每个功能设备都包含设置信息来描述该设备的性能和所需资源主机要在功能部件典型的USB体系结构

图4

–4 台式机环境下的 集线器

使用前对其进行设置设置信息包括USB带宽分配选择设备的设置信息等

下机列举了一些功能部件 定位设备

如鼠标或光笔

输入设备如键盘

电信适配器如ISDN

3.9 USB主机

硬件和软件

USB的主机通过主机控制器与USB设备进行交互主机功能如下

检测

USB设备的安装和拆卸 管理在主机和USB

设备之间的控制流

管理在主机和USB设备之间的数据流

收集状态和动作信息

提供能量给连接的USB设备

主机上

USB的系统软件管理USB设备和主机上该设备软件之间的相互交互

USB系统软件与设备软件间有三种相互作用方式

设备编号和设置

同步数据传输

异步数据传输

电源管理

设备和总线管理信息

只要可能USB系统软件就会使用目前的主机软件接口来管理上述几种方式

3.10 体系结构的扩充

USB的体系结构包含主机控制驱动器和USB

驱动器之间的接口的扩展使多个主机控制器和主机控制驱动器的使用成为可能

02 术语和缩略词

ACK:确认信号

Active Device:正在使用的设备

Asynchronous Data:异步数据

Asynchronous RA:异步自适应速率

Asynchronous SRC: 异步抽样转换率

Audio Device:音频设备

AWG#(American Wire Gauge):美国电线标准

Babble:帧传输中的总线动作

Bandwidth:带宽

Big Endian:

Bit:比特

Bit Stuffing:数据填充,以使PLL可以提取时钟信号

b/s:每秒多少比特

B/s:每秒多少字节

Buffer:缓冲区

Bulk Transfer:批量传送

Bus Enumeration:总线标号

Byte: 字节

Capabilities:能力

Characteristics:特征

Client:客户

Configuring Software:配置软件

Control Endpoint:控制端口

Control Pipe:控制通道

Control Transfer:控制传送

CTI:计算机电信组织

Cyclic Redundancy Check(CRC):循环冗余校验

Default Address:缺省地址

Default Pipe:缺省通道

Device:设备器件 Device Address设备地址 Device Endpoint设备端口 Device Resource设备资源 Device Software设备软件 Downstream下行 Driver驱动 DWORD双字 Dynamic Insertion and Removal动态插入与拆除 Electrically Erasable Programmable Read Only Memory EEPROM电擦写可 编程只读存储器 End User终端用户 Endpoint端口

Endpoint Address端口地址 Endpoint Direction端口指向 Endpoint Number端口号 EOF帧结束 EOP包结束 External Port外设端口 False EOP错误的包结束标志 Frame帧 Frame Pattern帧结构 Full-duplex全双工 Function功能功能部件 Handshake Packet握手包 Host主机 Host Controller主机控制器 Host Controller Driver(HCD)主机控制驱动 Host Resourses主机资源 Hub集线器 Hub TierHub层 Interrupt Request(IRQ)中断请求 Interrupt Transfer中断传送 I/O Request Packet

IRP 输出/输入请求包 Isochronous Data同步数据 Isochronous Device同步设备 Isochronous Sink Endpoint同步接收端 Isochronous Sourse Endpoint同步源端 Isochronous Transfer同步传送 Jiffer抖动 kb/s传送速率每秒几千比特 kB/s传送速率每秒几千字节 Little Endian LOA有始无终的总线传输 LSb最低比特 LSB最低字节 Mb/s传送速率每秒几兆比特 MB/s传送速率每秒几兆比特 Message Pipe消息通道 MSb最高比特 MSB最高字节 NAK不确认 Non Return to Zero Invert(NRZI)非归零翻转码 Object对象 Packet数据包 Packet Buffer数据包缓冲区 Packet ID(PID)数据包标示位

Phase时项相位 Phase Locked Loop(PLL)锁相环 Physical Device物理部件 Pipe通道 Polling查询 Port口端口 Power On Reset(POR)电源复位 Programmable Data Rate可编程数据速率 Protocol协议 Rate AdaptionRA自适应速率 Request请求申请 Retire取消终止 Root Hub根集线器主机Hub Root Port根集线器的下游端口 Sample取样抽样 Sample Rate(Fs)抽样速率 Sample Rate Conversion(SRC)抽样转换率 Service服务 Sevice Interval服务间隙 Service Jitter服务质量的抖动参数 Sevice Rate指定端口每单位时间的服务数目 SOP包开始 Stage控制传输的某个阶段 Start-of-Frame(SOF)帧开始 Stream Pipe流通道 Synchronization Type同步类型 Synchronous RA同步的RA Synchronous SRC同步的SRC Sysem Programming Interface(SPI)系统可编程接口 Terminaton Time Division Multiplexing(TDM)时分复用 Timeout超时 Token Packet标志包 Transaction处理事务 Transfer传送 Transfer Type传送类型 Turn-around TimeUSB传输中包与包之间的间隔时间以防止传输冲突 Universal Serial Bus Driver(USBD)USB驱动器 Univeral Serial Bus ResourcesUSB提供的资源 Upstream上行 Virtual Device虚拟设备 Word字16位

第四章USB数据流模型

本章介绍了数据如何在USB中传送将涉及到系统中关于信号的发送和协议定义的一层 对于USB系统中这一层中各个定义的详细情况可参见第六章和第七章本章中介绍的数据传送格式将在第八章到第十一章中逐步扩充所有的实现者必须阅读此章以便了解USB中一些非常核心的概念

4.1 实现者的视图

USB提供了在一台主机和若干台附属的USB设备之间的通信功能从终端用户的角度看到的USB

系统可简单地用图4.1

表示

USB的有不同要求这它能使不同层次的实USB

实际通信流

逻辑通信流

需实现的区域

图42 USB需实现的区域

各层次的具体细节将在以后逐步介绍

特别地有四个层次的实现是较为集中的 USB物理设备(USB Physical Device)USB

上的一种硬件可运行一些用户程序 客户软件(client software)为一个特定的USB设备而在主机上运行的软件这种软件由USB

设备的提供者提供或由操作系统提供 USB系统软件(USB system software)此软件用于在特定的操作系统中支持USB它由 操作系统提供与具体的USB设备无关也独立于客户软件 USB主机控制器(USB Host Controller):总线在主机方面的接口是软件和硬件的总和用于支持USB设备通过USB连到主机上

这四个USB系统的组成部分在功能上存在相互重叠的部分为了支持主机与客户之间的坚

固可靠的通信还需要在后面对这些部分进行细节性描述

如图4-2所示一台主机与一个USB设备间的连接是由许多层上的连接组成USB总线接口层提供了在主机和设备之间的物理连接发送连接数据包连接USB设备层对USB系统软件是可见的系统软件基于它所见的设备层来完成对设备的一般的USB操作应用层可以通过与之相配合的客户软件向主机提供一些额外的功能USB设备层和应用层的通信是逻

辑上的对应于这些逻辑通信的实际物理通信由USB总线接口层来完成

关于USB的物理通信在第56章中描述而相关的逻辑通信在第89章中介绍本章描述一些核心概念USB系统的实现者必须先掌握它们然后在往后几章中阅读更加详细的部分

为了描述和管理USB通信

以下概念是很重要的 总线拓朴(Bus Topology)USB的基本物理组成基本逻辑组成以及各组成部分之间 的相互关系这将在4.2节中描述 通信流模型(communication Flow Models):描述主机与设备如何通过USB通信以及通信所用的四种通信类型这将在4.3到4.8的各节中介绍 总线访问管理(BUS Access)主机面对大量的USB设备的各种通信要求如何控制协 调总线的访问 关于同步传送的考虑4.10节中将介绍对要求同步传送的设备提供一些特性非同步传送设备的实现者不必阅读此节

4.2 总线拓朴

总线拓朴结构包括四个重要的组成部分

主机和设备USB系统的基础组成部分

物理拓朴结构描述USB系统中的各组成部分是如何连接起来的 逻辑拓朴结构描述USB系统中各种组成部分的地位和作用以及描述从主机和设备的角度观察到的USB系统 客户软件层与应用层的关系描述从客户软件层看到的应用层的情况以及从应用层看到的客户软件层的情况

4.2.1 USB主机

主机的逻辑结构如图4-3包括 USB

主机控制器USB Host Controller USB

系统软件集合USB驱动程序主机控制器的驱动程序主机软件 客户软件

实际通信流

逻辑通信流

USB主机在USB系统中是一个起协调作用的实体它不仅占有特殊的物理位置而且对于USB以及连到USB上的设备来说还负有特殊责任主机控制所有的对USB的访问一个USB设备想要访问总线必须由主机给予它使用权主机还负责监督USB的拓朴结构 关于主机和它的任务的更详细更彻底的描述请见第9章

4.2.2 USB设备

一个USB设备的逻辑结构如图4.4所示包括

USB总线接口

USB逻辑设备

应用层

逻辑通信流

图4-4 物理设备组成

USB设备用于向主机提供一些额外的功能USB设备提供的功能是多种多样的

但面向主机的接口却是一致的所以对于所有这些设备主机可以用同样的方式来管理它们与USB有关的部分

为了帮助主机辨认及确定USB

设备

这些设备本身需要提供用于确认的信息在某一些方面的信息所有设备都是一样的而另一些方面的信息由这些设备具体的功能决定信息的具体格式是不定的由设备所处的设备级决定

对USB

设备更完备的描述见第8章 423 总线的物理拓朴结构 USB系统中的设备与主机的连接方式采用的是星形连接如图4-5

图4—5 USB物理总线的拓扑

图中的Hub是一类特殊的USB设备它是一组USB的连接点主机中有一个被嵌入的Hub叫根Hub(root Hub)主机通过根Hub提供若干个连接点为了防止环状连接采用星形连接来体现层次性如图4-5这种连接的形状很像一棵树

用于提供具体功能的设备叫应用设备许多不同功能的设备放在一起被看作一个整体叫包例如键盘和轨迹球可以被视作一个整体在它的内部提供具体功能的设备被永久地

接到Hub上而这个Hub被接到USB上所有这些设备及这个Hub被看作一个复合设备而这个Hub又被看作这个复合设备的内部Hub在主机看来这个复合设备和一个带着若干设备的单独Hub是一样的图中也标出了一个复合设备

4.2.4 总线逻辑拓朴结构

在物理结构上设备通过Hub连到主机上但在逻辑上主机是直接与各个逻辑设备通信的就好像它们是直接被连到主机上一样这个逻辑关系如图4-6所示与之对应的物

理结构就是图4-5中的结构Hub也是逻辑设备但在图4-6中为了简化起见未被画出虽然USB系统中的工作都是从逻辑角度来看待的但主机必须对物理结构有个了解例如在处理Hub被移去的情况时当一个Hub被移出通过它与主机相连的设备也应一起被移去这是由其物理结构决定的关于Hub的更详细的讨论在第10章

操纵USB应用设备的客户软USB软件编程接口来操纵应用设备I/O的在运行

设备和客户软件的设计者就可以只关图4-7说明了在图4-6

图4-7 客户软件和应用间的关系

4.3 USB通信流

USB是为主机软件和它的USB应用设备间的通信服务的对客户与应用间不同的交互USB设备对数据流有不同的要求USB为此提供了更好的overall总线使用它允许各种不同的数据流相互独立地进入一个USB设备每种通信流都采取了某种总线访问方法来完成主机上的软件与设备之间的通信每个通信都在设备上的某个端点结束不同设备的不同端点用于区分不同的通信流

图4-8是图4-2的扩充它更详尽地描述了USB系统支持了逻辑设备层和应用层间的通信实际的通信流要经过好几个接口边界从第5章到第7章刻画了机械上电气上以及协议上的USB接口的定义第8章刻划了USB设备的编程接口通过此接口可从主机侧对USB设备进行控制第9章介绍了两个主机侧的通信接口

主机控制器的驱动程序(HCD)它位于USB主机控制器与USB系统软件之间主机控制器可以有一系列不同的实现而系统软件独立于任何一个具体实现一个驱动程序可以支持不同的控制器而不必特别了解这个具体的控制器一个USB控制器的实现者必须提供一个支持它自己的控制器的主机控制器驱动器HCD实现

USB驱动程序(USBD)USB系统软件与客户软件之间的接口提供给客户软件一些方便的使用USB设备的功能

一个USB逻辑设备对USB系统来说就是一个端点集合端点可以根据它们实现的接口来分类USB系统软件通过一个缺省的控制通道来管理设备而客户软件用通道束管理接口

通道束的一端为端点一端为缓冲区客户软件要求通信数据在主机上的一个缓冲和USB设备上 的一个端点之间进行主机控制器或USB设备(取决于数据传送方向)将数据打包后在USB上传由主机控制器(HC)协调何时用总线访问在USB上传递数据

主机 连接 物理设备

机械的

通道两个水平实体之间连接 电气的

的抽象

被传递的数据的与USB相关的形式 协议 第678章 数据传递机制

图4-8 USB主机/设备的细节图

图4-9说明了数据如何在主机侧中的内存缓冲和设备中的端点中传送在后面将逐步介 绍端点通道和通信流

主机上的软件通过一系列的通信流与逻辑设备进行通信这一系列的通信流是由USB设备

的软件和硬件设计者选择的使设备能传送由USB提供的字符

界面

图4-9 USB通信流

4.3.1 设备端点

一个端点是一个可唯一识别的USB设备的Portion它是主机与设备间通信流的一个结束点一系列相互独立的端点在一起构成了USB逻辑设备每个逻辑设备有一个唯一的地址这个地址是在设备连上主机时由主机分配的而设备中的每个端点在设备内部有唯一的端点号这个端点号是在设备设计时被给定的每个端点都是一个简单的连接点或者支持数据流进设备或者支持其流出设备两者不可得兼

一个端点的特性决定了它与客户软件进行的传送的类型一个端点有以下特性 端点的总线访问频率要求

端点的总线延迟要求

端点的带宽要求

端点的端点号

对错误处理的要求

端点能接收或发送的包的最大长度

端点的传送类型(详见4.4节)

端点与主机的数据传送方向

端点号不为0的端点在被设置前处于未知状态是不能被主机访问的

4.3.1 对0号端点的要求

所有USB设备都需要实现一个缺省的控制方法这种方法将端点0作为输入端点同时也将端点0作为输出端点USB系统用这个缺省方法初始化及一般地使用逻辑设备(即设置此设备)缺省控制通道见4.3.2节支持了对控制的传送(控制传送将在4.5中定义)

一旦设备接上并加电且又收到一个总线复位命令端点0就是可访问的了

4.3.1.2 对非0号端点的要求

设备可以有除0以外的其它端点这取决于这些设备的实现低速设备在0号输入及输出端点外只能有2个额外的可选端点而高速设备可具有的额外端点数仅受限于协议的定义(协议中规定最多15个额外的输入端点和最多15个额外的输出端点)

除缺省控制通道的缺省端点外其它端点只有在设备被设置后才可使用对设备的设置是设备设置过程(见第8章)的一部分

4.3.2 通道

一个USB通道是设备上的一个端点和主机上软件之间的联系体现了主机上缓存和端点间 传送数据的能力

有两不同的且互斥的通道通信格式 流(Stream)指不具有USB定义的格式的数据流 消息(Message)指具有某种USB定义的格式的数据流

USB不解释在通道中传送的数据的内容消息通道要求数据组织成USB定义的格式但它

的内容USB是不管的

特别地

有下列概念与通道相关 对USB总线访问的申请(claim)带宽的使用情况 传送类型

与通道相连的端点的特性例如

端点的数据传送方向最大数据净负荷区的长度

数据净负荷是指在总线处理事务

transaction

中数据包中数据区的数据(总线处理事务见第7章)由两个0号端点组成的通道叫缺省控制通道一旦设备加电并复位后此通道即可使用其它通道只在设备被设置后才存在USB系统软件在决定设备身份设置要求和设置设备时使用缺省控制通道当设备被设置后这个设备的特定软件还可使用该通道USB系统软件保留缺省控制通道的拥有权协调其它客户软件对通道的使用

一个客户软件一般都通过I/O请求包(IRP)来要求数据传送然后或者等待或者当传送完成后被通知IRP的细节是由操作系统来指定的客户软件提出与设备上的端点建立某个方向的数据传送的请求IRP就可简单地理解为这个请求一个客户软件可以要求一个通道回送所有的IRP当关于IRP的总线传送结束时无论它是成功地完成还是出现错误客户软件都将获得通知说IRP完成了

如果通道上没有正在传送的数据也没有数据想使用此通道这个通道就处于闲置状态主机控制器对它不采取任何动作

也就是说这个通道的端点会发现没有任何的总线动作是冲它而来的

只有当有数据在通道上时该通道才能发现总线对它的动作

如果一个非同步通道遇到一个迫使它给主机发STALL的情况(参见第7章)或者在任一个IRP中发现3个总线错误这个IRP将被中止其它所有突出的IRP也一同被中止通道不再接收任何

IRP直到客户软件从这个情况中恢复过来(恢复的方式取决于软件的实现)而且承认这个中止或出现的错误并发一个USBD Call来表明它已承认一个合适的状态信息将通知客户软件IRP的结果出错或中止同步通道的运作在4.6中介绍 一个IRP可能会需要多个数据净荷区来传递数据这些数据区除最后一个外都具有数据净荷区的最大长度最后一个数据区包含了这个IRP中剩下的数据(可参见关于传送类

本文来源:https://www.bwwdw.com/article/9c9m.html

Top