USB基础教程第四章 USB数据流.docx

上传人:b****5 文档编号:3526415 上传时间:2022-11-23 格式:DOCX 页数:50 大小:58.46KB
下载 相关 举报
USB基础教程第四章 USB数据流.docx_第1页
第1页 / 共50页
USB基础教程第四章 USB数据流.docx_第2页
第2页 / 共50页
USB基础教程第四章 USB数据流.docx_第3页
第3页 / 共50页
USB基础教程第四章 USB数据流.docx_第4页
第4页 / 共50页
USB基础教程第四章 USB数据流.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

USB基础教程第四章 USB数据流.docx

《USB基础教程第四章 USB数据流.docx》由会员分享,可在线阅读,更多相关《USB基础教程第四章 USB数据流.docx(50页珍藏版)》请在冰豆网上搜索。

USB基础教程第四章 USB数据流.docx

USB基础教程第四章USB数据流

第四章USB数据流

本章介绍了数据如何在USB中传送,将涉及到系统中关于信号的发送和协议定义的一层。

对于USB系统中这一层中各个定义的详细情况可参见第六章和第七章。

本章中介绍的数据传送格式,将在第八章到第十一章中逐步扩充。

所有的实现者必须阅读此章,以便了解USB中一些非常核心的概念。

4.1实现者的视图

USB提供了在一台主机和若干台附属的USB设备之间的通信功能,从终端用户的角度看到的USB系统,可简单地用图4.1表示:

USB设备

USB主机

图4—1USB主机/设备的简单模型

但在实际的实现上,具体的系统要比这复杂,不同层次的实现者对USB的有不同要求,这使得我们必须从不同的层次观察USB系统。

USB系统提出了一些重要的概念和情况来支持现代个人计算机所提出的可靠性要求,所以USB的分层理解是必须的。

它能使不同层次的实现者只关心USB相关层次的特性功能细节,而不必掌握从硬件结构到软件系统的所有细节。

USB的这种层次结构如图4-2所示,

主机物理设备

应用

客户软件

USB

逻辑设备

USB

系统软件

USB

总线接口

USB

主机控制器

实际通信流

逻辑通信流

需实现的区域

图4—2USB需实现的区域

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

特别地,有四个层次的实现是较为集中的。

·USB物理设备(USBPhysicalDevice):

USB上的一种硬件,可运行一些用户程序。

·客户软件(clientsoftware):

为一个特定的USB设备而在主机上运行的软件。

这种软件由USB设备的提供者提供,或由操作系统提供。

·USB系统软件(USBsystemsoftware):

此软件用于在特定的操作系统中支持USB,它由操作系统提供。

与具体的USB设备无关,也独立于客户软件。

·USB主机控制器(USBHostController):

总线在主机方面的接口,是软件和硬件的总和。

用于支持USB设备通过USB连到主机上。

这四个USB系统的组成部分在功能上存在相互重叠的部分。

为了支持主机与客户之间的坚固可靠的通信,还需要在后面对这些部分进行细节性描述。

如图4-2所示,一台主机与一个USB设备间的连接是由许多层上的连接组成。

USB总线接口层提供了在主机和设备之间的物理连接、发送连接、数据包连接。

USB设备层对USB系统软件是可见的,系统软件基于它所见的设备层来完成对设备的一般的USB操作。

应用层可以通过与之相配合的客户软件向主机提供一些额外的功能。

USB设备层和应用层的通信是逻辑上的,对应于这些逻辑通信的实际物理通信由USB总线接口层来完成。

关于USB的物理通信在第5、6章中描述,而相关的逻辑通信在第8、9章中介绍。

本章描述一些核心概念,USB系统的实现者必须先掌握它们,然后在往后几章中阅读更加详细的部分。

为了描述和管理USB通信,以下概念是很重要的:

·总线拓朴(BusTopology):

USB的基本物理组成、基本逻辑组成,以及各组成部分之间的相互关系。

这将在4.2节中描述。

·通信流模型(communicationFlowModels):

描述主机与设备如何通过USB通信,以及通信所用的四种通信类型。

这将在4.3到4.8的各节中介绍。

·总线访问管理(BUSAccess):

主机面对大量的USB设备的各种通信要求,如何控制、协调总线的访问。

·关于同步传送的考虑:

4.10节中将介绍。

