USB3.2 摘录(一)(下)

简介: USB3.2 摘录(一)

USB3.2 摘录(一)(上):https://developer.aliyun.com/article/1598596

4.4 对传输(transfer)的一般性描述

   每一个发送给接收器的 非同步数据包 通过一个握手包 (ACK TP) 被应答( 同步端点 不应答,非同步端点要为每个收到的数据包进行应答,以报告是否正确传输和是否要重传),但是由于超速有独立的发送与接收路径,所以发送器不必在发送下一个包之前为每次传输的数据包等待一个握手(超速 USB 的一个特色:同时进行发送数据与接收应,当设备检测到数据包错误时或者端点错误,没准备好等,都会通过在应答 TP 包中反应给主机,主机收到的应答 TP 包中记录出错的包顺序号,于是主机从错误的那个顺序号开始重新发送包)。


   超速保护所有的基本数据流和 USB2.0 定义的传输观点,包括传输类型,管道和基本数据流模式。和 USB2.0 的区别在这章被讨论,开始是协议层,然后是传输类型。


   USB2.0 规范利用一系列事务处理的模式。这从本质上意味这主机是在开始下一次事务前完成这一次总线处理(令牌,数据和握手)。分离事务处理也坚持这相同模式,因为他们由完整的高速事务组成,类似所有其他事务在相同的模式下完成。


   超速通过实施发送与接受同步改善了 USB2.0 事务的协议。因此超速USB事务处理协议本质上是一个分离的事务处理协议,它允许在同一时间不止一个 OUT 总线事务处理(设备可以多个)和至多一个 IN 总线事务处理(主机只有一个)在总线上活动。设备对事务处理的应答的命令是确定在每个端点基础上(例如,如果一个端点接收三个 DP 包,端点必须为每一个 DP 包返回 ACK TP 告知收到 DP 包)。


   USB2.0 协议要在继续下一个总线事务处理之前完成整个 IN 或 OUT 事务(令牌,数据和握手包连续传输),所有的来自主机的传输本质上是广播到 USB2.0 总线上的每一个活动设备,与之比较起来,超速协议不进行广播任何包(ITP 除外),包只穿过需要达到目标接收方的链路,主机通过发送握手请求(ACK TP) 或者发送数据(OUT)开始所有的事务,设备以数据或者握手来应答。假如设备没有有效的数据(IN)或者不能接受数据(OUT),它会以一种包(NRDY)来应答以指示不能进行此操作。之后,当设备准备好发送或者接收数据时,它会发送一个包给主机指示它已经准备好重新进行事务处理。除此之外,超速提供将链路转变成指定的低电源状态或者退出低电源状态的能力。低电源链路状态可以在软件使能以后由软件控制或者自发的硬件控制来进入。还提供一个自动将主机与设备之间的所有链路由非活动电源状态转变成活动电源状态的机制。


   设备在每个端点的描述符中记录每个端点的最大包尺寸。这个尺寸只指示负载数据块长度,不包括链路层和协议层的包头(DPH)。超速的带宽分配相似于 USB2.0。

4.4.1 Data Bursting(突发数据)

   突发数据通过消除在每个基于数据包应答的等待时间提高效率(即无需等待应答就能处理数据)。每个超速设备上的端点指示了它在必须等待一个明显握手之前能够发送/接受的包数量(称之为最大数据突发大小)。最大数据突发大小是一个每个端点各自的能力,一个主机从与端点相关的 SuperSpeed Endpoint Companion descriptor 描述符决定一个端点的最大数据突发大小。


   主机在每个事务处理的基础之上能动态改变突发大小,直到最大突发大小被配置了。主机能使用不同突发大小的一个例子,不受限于,但是包括一个主机上的公平决策和中断流的重试。当端点是 OUT 类型,主机能容易控制突发大小(接收器必须总是能管理突发大小事务处理),当端点为 IN 类型,主机能基于每次事务处理限制端点突发大小,是通过在发送给设备的应答包中的一个域来限制。

4.4.2 IN transfer(输入传输)

   主机和设备应该延续传输类型和端点属性的约束。一个主机通过发送一个 ACK 确认请求包给设备(IN)开始请求一次传输。这个确认(握手包)包包含了数据包路由选择到想要的端点所需要的地址信息。主机告知设备它可以发送的数据包数量和期望来自于设备第一个包的序号(0)。在应答中,端点会发送正确的序列号的数据包给主机,主机发的确认包也暗中应答了之前成功收到的数据包(以及请求下一个顺序号的数据包)。


   注意:即使主机需要为每一个收到的数据包发送一个确认包,但是设备可以不需等待任何确认包就发送所需要的数据包数量。


   超速总线的一次 IN 传输由一个或多个 IN 事务处理组成,一个 IN 事务处理由一个或多个包组成(比如主机发送 ACK TP,设备发送 DP 或 NRDYTP 或 STALL )。当下面的任何条件发生,都能结束 IN 传输:


