4.8 批传送
4.8 批传送

  为了支持在某些在不确定的时间进行的相当大量的数据通信,于是设计了批传送类型。它可以利用任何可获得的带宽。批传送有以下几点特性:

  • 以可获得带宽访问总线。
  • 如果总线出现错误,传送失败,可进行重发。
  • 可以保证数据必被传送,但不保证传送的带宽和延迟。

  只当有可获得的带宽时,批传送才会发生。如果USB有较多的空闲带宽,则批传送发生地相对频繁,如果空闲带宽较少,可能有很长时间没有批传送发生。

4.8.1 批传送的数据格式

  USB没有规定批通道上数据流的格式。

4.8.2 批传送的方向

  批通道是一种流通道,所以总是单方向的。如果要进行双向传送,必须用两个通道。

4.8.3 批传送对包长度的限制

  批传送的端点决定自己可以接收或传送的最大数据净负荷区长度。USB规定最大的批数据净负荷区的长度为8、16、32或64字节。这个最大长度是指数据包中数据区的最大长度,不包括协议要求的一些管理信息。

  批端点必须支持规定的最大长度中的一个,这个长度将在端点的设置信息中说明。USB并不要求每个数据净负荷区都达到最大长度,即如果不够长度的话,不必填充至最大长度。

  所有主机控制器必须分别支持8、16、32或64作为最大长度,而对更大或更小的长度可以不必支持。

  在设备设置期间,USB系统软件读取端点的最大数据净负荷区长度,以保证以后传送的数据净负荷区不会超长。

  端点传送数据区的包不能超过端点的w Max Packet Size的值。如果一个批传送的IRP要传送的数据大于一个数据区的最大长度,那么要分几个数据净负荷区来传,除最后一个区外,前几个都达到最大长度。而最后一个包含剩下的数据。如果出现以下情况,则认为批传送结束:

  • 已传的数据量恰好等于期望传送的量。
  • 传了一个不到w Max Packet Size长度的包或传了一个长度为0的包。

  一旦批传送结束,主机控制器中止当前的IRP,并开始下一个IRP。如果收到的一个数据净负荷区超长,则所有在等待此端点的批传送IRP都将被中止/取消。

4.8.4 批传送对总线访问的限制

  只有高速设备可以使用批传送。

  端点无法提出对批通道的总线访问频率的要求。USB会协调所有批传送和正等待的IRP的总线访问请求,以获得在客户软件和应用层之间的“最佳”传送效果。总线上的控制传送的优先级比批传送高。

  对于控制传送,有可保证的传送时间,而对批传送,没有。只有当有可用的总线带宽时,批传送才发生。如果有段时间没有被用于其他目的,这段时间将用于批传送。如果正等待的各个批传送是要往不同的端点去的,主机控制器将根据公平访问原则,安排它们的顺序。至于公平访问原则的具体内容,由主机控制器的实现决定。

  系统中的所有批传送是竞争同一个可用的总线时间的,所以USB系统软件可以改变对某个特定端点进行的批传送所占有的总线时间。所以端点和它的客户软件不能够期望有一个特定的批传送的速度。当有设备被加进或移出USB系统或出现对其它设备上端点的请求时,端点和它的客户软件可获得的总线时间将起一定变化。但客户软件不能主观地认为批传送与控制传送的顺序,有时,批传送会在控制传送之前进行。

  总线频率和帧定时限定了在一帧内可进行的最大批处理事务的数量,即一帧内8字节数据净负荷区须少于72个,表4-6列出了不同规格的批处理事务的情况,以及一帧内可能的最大的事务数。数据中不包括管理开销的字节。

表4-6批传送限制
协议开销(13字节)(3 SYNC bytes, 3 PID bytes, 2 Endpoint+CRC bytes, 2 CRC bytes and a 3_byte interpacker delay)
数据净荷区最大带宽Frame带宽/传送最大传送数剩余字节有用数据
字节/Frame
11070001%1072107
22000001%1000200
43520001%884352
85680001%719568
168160002%5121816
3210560003%33151056
6412160005%19371216
Max15000001500

  对于某个批传送,主机控制器可以自由地决定它们的各个事务在某帧或某几个帧中被传送。端点可能在一帧内看到某个批传送的各个事务,或发现它们跨几个不同的帧。由于实现上的原因,主机控制器可能无法支持到理论上的每帧最大事务数。

4.8.5 批传送的数据顺序

  批传送利用toggle位机制来保证接收器和发送器同步,即使在有错发生的情况下,也是如此。当端点被适当的控制传送设置过后,批传送被初始定位在DATA0,主机也将从DATA0开始第一个批传送。如果传送错误而导致出现一个能引起中止的条件或设备发了一个STALL握手信号,所有等待的IRP将被取消。软件通过一个独立的控制通道来清除中止条件,恢复之后,主机和设备的数据toggle都被定位在DATA0。

  如果出现了一个影响事务的总线错误,批传送将被中止。

本文引用地址:http://document.madeinchn.cn/technical-2-1-5-8-1.html  | 复制地址


Powered by KaijuanStudio 2008 © 2000-2009

实时新闻