对要求同步传送的设备提供一些特性。

非同步传送设备的实现者不必阅读此节。

4.2总线拓朴

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

·主机和设备:

USB系统的基础组成部分。

·物理拓朴结构:

描述USB系统中的各组成部分是如何连接起来的。

·逻辑拓朴结构:

描述USB系统中各种组成部分的地位和作用,以及描述从主机和设备的角度观察到的USB系统。

·客户软件层与应用层的关系:

描述从客户软件层看到的应用层的情况,以及从应用层看到的客户软件层的情况。

4.2.1USB主机

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

·USB主机控制器(USBHostController)

·USB系统软件集合:

USB驱动程序,主机控制器的驱动程序,主机软件

·客户软件

主机

客户软件

USB

系统软件

USB

主机控制器

实际通信流

逻辑通信流

图4—3主机的组成

USB主机在USB系统中是一个起协调作用的实体,它不仅占有特殊的物理位置,而且对于USB以及连到USB上的设备来说,还负有特殊责任。

主机控制所有的对USB的访问。

一个USB设备想要访问总线必须由主机给予它使用权。

主机还负责监督USB的拓朴结构。

关于主机和它的任务的更详细、更彻底的描述,请见第9章。

4.2.2USB设备

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

·USB总线接口

·USB逻辑设备

·应用层

物理设备

应用

USB

逻辑设备

USB

总线接口

实际通信流

逻辑通信流

图4-4物理设备组成

USB设备用于向主机提供一些额外的功能。

USB设备提供的功能是多种多样的,但面向主机的接口却是一致的。

所以,对于所有这些设备,主机可以用同样的方式来管理它们与USB有关的部分。

为了帮助主机辨认及确定USB设备,这些设备本身需要提供用于确认的信息。

在某一些方面的信息,所有设备都是一样的;而另一些方面的信息,由这些设备具体的功能决定。

信息的具体格式是不定的,由设备所处的设备级决定。

对USB设备更完备的描述,见第8章。

4.2.3总线的物理拓朴结构

USB系统中的设备与主机的连接方式采用的是星形连接,如图4-5。

主机

设备

设备

根HUB

复合设备

HUB

设备

设备

设备

设备

HUB

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

图中的Hub是一类特殊的USB设备,它是一组USB的连接点,主机中有一个被嵌入的Hub叫根Hub(rootHub)。

主机通过根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章。

逻辑设备主机

逻辑设备逻辑设备

逻辑设备逻辑设备

图4—6USB逻辑总线的拓扑

4.2.5客户软件层与应用层的关系

USB系统的物理上、逻辑上的拓朴结构反映了总线的共享性。

操纵USB应用设备的客户软件只关心设备上与它相关的接口,客户软件必须通过USB软件编程接口来操纵应用设备。

这与另一些总线如PCL,ELSA,PCMUA等不同,这些总线是直接访问内存或I/O的。

在运行中,客户软件必须独立于USB上的其它设备。

这样,设备和客户软件的设计者就可以只关心该设备与主机硬件的相互作用和主机软件的相互作用的细节问题。

图4-7说明了在图4-6的逻辑结构下,一个设备设计者看到的客户软件与相应应用的关系的视图。

客户软件

客户软件

客户软件

应用应用

应用

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

4.3USB通信流

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上传递数据。

主机连接物理设备

接口X

应用

接口的集合

ClientSW

管理一个接口

到一个接

口的通道

束与接口无

缓冲没有USB有关USB格式

格式

端点0

USB

逻辑设备

端点的集合

USBSystemSW

管理设备

到0号端点的

缺省通道

USB

设备

(第9章)

USB

USB帧格式接口

的数据

事务

SIE

主机控制器

事务USB帧格式每个端USB帧

SIE

USB总线接口

的数据点的数结构的

据数据

USB

主机

(第10章)

USB线路

机械的,

通道:

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

的抽象。

协议

数据传递机制(第6,7,8章)

被传递的数据的与USB相关的形式

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

图4-9说明了数据如何在主机侧中的内存缓冲和设备中的端点中传送。

在后面,将逐步介绍端点、通道和通信流。

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

这一系列的通信流是由USB设备的软件和硬件设计者选择的,使设备能传送由USB提供的字符。

端点

USB逻辑设备

通道

客户软件

主机

缓冲区

通信流

界面

