USB3.0协议规范中文解读 - 图文

4.4.5.2 控制传输带宽需求

设备没有方法为控制管道指示想要的带宽。主机通过权衡所有控制管道总线访问需求与在那些管道上挂起事务处理来提供一个最好的情况给客户软件和功能设备之间的传输。这个规则跟USB2.0相似。

超速需要保留有效的总线带宽给控制管道作为以下使用:

·控制传输事务处理可能与其他被定义功能端点的事务处理一同被安排 ·控制传输的重试不能优先于其他最好情况的事务处理

·如果有控制传输和块传输为多个端点挂起,根据一个主机控制器相关的公平规则,不同端点的控制传输被选择服务。

·当一个控制端点传输一个流控制事件,主机会移除来自于被安排的活动端点。一旦收到一个来自于设备准备好的通知,主机会对这个端点恢复传输。

这些要求允许主机与设备间的控制传输周期性的通过有最好条件的超速总线移动数据。系统软件的任意操作行为在USB2.0 5.5.4定义。超速控制传输同样适用。

4.4.5.3 控制传输数据流程

超速保护消息格式和在USB2.0定义的控制传输的一般阶段流程。超速协议定义了对控制传输建立和状态阶段的相同改变。

4.4.6 块传输

此规格的8.12.1章详细描述了用来完成块传输的包,总线事务处理和事务处理流程。块传输类型是用来支持想要跟相当大的海量数据通信设备,传输能使用任何可用的超速带宽。超速块传输功能端点提供以下:

·对基于有限带宽的超速总线访问

·保证数据的发送,但是不保证带宽和发送时间 超速维持下面的块传输管道特征:

·对块传输管道通信流没有强制固定的数据结构

·块传输管道是一个流式管道,因此总是有通信流进出主机。如果应用需要一个双向块传输通信流,必须使用两个块传输管道(一个OUT,一个IN)。

标准USB块传输管道提供移动数据流的能力。超速增加了协议级支持多倍流模式的流式概念。

4.4.6.1 块传输数据包大小

块传输端点应该在端点描述符中设置最大数据包大小为1024字节。也要指定端点在超速总线上能够接受或发送的突发大小。可允许的块传输端点突发大小在1到16的范围。所有的超速块传输端点要支持[0-31]的顺序值。

主机需要支持任何超速bulk传输端点和所有的bulk传输突发大小。主机要确保发送给端点的数据包的数量不能超过描述符中定义的最大包大小。此外,发送的突发数据包不能超过记录的最大突发大小。

块传输功能端点发送的数据包,其数据域必须总是小于等于1024字节。如果块传输数据量超过1024,则突发事务中所有数据包除了最后一次,都必须是1024字节大小。最后一次是剩下的不足1024字节的数据。块传输可以持续多个总线事务处理。块传输在端点有以下情况时完成:

·已经准确传输完了所期待的数据

·传输了一个比1024字节少的数据包(短包)

9

·应答STALL握手包

4.4.6.2 块传输带宽需求

正如USB2.0,块传输功能端点没有方法为块管道指定想要的带宽。块事务处理只发生在超速总线上有可用带宽的基础上。超速提供一个最好的条件在客户软件和功能设备间传输块数据。控制传输对总线操作比块传输更有优先权(对总线操作的优先级,控制传输比较高)。当有多个端点的bulk传输挂起时,主机会根据一个公平访问原则提供事务处理的机会给每个端点,这就是主机依赖性操作。

所有在系统中挂起的块传输竞争相同的有效总线时间。端点和客户软件不能为块传输假定配置一个指定的服务率(总线带宽不能为块传输主动分配)。总线时间被提供给客户软件,由于其他设备被插入到系统或者从系统中移除或者因为块传输被其他功能端点需要,端点能被改变。客户软件不能假定在块传输和控制传输之间的顺序,即在一些情形中,块传输能在控制传输的前面进行。

主机在带有块传输端点的事务处理中能使用任何在1和记录的最大的突发大小,更高效的利用有效总线带宽。例如,可能有比有效总线带宽更多的块传输,所以主机可以每次使用事务中更小的数据突发,以提供公平服务给所有挂起的块数据流(因为块传输多,有效带宽少,所以为了能公平给所有等待的块传输机会,主机会使用事务处理中比较小的数据突发大小,从而将有效带宽充分平均分配给所有块传输)。

当一个块传输端点传输一次流控制事件(在8.10.1章定义)时,主机会从安排的活动端点中移除它,主机会基于接收到来自于设备的准备好通知恢复端点的传输。