所有数据已经成功传送;

设备端点发送一个 短包(比最大包尺寸小的包)作为应答;

端点响应错误。

   ( Host 发送 IN packet 之后,设备可以持续发送多个数据包,不需要等待每个包都得到 host 的确认包(ACK TP),因为超速是 dual-simplex(全双工)的,但是设备收到的总的认可包数量应该和设备发送的数据包数量一样。)

4.4.3 OUT transfer:

   主机通过发送一个突发数据包给设备开始一次 OUT 传输,每一个数据包的(DPH)包含需要路由选择目标端点的地址信息,也包含数据包的顺序号(作为区分不同发送顺序的数据包标号)。对于一个非同步事务,设备返回一个确认包,其中包含下个要接收的数据包顺序号和隐含地应答当前数据包。


   注意虽然设备需要为每个收到的数据包发一个确认包,但是主机不需等待一个应答就能发送最大的突发数据包数量给设备。


   OUT transfer 在下列情况下时会结束:


所有数据已经成功传送;

Host 发送了一个 短包;

端点响应错误。

   四种 transfer 类型:control、bulk、interrupt、isochronous transfer。用意同 USB2.0,但是 bulk 最大包大小增加为 1024B,control 端点最大包大小增加为 512B。control 端点不支持 burst, bulk 可以 burst 1~16, bulk 还增加了 Stream 能力; interrupt,isochronous 可以 bust 1~16(当最大突发大小为 1 时,对于同步传输,其最大包大小能为 0-1024 之间任意大小,对于中断端点,最大包大小可以在 1-1024 之间任意大小;如果最大突发大小为 >1 时,最大包大小只能为 1024)

4.4.5 控制传输

   控制传输的目的与特点与 USB2.0 协议完全相同。这个规格的协议层章节详细描述了用于完成控制传输的包,总线事务处理和事务处理流程。设备架构那章定义了完整系列的设备使用的标准命令编码。


   每个设备需要启动默认控制管道作为一个消息管道。这个管道用来进行设备初始化和管理,用来访问设备描述符和向设备请求对其进行操作(在设备级)。控制传输必须维持相同的在 USB2.0 中定义的请求(获取描述符等命令)。


   超速系统会制造一个最好的条件情况支持主机与设备间的控制传输。正如 USB2.0,功能和客户软件不能为控制传输主动要求指定特定的带宽(不是能分配10%的带宽吗?)。

4.4.5.1 控制传输包大小

   控制端点有一个固定的最大控制传输数据包大小为 512 字节(同时反应了端点缓存大小)。并且其最大突发大小为 1(控制传输不支持突发数据?)。这些最大值适用于在控制传输数据阶段的所有的数据事务处理。参考 8.12.2 章,详细描述了超速控制传输的建立(setup)与数据阶段(data)。


   超速设备在设备描述符的 bMaxPacketSize 域中必须记录一个 09H 的值。默认控制管道的默认最大包大小的解码规则在 9.6.1 章被给出(2 的 9 次方 = 512B)。默认控制管道必须支持最大顺序值为 32(在 [0-31] 范围的顺序值被使用)。USB2.0 与超速之间,设备到主机和主机到设备的数据阶段数据传输和完成一般没有什么改变。

4.4.5.2 控制传输带宽需求

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


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


控制传输事务处理,可能与其他被定义功能端点的事务处理一同被安排

控制传输的重试,不能优先于其他最好情况的事务处理

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

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

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

4.4.5.3 控制传输数据序列

   增强型 SuperSpeed 协议保留了通用串行总线规范 2.0 修订版 5.5.5 中定义的控制传输的消息格式和通用阶段顺序。增强型 SuperSpeed 协议定义了对控制传输的设置和状态阶段的一些更改。但是,通用串行总线规范修订版 2.0 第 5.5.5 节中定义的正常和错误恢复方案的所有排序要求都直接映射到 SuperSpeed 协议。

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 字节少的数据包(短包)

应答 STALL 握手包