图4-9USB通信流

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,直到客户软件从这个情况中恢复过来(恢复的方式取决于软件的实现),而且承认这个中止或出现的错误,并发一个USBDCall来表明它已承认。

一个合适的状态信息将通知客户软件IRP的结果———出错或中止。

同步通道的运作在4.6中介绍。

一个IRP可能会需要多个数据净荷区来传递数据。

这些数据区除最后一个外,都具有数据净荷区的最大长度,最后一个数据区包含了这个IRP中剩下的数据。

(可参见关于传送类型的介绍,以获得更详细的了解)。

对这样的一个IRP,短包(也就是说未达到最大长度的数据区)在数据输入时无法填完IRP数据缓冲区。

这可能会有二种不同解释,它依赖于客户软件的情况:

·如果该客户软件可以接受变长的IRP,那么,IRP数据缓冲区未被填满,可以看作一个分限,说明一个IRP已成功结束,主机控制器可以准备接收下一个IRP了。

·如果该客户软件只收定长的IRP。

那么,我们认为发生了一个错误,这IRP将被中止,通道也会被阻塞,通道上的数据都中止。

因为对这两种情况,主机控制器会有不同的反应,而且采取何种措施不由控制器决定,所以对每个IRP都必须说明客户软件的具体要求。

通道的端点可以用NAK信号来通知主机自己正忙,NAK不能作为向主机反还IRP的中止条件。

在一个给定的IRP处理过程中,可以遇到任意多个NAK,NAK不构成错误。

4.3.2.1流通道

流通道中的数据是流的形式,也就是该数据的内容不具有USB要求的结构。

数据从流通道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的,流通道中的通信流总是单方向的。

对于在流通道中传送的数据,USB认为它来自同一个客户。

USB系统软件不能够提供使用同一流通道的多个客户的同步控制。

在流通道中传送的数据遵循先进先出原则。

流管流只能连到一个固定号码的端点上,或者流进,或者流出。

(这个号码是由协议层决定的)。

而具有这个号码的另一个方向的端点可以被分配给其它流通道。

流通道支持同步传送,中断传送和批传送,这些在稍后的章节会进一步解释。

4.3.2.2消息通道

消息通道与端点的关系同流通道与端点的关系是不同的。

首先,主机向USB设备发出一个请求;接着,就是数据的传送;最后,是一个状态阶段。

为了能够容纳请求/数据/状态的变化,消息通道要求数据有一个格式,此格式保证了命令能够被可靠地传送和确认。

消息通道允许双方向的信息流,虽然大多数的通信流是单方向的。

特别地,缺省控制通道也是一个消息通道。

USB系统软件不会让多个请求同时要求同一个消息通道。

一个设备的每个消息通道在一个时间段内,只能为一个消息请求服务,多个客户软件可以通过缺省控制通道发出它们的请求,但这些请求到达设备的次序是按先进先出的原则的。

设备可以在数据传送阶段和状态阶段控制信息流,这取决于这些设备与主机交互的能力(参见第7章)。

正常情况下,在上一个消息未被处理完之前,是不能向消息通道发下一个消息的。

但在有错误发生的情况下,主机会取消这次消息传送,并且不等设备将已收的数据处理完,就开始下一次的消息传送。

在操作通道的软件看来,一个IRP中的错误,使这个IRP被取消,并且所有正排队等待的IRP一同也被取消。

申请这个IRP的客户被通知IRP结束,且有出错提示。

消息通道后有两个相同号码的端点,一个用于输入,一个用于输出。

两个号码必须相同。

消息通道支持控制传送,这将在4.5中进行介绍。

4.4传送类型

USB通过通道在主机缓冲区与设备端点间传送数据。

在消息通道中传递的数据具有USB定义的格式,它的数据净荷区中包含的数据允许具有设备指定的格式。

USB要求任何在通道上传送的数据均被打包,数据的解释工作由客户软件和应用层软件负责。

USB提供了多种数据格式,使之尽可能满足客户软件和应用软件的要求。

一个IRP需要一个或多个总线处理事务来完成。

每个传送类型在以下的几个传送特征上会有不同:

·USB规定的数据格式

·信息流的方向

·数据净荷区的长度限制

·总线访问的限制

·延时的限制

·出错处理

USB设备的设计者可以决定设备上每个端点的能力。