4.4.6.3 块传输数据流程

块事务处理为数据可靠传输使用标准的突发序列,在8.10.2章定义。块端点通过一次合适的控制传输(SetConfiguration, SetInterface, ClearEndpointFeature)被初始化成最初的发送/接受顺序号和突发大小值(8.12.1.2 和8.12.1.3)。同样,主机在已经成功完成了上面提到的合适的控制传输后,配置块传输管道初始的发送/接收序列号和突发大小值。

超速块管道的停止条件跟USB2.0定义的块端点一样同样有副作用。从停止条件中恢复也跟USB2.0相同。块管道停止条件包括STALL握手包作为一次事务处理的应答或者由于发送错误主机事务处理的重试次数消耗完的应答。

4.4.7 中断传输

中断传输类型用来支持带有轮询服务间隔需要高可靠性传输小数量数据的设备。这个规格的协议层章详细描述了与中断传输相关的包,总线事务和事务处理流程。超速中断传输类型一般提供以下方面:

·能保证最大的服务间隔

·能保证在下一次服务间隔中尝试重新传输

在每个服务周期中为中断端点尝试中断传输,保留一定带宽保证在每个服务间隔尝试传输。一旦传输成功,就不尝试另外一次传输(在此周期内),直到下一个轮询服务周期到来(保证每个服务周期中尝试一次中断传输)。如果端点以没有准备好的通知或者一个指示不能接收任何包的ACK应答,则主机不会在此次服务中尝试另外一次到端点的传输,除非接收到准备好的通知。然后主机必须在收到(准备好)通知后的2个服务周期内服务端点。端点服务周期的请求在它的端点描述符中描述。

超速维持中断管道下面的特性:

·没有数据内容结构用于中断管道通信流

10

·中断管道是一条流式管道,因此总是单向的。 4.4.7.1 中断传输包大小

中断传输端点指定了超速总线上可以接受的/发送的最大数据包大小,对于支持突发次数(burst size)大于1的中断端点,仅仅允许的最大数据包大小为1024字节;对于突发次数等于1的中断端点,最大数据包大小能为1到1024的任何值。中断端点允许的最大的突发次数是3. 所有的超速中断端点应该支持在范围[0-31]的顺序值。

超速中断端点只用来移动带有界限服务间隔的小数量数据。超速协议不要求中断事务处理的包为最大化大小(即不要求每个数据包都为1024字节大)。

主机被要求支持超速中断端点,主机应该支持所有允许的中断包大小和突发大小的组合。主机要确保在一次突发事务处理中发送到端点的数据包大小不能超过端点的最大数据包大小。在突发事务处理中主机也不能发送超过端点最大突发大小的数据包数量。

中断端点应该总是发送带有数据域小于等于端点最大数据包大小的包,如果中断传输有比适应端点最大数据包大小更多的信息,所有的突发事务处理的数据都要求为最大包大小,除了突发事务处理的最后一个数据包,就是包含剩下的数据。中断传输可以包含多个突发事务。

中断传输是在端点做以下几个完成的: ·已经传输了所需精确的数据量

·传输了比最大包尺寸小的数据包(短包) ·应答STALL握手包

4.4.7.2 中断传输带宽需求

周期性端点(中断和同步)可以被分配到超速总线可利用带宽的80%。中断管道的端点通过端点描述符指定它想要的服务间隔,中断端点能指定一个想要的周期2(bInterval-1) x 125 μs,bInterval值是在范围1到(包含16)16。USB系统软件会在配置期间使用这个信息,决定能被采用的连续周期。被系统提供的周期可以缩到比设备想要的还短,最短到超速定义的周期大小(也是参考的总线轮询周期125μs)。注意总线上的错误能阻止中断事务处理在总线上的成功传输,因此超过了想要的周期。

超速中断端点在每个服务周期能提升到三个最大数据包的大小(3x1024bytes)。对于中断传输,主机没有方法决定端点是否在没有访问端点和请求一个中断传输下进行源/同步数据。如果一次IN中断端点没有中断数据要传输或者OUT中断端点没有充足buffer接受数据,当被主机访问的话,会以一个流控制进行应答。

当有中断数据挂起避免客户软件错误通知传输完成的时候,端点应该只提供中断数据。一个数据负载为零长度的数据包是一次有效传输,可以用来进行某些操作。主机可以在轮询服务周期中任何时刻访问一个端点。 中断端点不应该在尝试事务处理之间分配固定的空间。中断端点只能假定它在轮询服务周期会收到一次事务处理尝试。错误能阻止轮询服务周期中的数据成功传输,主机不被要求在同一个轮询服务周期中重新尝试事务处理,只在下一个轮询服务周期中重试事务处理。

