关闭

关闭

封号提示

内容

首页 USB中文协议--05 USB数据流模型.doc

USB中文协议--05 USB数据流模型.doc

USB中文协议--05 USB数据流模型.doc

上传者: 胡哥008 2012-08-12 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《USB中文协议--05 USB数据流模型doc》,可适用于工程科技领域,主题内容包含第四章USB数据流模型本章介绍了数据如何在USB中传送将涉及到系统中关于信号的发送和协议定义的一层。对于USB系统中这一层中各个定义的详细情况可参见符等。

第四章USB数据流模型本章介绍了数据如何在USB中传送将涉及到系统中关于信号的发送和协议定义的一层。对于USB系统中这一层中各个定义的详细情况可参见第六章和第七章。本章中介绍的数据传送格式将在第八章到第十一章中逐步扩充。所有的实现者必须阅读此章以便了解USB中一些非常核心的概念。实现者的视图USB提供了在一台主机和若干台附属的USB设备之间的通信功能从终端用户的角度看到的USB系统可简单地用图表示:图USB主机设备的简单模型但在实际的实现上具体的系统要比这复杂不同层次的实现者对USB的有不同要求这使得我们必须从不同的层次观察USB系统。USB系统提出了一些重要的概念和情况来支持现代个人计算机所提出的可靠性要求所以USB的分层理解是必须的。它能使不同层次的实现者只关心USB相关层次的特性功能细节而不必掌握从硬件结构到软件系统的所有细节。USB的这种层次结构如图所示主机物理设备实际通信流逻辑通信流需实现的区域图USB需实现的区域各层次的具体细节将在以后逐步介绍。特别地有四个层次的实现是较为集中的。USB物理设备(USBPhysicalDevice):USB上的一种硬件可运行一些用户程序。客户软件(clientsoftware):为一个特定的USB设备而在主机上运行的软件。这种软件由USB设备的提供者提供或由操作系统提供。USB系统软件(USBsystemsoftware):此软件用于在特定的操作系统中支持USB它由操作系统提供。与具体的USB设备无关也独立于客户软件。USB主机控制器(USBHostController):总线在主机方面的接口是软件和硬件的总和。用于支持USB设备通过USB连到主机上。这四个USB系统的组成部分在功能上存在相互重叠的部分。为了支持主机与客户之间的坚固可靠的通信还需要在后面对这些部分进行细节性描述。如图所示一台主机与一个USB设备间的连接是由许多层上的连接组成。USB总线接口层提供了在主机和设备之间的物理连接、发送连接、数据包连接。USB设备层对USB系统软件是可见的系统软件基于它所见的设备层来完成对设备的一般的USB操作。应用层可以通过与之相配合的客户软件向主机提供一些额外的功能。USB设备层和应用层的通信是逻辑上的对应于这些逻辑通信的实际物理通信由USB总线接口层来完成。关于USB的物理通信在第、章中描述而相关的逻辑通信在第、章中介绍。本章描述一些核心概念USB系统的实现者必须先掌握它们然后在往后几章中阅读更加详细的部分。为了描述和管理USB通信以下概念是很重要的:总线拓朴(BusTopology):USB的基本物理组成、基本逻辑组成以及各组成部分之间的相互关系。这将在节中描述。通信流模型(communicationFlowModels):描述主机与设备如何通过USB通信以及通信所用的四种通信类型。这将在到的各节中介绍。总线访问管理(BUSAccess):主机面对大量的USB设备的各种通信要求如何控制、协调总线的访问。关于同步传送的考虑:节中将介绍。对要求同步传送的设备提供一些特性。非同步传送设备的实现者不必阅读此节。总线拓朴总线拓朴结构包括四个重要的组成部分。主机和设备:USB系统的基础组成部分。物理拓朴结构:描述USB系统中的各组成部分是如何连接起来的。逻辑拓朴结构:描述USB系统中各种组成部分的地位和作用以及描述从主机和设备的角度观察到的USB系统。客户软件层与应用层的关系:描述从客户软件层看到的应用层的情况以及从应用层看到的客户软件层的情况。USB主机主机的逻辑结构如图包括USB主机控制器(USBHostController)USB系统软件集合:USB驱动程序主机控制器的驱动程序主机软件客户软件主机实际通信流逻辑通信流图主机的组成USB主机在USB系统中是一个起协调作用的实体它不仅占有特殊的物理位置而且对于USB以及连到USB上的设备来说还负有特殊责任。主机控制所有的对USB的访问。一个USB设备想要访问总线必须由主机给予它使用权。主机还负责监督USB的拓朴结构。关于主机和它的任务的更详细、更彻底的描述请见第章。USB设备一个USB设备的逻辑结构如图所示包括USB总线接口USB逻辑设备应用层物理设备实际通信流逻辑通信流图物理设备组成USB设备用于向主机提供一些额外的功能。USB设备提供的功能是多种多样的但面向主机的接口却是一致的。所以对于所有这些设备主机可以用同样的方式来管理它们与USB有关的部分。为了帮助主机辨认及确定USB设备这些设备本身需要提供用于确认的信息。在某一些方面的信息所有设备都是一样的而另一些方面的信息由这些设备具体的功能决定。信息的具体格式是不定的由设备所处的设备级决定。对USB设备更完备的描述见第章。..总线的物理拓朴结构USB系统中的设备与主机的连接方式采用的是星形连接如图。根HUBHUBHUB图USB物理总线的拓扑图中的Hub是一类特殊的USB设备它是一组USB的连接点主机中有一个被嵌入的Hub叫根Hub(rootHub)。主机通过根Hub提供若干个连接点。为了防止环状连接采用星形连接来体现层次性如图。这种连接的形状很像一棵树。用于提供具体功能的设备叫应用设备。许多不同功能的设备放在一起被看作一个整体叫包。例如键盘和轨迹球可以被视作一个整体在它的内部提供具体功能的设备被永久地接到Hub上而这个Hub被接到USB上。所有这些设备及这个Hub被看作一个复合设备而这个Hub又被看作这个复合设备的内部Hub。在主机看来这个复合设备和一个带着若干设备的单独Hub是一样的。图中也标出了一个复合设备。总线逻辑拓朴结构在物理结构上设备通过Hub连到主机上。但在逻辑上主机是直接与各个逻辑设备通信的就好像它们是直接被连到主机上一样。这个逻辑关系如图所示。与之对应的物理结构就是图中的结构。Hub也是逻辑设备但在图中为了简化起见未被画出虽然USB系统中的工作都是从逻辑角度来看待的但主机必须对物理结构有个了解。例如在处理Hub被移去的情况时当一个Hub被移出通过它与主机相连的设备也应一起被移去这是由其物理结构决定的。关于Hub的更详细的讨论在第章。逻辑设备主机逻辑设备逻辑设备逻辑设备逻辑设备图USB逻辑总线的拓扑客户软件层与应用层的关系USB系统的物理上、逻辑上的拓朴结构反映了总线的共享性。操纵USB应用设备的客户软件只关心设备上与它相关的接口客户软件必须通过USB软件编程接口来操纵应用设备。这与另一些总线如PCLELSAPCMUA等不同这些总线是直接访问内存或IO的。在运行中客户软件必须独立于USB上的其它设备。这样设备和客户软件的设计者就可以只关心该设备与主机硬件的相互作用和主机软件的相互作用的细节问题。图说明了在图的逻辑结构下一个设备设计者看到的客户软件与相应应用的关系的视图。客户软件客户软件客户软件应用应用应用图客户软件和应用间的关系USB通信流USB是为主机软件和它的USB应用设备间的通信服务的对客户与应用间不同的交互USB设备对数据流有不同的要求。USB为此提供了更好的overall总线使用它允许各种不同的数据流相互独立地进入一个USB设备。每种通信流都采取了某种总线访问方法来完成主机上的软件与设备之间的通信。每个通信都在设备上的某个端点结束。不同设备的不同端点用于区分不同的通信流。图是图的扩充它更详尽地描述了USB系统支持了逻辑设备层和应用层间的通信。实际的通信流要经过好几个接口边界从第章到第章刻画了机械上、电气上以及协议上的USB接口的定义。第章刻划了USB设备的编程接口。通过此接口可从主机侧对USB设备进行控制第章介绍了两个主机侧的通信接口:主机控制器的驱动程序(HCD):它位于USB主机控制器与USB系统软件之间。主机控制器可以有一系列不同的实现而系统软件独立于任何一个具体实现。一个驱动程序可以支持不同的控制器而不必特别了解这个具体的控制器。一个USB控制器的实现者必须提供一个支持它自己的控制器的主机控制器驱动器(HCD)实现。USB驱动程序(USBD):USB系统软件与客户软件之间的接口提供给客户软件一些方便的使用USB设备的功能。一个USB逻辑设备对USB系统来说就是一个端点集合。端点可以根据它们实现的接口来分类。USB系统软件通过一个缺省的控制通道来管理设备。而客户软件用通道束管理接口。通道束的一端为端点一端为缓冲区。客户软件要求通信数据在主机上的一个缓冲和USB设备上的一个端点之间进行。主机控制器或USB设备(取决于数据传送方向)将数据打包后在USB上传。由主机控制器(HC)协调何时用总线访问在USB上传递数据。主机连接物理设备到一个接口的通道束与接口无缓冲没有USB有关USB格式格式到号端点的缺省通道事务USB帧格式每个端USB帧的数据点的数结构的据数据USB主机(第章)USB线路机械的通道:两个水平实体之间连接电气的的抽象。协议数据传递机制(第章)被传递的数据的与USB相关的形式图USB主机设备的细节图图说明了数据如何在主机侧中的内存缓冲和设备中的端点中传送。在后面将逐步介绍端点、通道和通信流。主机上的软件通过一系列的通信流与逻辑设备进行通信。这一系列的通信流是由USB设备的软件和硬件设计者选择的使设备能传送由USB提供的字符。界面图USB通信流设备端点一个端点是一个可唯一识别的USB设备的Portion它是主机与设备间通信流的一个结束点。一系列相互独立的端点在一起构成了USB逻辑设备。每个逻辑设备有一个唯一的地址这个地址是在设备连上主机时由主机分配的而设备中的每个端点在设备内部有唯一的端点号。这个端点号是在设备设计时被给定的。每个端点都是一个简单的连接点或者支持数据流进设备或者支持其流出设备两者不可得兼。一个端点的特性决定了它与客户软件进行的传送的类型。一个端点有以下特性:端点的总线访问频率要求端点的总线延迟要求端点的带宽要求端点的端点号对错误处理的要求端点能接收或发送的包的最大长度端点的传送类型(详见节)端点与主机的数据传送方向端点号不为的端点在被设置前处于未知状态是不能被主机访问的。对号端点的要求所有USB设备都需要实现一个缺省的控制方法。这种方法将端点作为输入端点同时也将端点作为输出端点。USB系统用这个缺省方法初始化及一般地使用逻辑设备(即设置此设备)。缺省控制通道(见节)支持了对控制的传送(控制传送将在中定义)一旦设备接上并加电且又收到一个总线复位命令端点就是可访问的了。对非号端点的要求设备可以有除以外的其它端点这取决于这些设备的实现。低速设备在号输入及输出端点外只能有个额外的可选端点。而高速设备可具有的额外端点数仅受限于协议的定义(协议中规定最多个额外的输入端点和最多个额外的输出端点)。除缺省控制通道的缺省端点外其它端点只有在设备被设置后才可使用对设备的设置是设备设置过程(见第章)的一部分。通道一个USB通道是设备上的一个端点和主机上软件之间的联系。体现了主机上缓存和端点间传送数据的能力。有两不同的且互斥的通道通信格式。流(Stream):指不具有USB定义的格式的数据流。消息(Message):指具有某种USB定义的格式的数据流。USB不解释在通道中传送的数据的内容。消息通道要求数据组织成USB定义的格式但它的内容USB是不管的。特别地有下列概念与通道相关:对USB总线访问的申请(claim)带宽的使用情况传送类型与通道相连的端点的特性例如:端点的数据传送方向最大数据净负荷区的长度。数据净负荷是指在总线处理事务(transaction)中数据包中数据区的数据(总线处理事务见第章)。由两个号端点组成的通道叫缺省控制通道。一旦设备加电并复位后此通道即可使用。其它通道只在设备被设置后才存在。USB系统软件在决定设备身份、设置要求和设置设备时使用缺省控制通道。当设备被设置后这个设备的特定软件还可使用该通道。USB系统软件保留缺省控制通道的拥有权协调其它客户软件对通道的使用。一个客户软件一般都通过IO请求包(IRP)来要求数据传送。然后或者等待或者当传送完成后被通知。IRP的细节是由操作系统来指定的。客户软件提出与设备上的端点建立某个方向的数据传送的请求IRP就可简单地理解为这个请求。一个客户软件可以要求一个通道回送所有的IRP。当关于IRP的总线传送结束时无论它是成功地完成还是出现错误客户软件都将获得通知说IRP完成了。如果通道上没有正在传送的数据也没有数据想使用此通道这个通道就处于闲置状态。主机控制器对它不采取任何动作也就是说这个通道的端点会发现没有任何的总线动作是冲它而来的。只有当有数据在通道上时该通道才能发现总线对它的动作。如果一个非同步通道遇到一个迫使它给主机发STALL的情况(参见第章)或者在任一个IRP中发现个总线错误。这个IRP将被中止。其它所有突出的IRP也一同被中止。通道不再接收任何IRP直到客户软件从这个情况中恢复过来(恢复的方式取决于软件的实现)而且承认这个中止或出现的错误并发一个USBDCall来表明它已承认。一个合适的状态信息将通知客户软件IRP的结果出错或中止。同步通道的运作在中介绍。一个IRP可能会需要多个数据净荷区来传递数据。这些数据区除最后一个外都具有数据净荷区的最大长度最后一个数据区包含了这个IRP中剩下的数据。(可参见关于传送类型的介绍以获得更详细的了解)。对这样的一个IRP短包(也就是说未达到最大长度的数据区)在数据输入时无法填完IRP数据缓冲区。这可能会有二种不同解释它依赖于客户软件的情况:如果该客户软件可以接受变长的IRP那么IRP数据缓冲区未被填满可以看作一个分限说明一个IRP已成功结束主机控制器可以准备接收下一个IRP了。如果该客户软件只收定长的IRP。那么我们认为发生了一个错误这IRP将被中止通道也会被阻塞通道上的数据都中止。因为对这两种情况主机控制器会有不同的反应而且采取何种措施不由控制器决定所以对每个IRP都必须说明客户软件的具体要求。通道的端点可以用NAK信号来通知主机自己正忙NAK不能作为向主机反还IRP的中止条件。在一个给定的IRP处理过程中可以遇到任意多个NAKNAK不构成错误。流通道流通道中的数据是流的形式也就是该数据的内容不具有USB要求的结构。数据从流通道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的流通道中的通信流总是单方向的。对于在流通道中传送的数据USB认为它来自同一个客户。USB系统软件不能够提供使用同一流通道的多个客户的同步控制。在流通道中传送的数据遵循先进先出原则。流管流只能连到一个固定号码的端点上或者流进或者流出。(这个号码是由协议层决定的)。而具有这个号码的另一个方向的端点可以被分配给其它流通道。流通道支持同步传送中断传送和批传送这些在稍后的章节会进一步解释。消息通道消息通道与端点的关系同流通道与端点的关系是不同的。首先主机向USB设备发出一个请求接着就是数据的传送最后是一个状态阶段。为了能够容纳请求数据状态的变化消息通道要求数据有一个格式此格式保证了命令能够被可靠地传送和确认。消息通道允许双方向的信息流虽然大多数的通信流是单方向的。特别地缺省控制通道也是一个消息通道。USB系统软件不会让多个请求同时要求同一个消息通道。一个设备的每个消息通道在一个时间段内只能为一个消息请求服务多个客户软件可以通过缺省控制通道发出它们的请求但这些请求到达设备的次序是按先进先出的原则的。设备可以在数据传送阶段和状态阶段控制信息流这取决于这些设备与主机交互的能力(参见第章)。正常情况下在上一个消息未被处理完之前是不能向消息通道发下一个消息的。但在有错误发生的情况下主机会取消这次消息传送并且不等设备将已收的数据处理完就开始下一次的消息传送。在操作通道的软件看来一个IRP中的错误使这个IRP被取消并且所有正排队等待的IRP一同也被取消。申请这个IRP的客户被通知IRP结束且有出错提示。消息通道后有两个相同号码的端点一个用于输入一个用于输出。两个号码必须相同。消息通道支持控制传送这将在中进行介绍。传送类型USB通过通道在主机缓冲区与设备端点间传送数据。在消息通道中传递的数据具有USB定义的格式它的数据净荷区中包含的数据允许具有设备指定的格式。USB要求任何在通道上传送的数据均被打包数据的解释工作由客户软件和应用层软件负责。USB提供了多种数据格式使之尽可能满足客户软件和应用软件的要求。一个IRP需要一个或多个总线处理事务来完成。每个传送类型在以下的几个传送特征上会有不同:USB规定的数据格式信息流的方向数据净荷区的长度限制总线访问的限制延时的限制出错处理USB设备的设计者可以决定设备上每个端点的能力。一旦为这个端点建立了一个通道这个通道的绝大多数传送特征也就固定下来了一直到这个通道被取消为止。也有部分传送特征可以改变对这样的特征将会在介绍每个传送类型时作出说明。USB定义了种传送类型:控制传送:可靠的、非周期性的、由主机软件发起的请求或者回应的传送通常用于命令事务和状态事务。同步传送:在主机与设备之间的周期性的、连续的通信一般用于传送与时间相关的信息。这种类型保留了将时间概念包含于数据中的能力。但这并不意味着传送这样数据的时间总是很重要的即传送并不一定很紧急。中断传送:小规模数据的、低速的、固定延迟的传送。批传送:非周期性的大包的可靠的传送。典型地用于传送那些可以利用任何带宽的数据而且这些数据当没有可用带宽时可以容忍等待。这些传送类型将在后面的四个大节中进行讨论。IRP的数据均放在数据包中的数据区被传送这将在中介绍。关于与具体传送类型有关的一些协议细节在第章中介绍。控制传送控制传送允许访问一个设备的不同部分。控制传送用于支持在客户软件和它的应用之间的关于设置信息、命令信息、状态信息的传送。控制传送由以下几个事务组成:()建立联系把请求信息从主机传到它的应用设备()零个或多个数据传送事务按照()事务中指明的方向传送数据()状态信息回传。将状态信息从应用设备传到主机。当端点成功地完成了被要求的操作时回传的状态信息为“success”。中将介绍控制传送的细节例如什么样的包什么样的总线事务和总线事务的顺序。而第章将介绍USB定义的USB命令字。USB设备必须实现缺省控制通道并将它实现成一个消息通道。这个通道由USB系统软件使用。USB设备的确认信息、状态信息以及控制信息由该通道传送。如果需要的话一个应用设备可以为端点实现额外的控制通道。USB设备框架(见第章)定义了标准的设备级的或由销售商提供的请求这些请求可操作设备的状态。USB设备框架又定义了一些描述器(descriptor)用于存放USB设备的各种信息。控制机制提供访问设备描述器和请求操作设备的机制。控制传送只能通过消息通道进行。所以使用控制传送的数据必须具有USB定义的数据格式(见节)。应用层和相应的客户软件不能为控制传送指定总线访问频率和带宽。这由USB系统软件从全局优化角度加以决定。USB系统软件会限制设备要求的访问频率和带宽这些限制在和中介绍。控制传送类型的数据格式Setup包的数据格式属于一个命令集这个集合能保证主机和设备之间正常通信。这个格式也允许一些销售商对设备命令的扩展。Setup包后的数据传送也具有USB定义的格式除非这个数据是销售商提供的信息。回传的状态信息仍然具有USB定义的格式。节和第章将介绍控制传送的Setup定义和数据定义。控制传送的方向控制传送使用的是消息通道上的双向信息流。所以一旦一个控制通道被确认之后这个通道就使用了具有某个端点号的两个端点一个输入一个输出。控制传送包的大小的限制控制传送的端点决定了它所能接收或发送的最大数据净负荷区长度。USB为高速设备定义的最大数据净负荷区长度为、、或字节低速设备的数据净负荷区的长度只能是字节。Setup后的所有数据包都要遵守这个规定这个规定是针对这些数据包中的数据净负荷区的不包括包中的协议要求的额外信息Setup包实际上也是字节。控制通道(包括缺省控制通道)总是使用wMaxPacketSize的值。端点在自己的设置信息中报告自己允许的最大净负荷区长度。USB不要求数据净负荷区必须达到最大长度当长度不够时不必填充到最大长度。主机控制器对高速设备的控制通道端点支持、、、字节的最大长度对低速设备支持字节的长度。它不能支持更大的或更小的其它长度。对于缺省控制通道的最大数据区长度USB系统软件要从设备描述器的头个字节中读出设备将这个字节放在一个包中发出其中的七个字包含了缺省通道的wMaxPacketSize。对其它的控制端点来说USB系统软件在它们被设置后获得此长度然后USB系统软件就会保证数据净负荷区不会超长。另外主机总是认为数据净负荷区的最大长度至少为。端点所传的数据净负荷区长度必须小于或等于其wMaxPacketSize(参见第章)当一个数据区不能容纳所传数据时就分几个区来传。除最后一个区外其它区都应达到最大长度。最后一区包含最后剩下的数据。当端点做了以下两件事时控制传送的数据阶段可被认为结束:已传了由Setup阶段指定的数据量。传了一个数据包它的长度为或它的数据区长度小于最大长度。数据阶段结束后主机控制器进入状态阶段而不是开始另一个数据传诵。如果它不这样做端点会认为通道脱线而中止通道(通道脱线见)。如果主机在状态阶段时主机收到一个大于最大长度的数据区那么请求这次传送的IRP将被中止。当数据全部传完主机与端点之间的控制传送的数据阶段结束。如果其间端点收到了超过最大长度的数据区它将中止通道。控制传送的总线访问的限制无论低速设备还是高速设备都可以使用控制通道。端点没法指明控制通道对总线访问频率的要求。USB权衡所有控制通道的总线访问频率和正等待的IRP从全局优化提供一个“最佳”传送方案。USB要求数据帧中的一部分被留给控制传送使用。如果被引发的控制传送(引发方式由实现决定)只用了数据帧的不到的时间则剩余的时间留给批传送(参见节)。如果一个控制传送被引发又被中止则它的中止可在本次的帧内也可在以后的帧内。也就是说引发和中止不必在同一个帧内。如果留给控制传送的时间不够用但恰好有一些同步和中断传送的帧时间未用则主机控制器利用这些时间进行额外的控制传送。如果对可用的帧时间有太多的控制传送在等待那么就对它们进行排序然后传送。如果各个控制传送申请的是不同的端点主机控制器根据公平访问原则决定它们的访问顺序。公平访问原则的具体内容决定于主机控制器的实现。如果一个控制传送事务频繁地被中止不能认为给它的总线访问时间是不公平的。这些要求使得控制传送一般可以在总线上进行规则地、最优化地传送。对某个端点的控制传送的速率是可以变化的USB系统软件控制这些离散的变化。端点和其客户软件不能想当然的认为其有一个固定的传送速率端点可能发现在一帧内有零个或若干个传送。一个端点和它相应的客户软件可占用的总线时间会因为其它设备进入或退出系统或者本设备上的其它端点进入或退出系统而改变。总线频率和帧定时决定于一个帧内可传送的控制传送的最大个数。在任一个USB系统内一个帧内的字节高速数据区须少于个字节低速数据区须少于个。表是关于不同规格的高速的控制传送的情况以及在一帧内可能的最大的传送数目。这张表有两个默认的前提即控制传送有一个数据传送阶段而且这个数据传送阶段有一个长度为状态阶段表还指出了出现两个数据区都达不到最大长度的情况表中不包括用于管理的一些额外的位。表高速控制传送限制协议开销(字节)(SYNCbytes,PIDbytes,EndpointCRCbytes,CRCbytes,Setupdatabytes,andabyteinterpackerdelay(EOP,etc))数据净荷区最大带宽(字节秒)Frame带宽传送最大传送数剩余字节有用数据字节FrameMax因为一个帧内只留的时间给非周期性传送所以当一个系统的总线时间被排满的时候这个系统内的所有控制传送只能去竞争每个帧内的三个控制传送名额。因为除了客户软件会要求控制传送外USB系统要用控制传送来传送设置信息所以对某个客户和它的应用就不能指望它们的控制传送像它们想的一样进行。主机控制器可以自由地决定如何将某个具体的控制传送在总线上进行可以在一个帧内也可以跨几个帧。一个端点可能发现一个控制传送的各个总线处理事务在同一帧内或分在几个不连续的帧内。由于具体实现的不同主机控制器可能不能提供理论上的每帧的最大控制传送数目。低速控制传送与高速控制传送都是竞争同样多的可用帧时间。低速控制传送只是要用更多的时间来传送罢了。表列出了不同规格的低速包的情况以及一帧内允许的最大包数。这张表同样没包括进管理用的开销。无论低速与高速由于一个控制传送都由几个包组成所以都可能要用几个帧才能完成传送。表低速控制传送限制协议开销(字节)数据净荷区最大带宽字节FrameFrame带宽传送最大传送数剩余字节有用数据字节FrameMax控制传送的数据顺序要进行控制传送先要由主机向设备发一个总线建立(Setup)信息。它描述了控制访问的类型设备将执行此控制访问。这个阶段之后是零个或多个控制数据信息的传送这是进行访问的具体信息。最后由状态信息的传送来结束这次控制传送允许端点将这次控传的状态回送给客户软件。这次控传完成之后可以进行对这个端点的下一个控传如节所述每次控传何时在总线上进行由主机控制器的具体实现决定。在数据传送阶段和状态信息回传阶段可能由于设备自身的原因设备处于“忙”状态。此时端点可设法表明自己正忙(见第、章)主机将试着在稍后时间重传一次。如果在上一个控传结束之前端点又收到一个总线建立信息设备将结束现未完成的传送转而处理新的控传。正常情况下是不会早发总线建立信息的不过当上一个控传因错误而被中止后主机可发下一个控传的总线建立信息。在端点看来这是在上一个控传结束前过早发出的。一旦主机遇到一个引起中止的条件或检测到一个错误端点可以通过接收下一个Setup包的PID来恢复也就是说不一定必须从别的通道进行恢复。对于缺省控制通道如果端点收不到Setup的PID时最终会要求设备复位来清除中止条件或错误条件。在控传中USB提供了强大的错误检测功能和错误恢复和重传功能。传送器和接收器可以保持阶段的同步既关于他们在控传的哪个阶段这个问题上保持同步。并且以最小的代价恢复。接收器可以识别一个数据重传包或状态信息重传包因为包中带有数据重传的指示。一个发送器可以通过对方给它发的握手信息确知它发的数据重送包和状态信息包已被成功接收除了Setup包以外协议可以将一个重送的包与原来的包区分开来Setup包可以因为出错而重传但无法说明此包是重传的还是原来的。同步传送在非USB的环境下同步传送意味着恒定速率、错误容忍(errortolerant)的传送。在USB环境下要求同步传送能提供以下几点:固定的延迟下确保对USB带宽的访问。只要数据能提供得上就能保证通道上的恒定数据传送速度。如果由于错误而造成传送失败并不重传数据。当USB同步传送类型被用来支持同步的源和目的时使用这个传送类型的软件并不要求是同步的中将详细介绍USB上的同步数据的处理。同步传送的数据格式对于同步传送的通道(同步通道)USB并不对数据格式做要求。同步传送的方向同步通道是一种流通道所以是单方向的。在对端点的描述中指明了与它相连的通道的数据流方向。如果设备要同步的双向流的话只好用两个同步通道一个流进一个流出。同步传送中包的大小的限制同步通道的端点确定了数据区的最大长度USB在设置端点期间使用这一个信息看是否可在每帧内为最大长度的数据区留下足够的时间。如果可以设置端点成功否则不成功。USB系统软件可为一个控制传送的通道调整最大数据区长度但无法为同步通道进行如此调整。在确定的USB设置下同步通道要么被支持要么不被支持。USB限制了同步通道的最大数据区长度为字节表列出了不同规格的同步传送以及一帧内可能的最大传送数。表中未包括管理开销的字节。表同步传送限制协议开销(字节)(SYNCbytes,PIDbytes,EndpointCRCbytes,CRCbytes,andabyteinterpacketdelay)数据净荷区最大带宽字节秒Frame带宽传送最大传送数剩余字节有用字节字节FrameMax并不是每一次的数据区都要达到最大长度。数据区的长度由发送者(客户软件或应用软件)决定每次可以不同。USB可保证主机控制器看到的包有多长在总线上传的包就有多长。数据的实际长度由发送者决定可以小于早先协商好的最大长度。总线错误可以使接收者看到的长度比实际长度有了变化。但这些错误可被检测到。具体地讲或者通过数据上的CRC码或者让接收者预先知道实际应该的长度以此进行检测。同步传送的总线方向限制只有高速设备可以使用同步方式。USB设备要求一个帧内不能有超过的时间用于周期性传送(同步传送或中断传送)。同步通道的端点描述自己的总线访问频率。所有的同步通道一般在一帧内传一个包(也就是说ms一个包)。但总线上的错误或者操作系统对客户软件调度上的延迟会造成一个帧内一个包也没有的情况。此时设备将一个错误指示信息作为状态信息返回给客户软件。设备可以通过跟踪SOF(帧开始)信号来测到此类错误。如果两个SOF信号间无数据包则出错。总线频率和帧定时限制了一个帧内的同步传送的上限在任何USB系统内最多有个单字节的数据区。但由于实现上的原因主机控制器可能无法支持到理论上的最大传送数。同步传送的数据顺序同步传送不支持因总线错误而进行的重传。接收器可以判断是否发生了一个错误低级的USB协议不允许有握手信号给同步通道的发送者。一般情况下是可以有握手信号来通知发送者包是否被成功地接收。对于同步传送来说定时比正确性和重传更重要。考虑到总线的错误率较低协议就认为传送一般均能成功。同步接收者可以判断自己是否在一个帧内错过了一些数据而且能知道丢失了多少数据。节将有关于此的具体介绍。因为没有用来指示引起中止的条件的握手信号所以同步传送的端点从不途停止。虽然错误信息可作为IRP的状态来报告但同步通道不会因此停下。错误即使被查到主机仍继续处理下一帧的数据。因为同步传送的协议不支持每次事务都进行握手所以错误检测的功能可以相对弱一些。中断传送中断传送是为这样一类设备设计的它们只传或收少量数据而且并不经常进行传送但它们有一个确定的服务周期对中断传送有以下要求:通道的最大服务期得到保证。由于错误而引起的重发在下一服务期进行。中断传送的数据格式USB对中断通道上的数据流格式无要求。中断传送的方向中断通道是一种流通道所以是单向的。端点描述信息指明了通道的数据流方向。中断传送对包的长度的限制中断通道的端点决定自己能接收和发送的最大数据区长度高速设备允许最大不超过字节(或更少)的数据区而低速设备只允许不超过个(或更少)字的数据区这个数字不包括协议要求的附加信息。USB并不需求所有的包都到最大长度。如果不到的话不用加字节填充。所有的主机控制器都要示支持高速设备的字节数据区和低速设备的字节(或更少)的最大数据区对超过最大值的数据区则不要求支持。USB系统软件设置中断通道的最大数据区长度。在设备设置期间这一信息将被使用只有此设置有效这个数值是不会改变的。在设置有效期间USB系统软件根据此数值来看分给这个通道的总线时间是否充分。如果充分则通道建立否则不建立。与控制通道不同USB系统不为中断通道调整总线时间。所以对给定的USB系统要么支持此通道要么不支持。实际传送的数据区长度由发送器决定可以小于最大长度。端点所发的数据区中的数据长度不能超过端点的wMaxPacketSize的值。而设备可以通过中断传送来传比此值多的数据。客户软件可以通过中断传送的IRP来接收这批数据这个中断传送要求多个总线处理事务来完成且要求每个事务后都有IRP完成的信号。可以设置一个缓冲区它的长度为wMaxPacketSize的整数倍再加上一个零头。对需要的多个总线事务来说除最后一个外前面的事务都传递wMaxPacketSize长度的包后一个传剩下的零头。这些总线处理事务都在为通道建立的服务周期内进行。如果一个中断传送要传的数据不能放在一个数据区中就分几个区前几个区都是最大长度最后一个包含剩下的长度。当出现以下情况时认为中断传送结束:已传的数据量恰好与期望的数据量同。传了一个有一个数据区的包此包的长度小于wMaxPacketSize或传了一个长度为零的包。如果一个中断传送完成那么主机控制器结束当前的IRP并开始下一个IRP。如果数据区的长度比预料的长当前IRP中止并且只有等到出错条件被确认且清除后才能开始后面的IRP。中断传送对总线访问的限制高速设备和低速设备均可使用中断传送。USB要求不能有多于的顺时间用于阶段传送(同步传送或中断传送)。总线频率和帧的定时限制了一帧内能传的最大中断传送数。对任一USB系统来说高速单字数据区少于个低速单字节数据区少于个。由于实现上的原因主机控制器不一定能够支持此理论上的上限。表列出了不同规格的高速中断传送的情况以及一帧内可能的最大传送数。表列的是对低速设备的相关情况。它们均不包括管理开销的字节。表高速中断传送限制协议开销(字节)(SYNCbytes,PIDbytes,EndpointCRCbytes,CRCbytes,andabyteinterpacketdelay)数据净荷区最大带宽(字节秒)Frame带宽传送最大传送数剩余字节有用数据字节FrameMax中断通道的端点可以指明它要求的总线访问周期。高速设备要求的时间周期可以ms到ms而低速设备从ms到ms。在设置期间USB系统软件根据它们的要求来决定一个服务周期长度。USB提供的服务周期长度可能比设备要求的要短些但不会少于最短的ms。客户软件和设备只能够确定两次传送之间的时间长度不会比要求的周期时间长。但如果传送中出现错误那么周期时间必然要越界。当客户软件有一个中断传送的IRP时端点只是被选中。如果总线轮到此中断传送使用时没有IRP处于待发状态则端点没有机会在此时间传数据一旦一个IRP出现了它的数据在下一个轮到它的时间时被发出。表低速中断传送限制协议开销(字节)数据净荷区最大带宽Frame带宽传送最大传送数剩余字节有用数据字节FrameMax要在USB上进行中断传送必须在每个周期对端口进行访问。主机无法知道何时一个端口准备好了一个中断传送除非它访问这个端点并同时请求一个中断传送等待回答。如果端口无数据需要中断传送就对其请求回送一个NAK信号。如果端口传送数据的会有中断情况发生一定要用中断传送以防中断产生时客户软件误以为IRP结束。长度为的数据净负荷区的传送是合法的而且对某些实现是很有用的。中断传送的数据顺序中断传送可以利用跳变位(toggle位)的机制当成功的进行了一个传送该位就跳变一次。主机总是认为设备是遵守完备的握手协议和重发协议(参见第章)。但如果无论传送成功否设备都在DataData间跳变PID就忽略主机发来的握手信号。但这时客户软件会丢失一些包。因为有错误发生时主机控制器会把设备发的下一个包当作上一个包的重发。一旦在中断通道上检测到一个引起中止的条件或收到设备发来的STALL握手信号所有正等待的IRP都会中止。由软件通过独立的控制通道来消除中止条件。清除后设备和主机都复位到Data的状态。如果总线上出现了一个影响传送的错误则中断处理事务会停止。批传送为了支持在某些在不确定的时间进行的相当大量的数据通信于是设计了批传送类型。它可以利用任何可获得的带宽。批传送有以下几点特性:以可获得带宽访问总线。如果总线出现错误传送失败可进行重发。可以保证数据必被传送但不保证传送的带宽和延迟。只当有可获得的带宽时批传送才会发生。如果USB有较多的空闲带宽则批传送发生地相对频繁如果空闲带宽较少可能有很长时间没有批传送发生。批传送的数据格式USB没有规定批通道上数据流的格式。批传送的方向批通道是一种流通道所以总是单方向的。如果要进行双向传送必须用两个通道。批传送对包长度的限制批传送的端点决定自己可以接收或传送的最大数据净负荷区长度。USB规定最大的批数据净负荷区的长度为、、或字节。这个最大长度是指数据包中数据区的最大长度不包括协议要求的一些管理信息。批端点必须支持规定的最大长度中的一个这个长度将在端点的设置信息中说明。USB并不要求每个数据净负荷区都达到最大长度即如果不够长度的话不必填充至最大长度。所有主机控制器必须分别支持、、或作为最大长度而对更大或更小的长度可以不必支持。在设备设置期间USB系统软件读取端点的最大数据净负荷区长度以保证以后传送的数据净负荷区不会超长。端点传送数据区的包不能超过端点的wMaxPacketSize的值。如果一个批传送的IRP要传送的数据大于一个数据区的最大长度那么要分几个数据净负荷区来传除最后一个区外前几个都达到最大长度。而最后一个包含剩下的数据。如果出现以下情况则认为批传送结束:已传的数据量恰好等于期望传送的量。传了一个不到wMaxPacketSize长度的包或传了一个长度为的包。一旦批传送结束主机控制器中止当前的IRP并开始下一个IRP。如果收到的一个数据净负荷区超长则所有在等待此端点的批传送IRP都将被中止取消。批传

职业精品

精彩专题

上传我的资料

热门资料

资料评价:

/ 37
所需积分:1 立即下载

意见
反馈

返回
顶部

Q