一旦为这个端点建立了一个通道,这个通道的绝大多数传送特征也就固定下来了,一直到这个通道被取消为止。

也有部分传送特征可以改变,对这样的特征,将会在介绍每个传送类型时作出说明。

USB定义了4种传送类型:

·控制传送:

可靠的、非周期性的、由主机软件发起的请求或者回应的传送,通常用于命令事务和状态事务。

·同步传送:

在主机与设备之间的周期性的、连续的通信,一般用于传送与时间相关的信息。

这种类型保留了将时间概念包含于数据中的能力。

但这并不意味着,传送这样数据的时间总是很重要的,即传送并不一定很紧急。

·中断传送:

小规模数据的、低速的、固定延迟的传送。

·批传送:

非周期性的,大包的可靠的传送。

典型地用于传送那些可以利用任何带宽的数据,而且这些数据当没有可用带宽时,可以容忍等待。

这些传送类型将在后面的四个大节中进行讨论。

IRP的数据均放在数据包中的数据区被传送,这将在7.4.3中介绍。

关于与具体传送类型有关的一些协议细节在第7章中介绍。

4.5控制传送

控制传送允许访问一个设备的不同部分。

控制传送用于支持在客户软件和它的应用之间的关于设置信息、命令信息、状态信息的传送。

控制传送由以下几个事务组成:

(1)建立联系,把请求信息从主机传到它的应用设备;

(2)零个或多个数据传送事务,按照

(1)事务中指明的方向传送数据;(3)状态信息回传。

将状态信息从应用设备传到主机。

当端点成功地完成了被要求的操作时,回传的状态信息为“success”。

7.2中将介绍控制传送的细节,例如,什么样的包,什么样的总线事务和总线事务的顺序。

而第8章将介绍USB定义的USB命令字。

USB设备必须实现缺省控制通道,并将它实现成一个消息通道。

这个通道由USB系统软件使用。

USB设备的确认信息、状态信息以及控制信息由该通道传送。

如果需要的话,一个应用设备可以为端点实现额外的控制通道。

USB设备框架(见第8章)定义了标准的,设备级的或由销售商提供的请求,这些请求可操作设备的状态。

USB设备框架又定义了一些描述器(descriptor),用于存放USB设备的各种信息。

控制机制提供访问设备描述器和请求操作设备的机制。

控制传送只能通过消息通道进行。

所以,使用控制传送的数据必须具有USB定义的数据格式(见4.5.1节)。

应用层和相应的客户软件不能为控制传送指定总线访问频率和带宽。

这由USB系统软件从全局优化角度加以决定。

USB系统软件会限制设备要求的访问频率和带宽,这些限制在4.5.3和4.5.4中介绍。

4.5.1控制传送类型的数据格式

Setup包的数据格式属于一个命令集,这个集合能保证主机和设备之间正常通信。

这个格式也允许一些销售商对设备命令的扩展。

Setup包后的数据传送也具有USB定义的格式,除非这个数据是销售商提供的信息。

回传的状态信息仍然具有USB定义的格式。

7.5.8节和第8章将介绍控制传送的Setup定义和数据定义。

4.5.2控制传送的方向

控制传送使用的是消息通道上的双向信息流。

所以,一旦一个控制通道被确认之后,这个通道就使用了具有某个端点号的两个端点,一个输入,一个输出。

4.5.3控制传送包的大小的限制

控制传送的端点决定了它所能接收或发送的最大数据净负荷区长度。

USB为高速设备定义的最大数据净负荷区长度为8、16、32或64字节,低速设备的数据净负荷区的长度只能是8字节。

Setup后的所有数据包都要遵守这个规定,这个规定是针对这些数据包中的数据净负荷区的,不包括包中的协议要求的额外信息,Setup包实际上也是8字节。

控制通道(包括缺省控制通道)总是使用wMaxPacketSize的值。

端点在自己的设置信息中报告自己允许的最大净负荷区长度。

USB不要求数据净负荷区必须达到最大长度,当长度不够时,不必填充到最大长度。

主机控制器对高速设备的控制通道端点支持8、16、32、64字节的最大长度,对低速设备支持8字节的长度。

它不能支持更大的或更小的其它长度。

对于缺省控制通道的最大数据区长度,USB系统软件要从设备描述器的头8个字节中读出,设备将这8个字节放在一个包

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1