USB3.0协议(中文) - 图文 下载本文

4.3.1.2超速包介绍:

超速包以16字节的头部开始。一些包只包含有头部(TP,LMP,ITP)。所有的头部以用于决定包处理方式的包类型信息开始。头部有16位CRC保护,以2个字节链路控制字(link control word)结束。依赖于类型,大多数包包含有路由信息(路由字符)和一个三参数的设备地址(设备地址,端点号和方向)。路由字符给主机用来指导包被发送到被指向的拓扑路径。设备发送的包被集线器默认路由选择,集线器总是把数据从任何可见的下游端口传到上游端口(这一过程不需要路由信息)。

有四种基本类型的包:(协议层)

·Link Management Packet(LMP),只穿过一对直接连接的端口(链路两端),主要用来管理链路。

·Transaction Packet(TP,事务包),穿过所有直接连接主机与设备的链路,用来控制流式数据包,配置设备和集线器等(任何传输类型的事务处理都用到)。注意一个Transaction Packet是没有数据的。(控制命令包,TP包就是一个包头(DPH))

·Data Packet(DP),穿过所有直接连接主机与设备的链路,数据包有两部分组成,一个和TP包相似的数据包头(DPH)和带有数据块加上用来确保数据完整性的32位CRC的数据包(DDP)

·Isochronous Timestamp Packet(ITP)。它被主机用来多点广播到所有的活动的链路上。

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)来应答以指示不能进行此操作。之后,当设备准备好发送或者接收数据时,它会发送一个包给主机指示它已经准备好重新进行事务处理。除此之外,超速提供将链路转变成指定的低电源状态或者退出低电源状态的能力。低电源链路状态可以在软件使能

5

以后由软件控制或者自发的硬件控制来进入。还提供一个自动将主机与设备之间的所有链路由非活动电源状态转变成活动电源状态的机制。

设备在每个端点的描述符中记录每个端点的最大包尺寸。这个尺寸只指示负载数据块长度,不包括链路层和协议层的包头(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或NRDY TP或STALL)。 当下面的任何条件发生,都能结束IN传输:

·所有数据已经成功传送;

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

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

6

4.4.3 OUT transfer:

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

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

OUT transfer在下列情况下时会结束: ·所有数据已经成功传送; ·Host发送了一个短包; ·端点响应错误。

7

四种transfer类型:control、bulk、interrupt、isochronous transfer。用意同USB2.0,但是bulk 最大包大小增加为1024B,control端点最大包大小增加为512B。control 端点不支持burst,bulk可以burst 1~16,bulk还增加了Stream能力;interrupt、isochronous可以burst 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与超速之间,设备到主机和主机到设备的数据阶段数据传输和完成一般没有什么改变。

8