4.4.7.3中断传输数据流程

中断事务处理使用标准的突发流程进行可靠的数据传输(在8.10.2)。中断端点通过适当的控制传输(SetConfiguration, SetInterface, ClearEndpointFeature)被初始化成初始的发送或者接收顺序号值和突发大小(参考8.12.4.1和8.12.4.2)。主机在完成了合适的控制传输后成功为中断管道设置初始的发送/接收序列好和突发大小。

超速中断管道停止条件和USB2.0定义的中断端点一样有相同的副作用。从停止条件中恢复也跟USB2.0相同(Section 5.7.5 in the Universal Serial Bus Specification, Revision 2.0.)。中断管道停止条件包含STALL握手包对事务处理应答或者对由于发送错

11

误导致主机事务处理尝试次数的消耗的应答。

4.4.8 同步传输

正如USB2.0一样,超速同步传输类型是用来支持想要能容忍错误,周期性的轮询服务的传输流。超速跟USB2.0一样不发送起始帧,但是时序信息要通过同步时间戳包(ITP)被发送给设备。这个规格的协议层章详细描述了用来完成同步传输的包,总线事务和事务处理流程。也描述了怎么样传送时序信息给设备。超速同步传输类型提供下面的:

·保证在超速总线上一定范围延迟尝试事务处理的带宽 ·只要数据被提供给管道,保证通过管道的数据率

同步事务处理在每个服务周期在同步端点上被尝试。超速总线上承认的同步端点被保证它们需要的总线带宽。主机在对设备的特殊端点进行轮询服务间隔的任何时候都能请求来自设备的数据或者发给设备数据。被要求的端点轮询服务周期在端点描述符中被定义。超速同步传输是用来支持一个以相同平均速率产生和消耗数据的发送器/接受器。

超速同步管道是一种流管道,总是单向的管道。端点描述符确定被给定的同步管道通信流是流向主机还是流出主机。如果设备需要双向的同步通信流,则要使用两个同步管道,一个输入,一个输出。

无论任何时候当同步传输需要穿过非活动链接, 超速电源管理都会妨碍到同步传输。结果延迟会导致数据在服务周期内没有到达。为防止这种情况,超速定义了PING和PING_RESPONSE机理(参考8.5.7),开始一次同步传输之前,主机可以发送一个PING包给设备,设备以PING_RESPONSE包应答通知主机所有连到设备的链路在活动状态。

4.4.8.1 同步传输包大小

同步传输端点指定了端点在总线上能够接收/发送的最大数据包大小。对于支持突发尺寸大于1的同步端点,允许的最大数据包大小只能为1024字节;对于支持突发尺寸等于1的同步端点,最大数据包大小可为0到1024之间的任何值。同步端点允许的最大突发尺寸为16.但是同步端点能在同一个服务周期中请求3次突发事务处理。

超速协议不要求同步数据包一定要为最大数据包大小,但是如果传输的数据量比最大数据包尺寸小的话,数据包不被填满。

主机应该支持超速同步端点所有的同步数据包大小和突发大小。主机应该确保发送到端点的数据包量小于端点描述符中定义的最大数据包大小;还要确保突发事务处理中的数据包量不能超过端点的最大突发大小。

同步端点应该总是发送数据域小于等于端点的最大数据包大小的数据包。如果同步传输对端点最大包大小有充足的信息,突发事务处理中的所有数据都要求为最大数据包大小,除非突发事务中最后一次数据包,即包含了剩下的数据。同步传输能进行几次突发事务处理。

4.4.8.2 同步传输带宽需求

周期性端点(中断和同步传输)能分配到80%的有效超速总线带宽。同步管道的端点通过端点描述符指定它想要的轮询间隔。同步端点能指定想要的周期2(bInterval-1) x 125 μs。bInterval的范围是1-16. 系统软件将在配置时候使用这个信息决定端点是否能被主机安排。注意总线错误能阻止同步事务在总线上的的成功进行。

超速同步端点在每个服务周期能进行3次最大突发大小为16的事务处理的数据包传输(3x16x1024bytes)。主机会在每个服务周期发送数据到端点或者从端点请求数据。注意,如果端点没有同步数据发送而被主机访问请求数据,则会发送一个0长度包作为

12

联系客服:779662525#qq.com(#替换为@)