4.4.6.2 块传输带宽需求

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


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


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


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

4.4.6.3 块传输数据序列

   块事务处理为数据可靠传输使用标准的突发序列,在 8.10.2 章定义。块端点通过一次合适的控制传输(SetConfguration,Setlnterface,ClearEndpointFeature)被初始化成最初的发送/接受顺序号和突发大小值(8.12.1.2 和 8.12.1.3)。同样,主机在已经成功完成了上面提到的合适的控制传输后,配置块传输管道初始的发送/接收序列号和突发大小值。超速块管道的停止条件跟 USB2.0 定义的块端点一样同样有副作用。从停止条件中恢复也跟 USB2.0 相同。块管道停止条件包括 STALL 握手包作为一次事务处理的应答或者由于发送错误主机事务处理的重试次数消耗完的应答。

4.4.6.4 块流(Bulk Streams)

   标准 USB 批量管道描述了通过主机内存缓冲区和设备端点在主机和设备之间单向移动(FIFO) 数据的能力。增强型 SuperSpeed 流为多流模型提供协议级支持,并利用 “流” 管道通信模式(请参阅通用串行总线规范第 5.3.2 节,修订版 2.0)。


   流在主机和设备之间使用 Stream 协议进行管理。每个流都分配有一个流 ID (SID)。


   流协议定义了握手,该握手允许设备或主机建立与端点关联的当前流 (CStream) ID。主机使用 CStream ID 选择将用于管道上的后续数据传输的命令或特定于操作的端点缓冲区(请参阅图 4-3)。设备使用 CStream ID 选择将使用的功能数据缓冲区。

   图 4-3 中的示例表示一个 IN Bulk 管道,其中已建立大量 Stream。与主机内存中的每个 Stream 关联的是一个或多个用于接收 Stream 数据的 Endpoint Buffers。在设备中,有相应的命令或操作特定的功能数据要传输到主机。


   当设备具有特定 Stream(本示例中为 G)的可用数据时,它会发出带有 CStream ID 标记的 ERDY,并且主机将开始向标记为 CStream ID 的设备发送 ACK TP。设备将通过返回包含与 CStream ID 关联的功能数据的 DP 进行响应,该 ID 也使用 CStream ID 进行标记。当主机接收到数据时,它使用 CStream ID 来选择将接收数据的端点缓冲区集。


   当功能数据耗尽时,设备将终止流(请参阅第 8.12.1.4 节)。如果主机的端点缓冲区空间不足,则主机也可以终止流。


   例如,可以使用流来支持大容量存储设备命令队列所需的无序数据传输。


   标准批量端点具有一组端点缓冲区(Endpoint Buffers)与之关联。Streams 将端点可访问的主机缓冲区数量从 1 扩展到最多 65533。主机缓冲区和流 ID 之间存在 1:1 映射。


   设备类定义的方法用于协调主机用于选择端点缓冲区和设备用于选择与特定流关联的功能数据的流 ID。通常,这是通过带外机制(例如,另一个端点)完成的,该机制用于在主机和设备之间传递有效的流 ID 列表。


   当前流的选择可以由主机或设备启动,在任何一种情况协议都提供了一种拒绝选择的方法。例如,如果没有可用的端点缓冲区,则主机可能会拒绝设备启动的流选择。或者,如果没有可用的功能数据,设备可能会拒绝主机启动的流选择。设备类定义了主机或设备何时可以选择流,以及当流被拒绝时将采取的操作(请参阅第 8.12.1.4 节)。


   供应商和设备类别定义的算法的组合决定了设备如何计划流。Stream 协议提供了用于开始、停止和切换 Streams 的方法(请参阅第 8.12.1.4 节)。


   由 Stream 协议定义的机制允许设备或主机对 Stream 进行流控制。这些机制与标准的批量流量控制机制重叠。


   主机还可以启动或停止流。例如,如果主机的 Stream 缓冲区空间不足,主机将停止 Stream。当主机控制器通知设备此情况时,设备可能会切换到另一个流,或者在主机收到更多缓冲区时等待并继续相同的流。


   Stream 协议还提供了一种机制,允许主机在将端点缓冲区添加到管道时异步通知设备。这在主机因耗尽端点缓冲区而必须终止流的情况下非常有用;但是,设备仍有更多功能数据需要传输。如果没有此机制,设备将不得不定期重试启动 Stream (影响电源管理) ,或者需要长时间延迟的带外方法。


   由于流在标准批量管道上运行,因此错误将停止管道,从而停止所有流活动。与标准散装管道一样,通过单独的控制管道,通过软件干预实现了消除停止条件。


   最后,Streams 显著增加了批量终结点的功能,同时对在主机和设备中支持该功能所需的其他硬件的影响最小。

4.4.7 中断传输

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


能保证最大的服务间隔

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

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


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


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

中断管道是一条流式管道,因此总是单向的。

4.4.7.1 中断传输包大小

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


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


   主机被要求支持超速中断端点,主机应该支持所有允许的中断包大小和突发大小的组合。主机要确保在一次突发事务处理中发送到端点的数据包大小不能超过端点的最大数据包大小。在突发事务处理中主机也不能发送超过端点最大突发大小的数据包数量。中断端点应该总是发送带有数据域小于等于端点最大数据包大小的包,如果中断传输有比对应端点最大数据包大小更多的信息,所有的突发事务处理的数据都要求为最大包大小,除了突发事务处理的最后一个数据包,就是包含剩下的数据。中断传输可以包含多个突发事务。


   中断传输是在端点做以下几个完成的:


已准确传输的数据量与预期的数据量相符

传输了比最大包尺寸小的数据包(短包)

应答 STALL 握手包

4.4.7.2 中断传输带宽需求

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


   增强型 SuperSpeed 中断端点在每个服务间隔内最多可以移动三个最大大小的数据包(3 x 1024 字节)。对于中断传输,主机没有方法决定端点是否在没有访问端点和请求一个中断传输下进行源/同步数据。如果一次 IN 中断端点没有中断数据要传输或者 OUT 中断端点没有充足 buffer 接受数据,当被主机访问的话,会以一个流控制进行应答。


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

4.4.7.3 中断传输数据序列

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


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

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 同步传输带宽需求

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


   SuperSpeed 同步端点每个服务间隔最多可以进行 3 个突发事务,每个突发事务最多 16 个最大大小的数据包(3 x 16 x 1024 字节)。主机会在每个服务周期发送数据到端点或者从端点请求数据。注意, 如果端点没有同步数据发送而被主机访问请求数据,则会发送一个 0 长度包作为数据请求的应答。


   主机可以在合适的服务间隔的任何时刻访问端点。同步传输端点不应该尝试在事务处理之间假定一个固定空间(两次事务处理间相隔的时间不固定?),同步端点只能假定它在服务周期会收到一次事务处理的尝试。轮询服务周期发生的错误可以阻止数据的成功传输。但是由于同步事务处理中的包没有应答,主机没有方法知道包没有成功传输因此不会重试包传输。

4.4.8.3 同步传输数据序列

    同步端点总是在轮询服务周期中从包顺序号 0 开始发送数据包。每个在轮询服务间隔中被依次连续发送的的数据包都带有下一个递增的顺序号。顺序号应该从 031 循环。当发送了 32 个包后,又从 0 开始发送。同步端点不支持重试,不能应答流控制。


4.4.9 设备告知(非管道模式)

    设备告知是一种为设备向主机进行设备级和总线级的事件通知的异步通信标准方式。这个特色没有映射到为标准传输类型定义的管道模式。设备告知总是由设备开始。数据流通知总是从设备到主机。


5 机械(Mechanical)

6 物理层(Physical Layer)

目录
相关文章
|
4月前
|
机器学习/深度学习 流计算
USB3.2 摘录(五)(上)
USB3.2 摘录(五)
76 1
|
4月前
USB3.2 摘录(五)(下)
USB3.2 摘录(五)
52 1
|
4月前
|
缓存
USB3.2 摘录(一)(上)
USB3.2 摘录(一)
68 0
USB3.2 摘录(一)(上)
|
4月前
|
安全 索引
USB3.2 摘录(11)
USB3.2 摘录(11)
58 1
|
4月前
USB3.2 摘录(八)
USB3.2 摘录(八)
54 2
|
4月前
USB3.2 摘录(六)
USB3.2 摘录(六)
45 1
|
4月前
|
存储 运维
USB3.2 摘录(七)
USB3.2 摘录(七)
55 1
|
4月前
|
存储 算法
USB3.2 摘录(10)
USB3.2 摘录(10)
64 1
|
4月前
|
存储 算法
USB3.2 摘录(九)
USB3.2 摘录(九)
50 1
|
4月前
GIGE 协议摘录 —— 引导寄存器(四)(下)
GIGE 协议摘录 —— 引导寄存器(四)
55 1

热门文章

最新文章