12000 27% 37 12 8 24000 29% 25 24 Max 187500 187 4.5.5控制传送的数据顺序 要进行控制传送,先要由主机向设备发一个总线建立(Setup)信息。它描述了控制访问 的类型,设备将执行此控制访问。这个阶段之后,是零个或多个控制数据信息的传送,这 是进行访问的具体信息。最后,由状态信息的传送来结束这次控制传送,允许端点将这次 控传的状态回送给客户软件。这次控传完成之后,可以进行对这个端点的下一个控传,如 4.5.4节所述,每次控传何时在总线上进行由主机控制器的具体实现决定。 在数据传送阶段和状态信息回传阶段,可能由于设备自身的原因,设备处于“忙”状态。 此时端点可设法表明自己正忙(见第7、8章),主机将试着在稍后时间重传一次。 如果在上一个控传结束之前,端点又收到一个总线建立信息,设备将结束现未完成的传 送,转而处理新的控传。正常情况下,是不会早发总线建立信息的,不过当上一个控传因 错误而被中止后,主机可发下一个控传的总线建立信息。在端点看来,这是在上一个控传 结束前过早发出的。 一旦主机遇到一个引起中止的条件或检测到一个错误,端点可以通过接收下一个Setup 包的PID来恢复,也就是说,不一定必须从别的通道进行恢复。对于缺省控制通道,如果 端点收不到Setup的PID时,最终会要求设备复位来清除中止条件或错误条件。 在控传中,USB提供了强大的错误检测功能和错误恢复和重传功能。传送器和接收器可以 保持阶段的同步,既关于他们在控传的哪个阶段这个问题上保持同步。并且以最小的代价 恢复。接收器可以识别一个数据重传包或状态信息重传包,因为包中带有数据重传的指示。 一个发送器可以通过对方给它发的握手信息确知它发的数据重送包和状态信息包己被成功 接收,除了Setup包以外,协议可以将一个重送的包与原来的包区分开来,Setup包可以因 为出错而重传,但无法说明此包是重传的,还是原来的。 4.6同步传送 在非USB的环境下,同步传送意味着恒定速率、错误容忍(error-tolerant)的传送。在 USB环境下,要求同步传送能提供以下几点: ·固定的延迟下,确保对USB带宽的访问。 ·只要数据能提供得上,就能保证通道上的恒定数据传送速度。 ·如果由于错误而造成传送失败,并不重传数据。 当SB同步传送类型被用来支持同步的源和目的时,使用这个传送类型的软件并不要求 是同步的,4.10中将详细介绍USB上的同步数据的处理。 4.6.1同步传送的数据格式 对于同步传送的通道(同步通道),USB并不对数据格式做要求。 4.6.2同步传送的方向 同步通道是一种流通道,所以是单方向的。在对端点的描述中指明了与它相连的通道的 数据流方向。如果设备要同步的双向流的话,只好用两个同步通道,一个流进,一个流出。 4.6.3同步传送中包的大小的限制 同步通道的端点确定了数据区的最大长度,USB在设置端点期间,使用这一个信息,看是 否可在每帧内为最大长度的数据区留下足够的时间。如果可以,设置端点成功:否则,不 成功。 USB系统软件可为一个控制传送的通道调整最大数据区长度,但无法为同步通道进行如此 调整。在确定的USB设置下,同步通道要么被支持,要么不被支持。 USB限制了同步通道的最大数据区长度为1023字节,表4-3列出了不同规格的同步传送
4 12000 27% 3 37 12 8 24000 29% 3 25 24 Max 187500 187 4.5.5 控制传送的数据顺序 要进行控制传送 先要由主机向设备发一个总线建立 Setup 信息 它描述了控制访问 的类型 设备将执行此控制访问 这个阶段之后 是零个或多个控制数据信息的传送 这 是进行访问的具体信息 最后 由状态信息的传送来结束这次控制传送 允许端点将这次 控传的状态回送给客户软件 这次控传完成之后 可以进行对这个端点的下一个控传 如 4.5.4 节所述 每次控传何时在总线上进行由主机控制器的具体实现决定 在数据传送阶段和状态信息回传阶段 可能由于设备自身的原因 设备处于 忙 状态 此时端点可设法表明自己正忙(见第 7 8 章) 主机将试着在稍后时间重传一次 如果在上一个控传结束之前 端点又收到一个总线建立信息 设备将结束现未完成的传 送 转而处理新的控传 正常情况下 是不会早发总线建立信息的 不过当上一个控传因 错误而被中止后 主机可发下一个控传的总线建立信息 在端点看来 这是在上一个控传 结束前过早发出的 一旦主机遇到一个引起中止的条件或检测到一个错误 端点可以通过接收下一个 Setup 包的 PID 来恢复 也就是说 不一定必须从别的通道进行恢复 对于缺省控制通道 如果 端点收不到 Setup 的 PID 时 最终会要求设备复位来清除中止条件或错误条件 在控传中 USB 提供了强大的错误检测功能和错误恢复和重传功能 传送器和接收器可以 保持阶段的同步 既关于他们在控传的哪个阶段这个问题上保持同步 并且以最小的代价 恢复 接收器可以识别一个数据重传包或状态信息重传包 因为包中带有数据重传的指示 一个发送器可以通过对方给它发的握手信息确知它发的数据重送包和状态信息包已被成功 接收 除了 Setup 包以外 协议可以将一个重送的包与原来的包区分开来 Setup 包可以因 为出错而重传 但无法说明此包是重传的 还是原来的 4.6 同步传送 在非 USB 的环境下 同步传送意味着恒定速率 错误容忍(error-tolerant)的传送 在 USB 环境下 要求同步传送能提供以下几点 固定的延迟下 确保对 USB 带宽的访问 只要数据能提供得上 就能保证通道上的恒定数据传送速度 如果由于错误而造成传送失败 并不重传数据 当 USB 同步传送类型被用来支持同步的源和目的时 使用这个传送类型的软件并不要求 是同步的 4.10 中将详细介绍 USB 上的同步数据的处理 4.6.1 同步传送的数据格式 对于同步传送的通道(同步通道) USB 并不对数据格式做要求 4.6.2 同步传送的方向 同步通道是一种流通道 所以是单方向的 在对端点的描述中指明了与它相连的通道的 数据流方向 如果设备要同步的双向流的话 只好用两个同步通道 一个流进 一个流出 4.6.3 同步传送中包的大小的限制 同步通道的端点确定了数据区的最大长度 USB 在设置端点期间 使用这一个信息 看是 否可在每帧内为最大长度的数据区留下足够的时间 如果可以 设置端点成功 否则 不 成功 USB 系统软件可为一个控制传送的通道调整最大数据区长度 但无法为同步通道进行如此 调整 在确定的 USB 设置下 同步通道要么被支持 要么不被支持 USB 限制了同步通道的最大数据区长度为 1023 字节 表 4-3 列出了不同规格的同步传送
以及一帧内可能的最大传送数。表中未包括管理开销的字节。 表4-3同步传送限制 协议开销(9字节) (2 SYNC bytes,2 PID bytes,2 Endpoint+CRC bytes,2 CRC bytes, and a 1_byte interpacket delay) 数据净荷区 最大带宽 Frame带宽/传送最大传送数 剩余字节 有用字节 字节秒 字节/Frame 1 150000 1% 150 0 150 3 272000 1% 136 4 272 4 460000 1% 115 5 460 8 704000 1% 88 4 704 16 960000 2% 60 0 960 32 1152000 3% 36 24 1152 64 1280000 5% 20 40 1280 128 1280000 9% 10 130 1280 256 1280000 18% 5 175 1280 512 1024000 35% 2 458 1024 1023 1023000 69% 468 1023 Max 1500000 1500 并不是每一次的数据区都要达到最大长度。数据区的长度由发送者(客户软件或应用软件) 决定,每次可以不同。SB可保证主机控制器看到的包有多长,在总线上传的包就有多长。 数据的实际长度由发送者决定,可以小于早先协商好的最大长度。总线错误可以使接收者 看到的长度比实际长度有了变化。但这些错误可被检测到。具体地讲,或者通过数据上的 CC码,或者让接收者预先知道实际应该的长度,以此进行检测。 4.6.4同步传送的总线方向限制 只有高速设备可以使用同步方式。 USB设备要求一个帧内不能有超过90%的时间用于周期性传送(同步传送或中断传送)。 同步通道的端点描述自己的总线访问频率。所有的同步通道一般在一帧内传一个包(也就 是说,1ms一个包)。但总线上的错误或者操作系统对客户软件调度上的延迟会造成一个帧 内一个包也没有的情况。此时,设备将一个错误指示信息作为状态信息返回给客户软件。 设备可以通过跟踪SOP(帧开始)信号来测到此类错误。如果两个SOF信号间无数据包,则 出错。 总线频率和帧定时限制了一个帧内的同步传送的上限,在任何USB系统内,最多有150 个单字节的数据区。但由于实现上的原因,主机控制器可能无法支持到理论上的最大传送 数。 4.6.5同步传送的数据顺序 同步传送不支持因总线错误而进行的重传。接收器可以判断是否发生了一个错误,低级 的USB协议不允许有握手信号给同步通道的发送者。一般情况下,是可以有握手信号来通 知发送者包是否被成功地接收。对于同步传送来说,定时比正确性和重传更重要。考虑到 总线的错误率较低,协议就认为传送一般均能成功。同步接收者可以判断自己是否在一个 帧内错过了一些数据,而且能知道丢失了多少数据。4.10节将有关于此的具体介绍。 因为没有用来指示引起中止的条件的握手信号,所以同步传送的端点从不途停止。虽然, 错误信息可作为P的状态来报告,但同步通道不会因此停下。错误即使被查到,主机仍 继续处理下一帧的数据。因为同步传送的协议不支持每次事务都进行握手,所以错误检测 的功能可以相对弱一些。 47中断传送
以及一帧内可能的最大传送数 表中未包括管理开销的字节 表 4-3 同步传送限制 协议开销 9 字节 2 SYNC bytes, 2 PID bytes, 2 Endpoint+CRC bytes,2 CRC bytes, and a 1_byte interpacket delay) 数据净荷区 最大带宽 字节/秒 Frame 带宽/传送 最大传送数 剩余字节 有用字节 字节/Frame 1 150000 1% 150 0 150 2 272000 1% 136 4 272 4 460000 1% 115 5 460 8 704000 1% 88 4 704 16 960000 2% 60 0 960 32 1152000 3% 36 24 1152 64 1280000 5% 20 40 1280 128 1280000 9% 10 130 1280 256 1280000 18% 5 175 1280 512 1024000 35% 2 458 1024 1023 1023000 69% 1 468 1023 Max 1500000 1500 并不是每一次的数据区都要达到最大长度 数据区的长度由发送者(客户软件或应用软件) 决定 每次可以不同 USB 可保证主机控制器看到的包有多长 在总线上传的包就有多长 数据的实际长度由发送者决定 可以小于早先协商好的最大长度 总线错误可以使接收者 看到的长度比实际长度有了变化 但这些错误可被检测到 具体地讲 或者通过数据上的 CRC 码 或者让接收者预先知道实际应该的长度 以此进行检测 4.6.4 同步传送的总线方向限制 只有高速设备可以使用同步方式 USB 设备要求一个帧内不能有超过 90%的时间用于周期性传送(同步传送或中断传送) 同步通道的端点描述自己的总线访问频率 所有的同步通道一般在一帧内传一个包(也就 是说 1ms 一个包) 但总线上的错误或者操作系统对客户软件调度上的延迟会造成一个帧 内一个包也没有的情况 此时 设备将一个错误指示信息作为状态信息返回给客户软件 设备可以通过跟踪 SOF 帧开始 信号来测到此类错误 如果两个 SOF 信号间无数据包 则 出错 总线频率和帧定时限制了一个帧内的同步传送的上限 在任何 USB 系统内 最多有 150 个单字节的数据区 但由于实现上的原因 主机控制器可能无法支持到理论上的最大传送 数 4.6.5 同步传送的数据顺序 同步传送不支持因总线错误而进行的重传 接收器可以判断是否发生了一个错误 低级 的 USB 协议不允许有握手信号给同步通道的发送者 一般情况下 是可以有握手信号来通 知发送者包是否被成功地接收 对于同步传送来说 定时比正确性和重传更重要 考虑到 总线的错误率较低 协议就认为传送一般均能成功 同步接收者可以判断自己是否在一个 帧内错过了一些数据 而且能知道丢失了多少数据 4.10 节将有关于此的具体介绍 因为没有用来指示引起中止的条件的握手信号 所以同步传送的端点从不途停止 虽然 错误信息可作为 IRP 的状态来报告 但同步通道不会因此停下 错误即使被查到 主机仍 继续处理下一帧的数据 因为同步传送的协议不支持每次事务都进行握手 所以错误检测 的功能可以相对弱一些 4.7 中断传送
中断传送是为这样一类设备设计的,它们只传或收少量数据,而且并不经常进行传送, 但它们有一个确定的服务周期,对中断传送有以下要求: ·通道的最大服务期得到保证。 ·由于错误而引起的重发在下一服务期进行。 4.7.1中断传送的数据格式 USB对中断通道上的数据流格式无要求。 4.7.2中断传送的方向 中断通道是一种流通道,所以是单向的。端点描述信息指明了通道的数据流方向。 4.7.3中断传送对包的长度的限制 中断通道的端点决定自己能接收和发送的最大数据区长度,高速设备允许最大不超过64 字节(或更少)的数据区,而低速设备只允许不超过8个(或更少)字的数据区,这个数字不 包括协议要求的附加信息。USB并不需求所有的包都到最大长度。如果不到的话,不用加字 节填充。 所有的主机控制器都要示支持高速设备的64字节数据区和低速设备的8字节(或更少)的 最大数据区,对超过最大值的数据区则不要求支持。 USB系统软件设置中断通道的最大数据区长度。在设备设置期间,这一信息将被使用,只 有此设置有效,这个数值是不会改变的。在设置有效期间,USB系统软件根据此数值来看分 给这个通道的总线时间是否充分。如果充分,则通道建立,否则不建立。与控制通道不同, USB系统不为中断通道调整总线时间。所以对给定的USB系统,要么支持此通道,要么不支 持。实际传送的数据区长度由发送器决定,可以小于最大长度。 端点所发的数据区中的数据长度不能超过端点的w Max Packet Size的值。而设备可以 通过中断传送来传比此值多的数据。客户软件可以通过中断传送的IRP来接收这批数据, 这个中断传送要求多个总线处理事务来完成,且要求每个事务后都有IP完成的信号。可 以设置一个缓冲区,它的长度为w Max Packet Size的整数倍,再加上一个零头。对需要 的多个总线事务来说,除最后一个外,前面的事务都传递w Max Packet Size长度的包, 后一个传剩下的零头。这些总线处理事务都在为通道建立的服务周期内进行。 如果一个中断传送要传的数据不能放在一个数据区中,就分几个区,前几个区都是最大 长度,最后一个包含剩下的长度。当出现以下情况时,认为中断传送结束: ·已传的数据量恰好与期望的数据量同。 ·传了一个有一个数据区的包,此包的长度小于w Max Packet Size或传了一个长度为 零的包。 如果一个中断传送完成,那么主机控制器结束当前的IRP,并开始下一个IRP。如果数据 区的长度比预料的长,当前IRP中止,并且只有等到出错条件被确认且清除后,才能开始 后面的IRP。 4.7.4中断传送对总线访问的限制 高速设备和低速设备均可使用中断传送。 USB要求不能有多于90%的顺时间用于阶段传送(同步传送或中断传送)。 总线频率和帧的定时限制了一帧内能传的最大中断传送数。对任一USB系统来说,高速 单字数据区少于108个,低速单字节数据区少于14个。由于实现上的原因,主机控制器不 一定能够支持此理论上的上限。 表4-4列出了不同规格的高速中断传送的情况,以及一帧内可能的最大传送数。表4-5 列的是对低速设备的相关情况。它们均不包括管理开销的字节。 表4-4高速中断传送限制
中断传送是为这样一类设备设计的 它们只传或收少量数据 而且并不经常进行传送 但它们有一个确定的服务周期 对中断传送有以下要求 通道的最大服务期得到保证 由于错误而引起的重发在下一服务期进行 4.7.1 中断传送的数据格式 USB 对中断通道上的数据流格式无要求 4.7.2 中断传送的方向 中断通道是一种流通道 所以是单向的 端点描述信息指明了通道的数据流方向 4.7.3 中断传送对包的长度的限制 中断通道的端点决定自己能接收和发送的最大数据区长度 高速设备允许最大不超过 64 字节(或更少)的数据区 而低速设备只允许不超过 8 个(或更少)字的数据区 这个数字不 包括协议要求的附加信息 USB 并不需求所有的包都到最大长度 如果不到的话 不用加字 节填充 所有的主机控制器都要示支持高速设备的 64 字节数据区和低速设备的 8 字节(或更少)的 最大数据区 对超过最大值的数据区则不要求支持 USB 系统软件设置中断通道的最大数据区长度 在设备设置期间 这一信息将被使用 只 有此设置有效 这个数值是不会改变的 在设置有效期间 USB 系统软件根据此数值来看分 给这个通道的总线时间是否充分 如果充分 则通道建立 否则不建立 与控制通道不同 USB 系统不为中断通道调整总线时间 所以对给定的 USB 系统 要么支持此通道 要么不支 持 实际传送的数据区长度由发送器决定 可以小于最大长度 端点所发的数据区中的数据长度不能超过端点的 w Max Packet Size 的值 而设备可以 通过中断传送来传比此值多的数据 客户软件可以通过中断传送的 IRP 来接收这批数据 这个中断传送要求多个总线处理事务来完成 且要求每个事务后都有 IRP 完成的信号 可 以设置一个缓冲区 它的长度为 w Max Packet Size 的整数倍 再加上一个零头 对需要 的多个总线事务来说 除最后一个外 前面的事务都传递 w Max Packet Size 长度的包 后一个传剩下的零头 这些总线处理事务都在为通道建立的服务周期内进行 如果一个中断传送要传的数据不能放在一个数据区中 就分几个区 前几个区都是最大 长度 最后一个包含剩下的长度 当出现以下情况时 认为中断传送结束 已传的数据量恰好与期望的数据量同 传了一个有一个数据区的包 此包的长度小于 w Max Packet Size 或传了一个长度为 零的包 如果一个中断传送完成 那么主机控制器结束当前的 IRP 并开始下一个 IRP 如果数据 区的长度比预料的长 当前 IRP 中止 并且只有等到出错条件被确认且清除后 才能开始 后面的 IRP 4.7.4 中断传送对总线访问的限制 高速设备和低速设备均可使用中断传送 USB 要求不能有多于 90%的顺时间用于阶段传送(同步传送或中断传送) 总线频率和帧的定时限制了一帧内能传的最大中断传送数 对任一 USB 系统来说 高速 单字数据区少于 108 个 低速单字节数据区少于 14 个 由于实现上的原因 主机控制器不 一定能够支持此理论上的上限 表 4-4 列出了不同规格的高速中断传送的情况 以及一帧内可能的最大传送数 表 4-5 列的是对低速设备的相关情况 它们均不包括管理开销的字节 表 4-4 高速中断传送限制
协议开销(13字节) (3 SYNC bytes,3 PID bytes,2 Endpoint+CRC bytes,2 CRC bytes,and a 3 byte interpacket delay) 数据净 最大带宽 Frame带宽/传送 最大传送数 剩余字节 有用数据 荷区 (字节/秒) 字节/Frame 1 107000 1% 107 2 107 2 200000 1% 100 0 200 ¥ 352000 1% 88 4 352 8 568000 1% 71 9 568 16 816000 2% 51 21 816 32 1056000 3% 33 15 1056 64 1216000 5% 19 37 1216 Max 1500000 1500 中断通道的端点可以指明它要求的总线访问周期。高速设备要求的时间周期可以1ms到 255ms,而低速设备从10ms到255ms。在设置期间,USB系统软件根据它们的要求来决定一 个服务周期长度。U$B提供的服务周期长度可能比设备要求的要短些,但不会少于最短的 1ms。客户软件和设备只能够确定两次传送之间的时间长度不会比要求的周期时间长。但如 果传送中出现错误,那么周期时间必然要越界。当客户软件有一个中断传送的IP时,端 点只是被选中。如果总线轮到此中断传送使用时,没有IP处于待发状态,则端点没有机 会在此时间传数据,一旦一个IP出现了,它的数据在下一个轮到它的时间时被发出。 表4-5低速中断传送限制 协议开销(13字节) 数据净荷区最大带宽 Frame带宽/传送 最大传送数 剩余字节 有用数据 字节/Frame 1 13000 7% 13 5 13 2 24000 8% 12 7 24 4 44000 9% 11 0 44 8 64000 11% 8 19 64 Max 187500 187 要在SB上进行中断传送,必须在每个周期对端口进行访问。主机无法知道何时一个端 口准备好了一个中断传送,除非它访问这个端点,并同时请求一个中断传送,等待回答。 如果端口无数据需要中断传送,就对其请求回送一个NAK信号。如果端口传送数据的会有 中断情况发生,一定要用中断传送,以防中断产生时,客户软件误以为IP结束。长度为0 的数据净负荷区的传送是合法的,而且对某些实现是很有用的。 4.7.5中断传送的数据顺序 中断传送可以利用0/1跳变位(t0ggle位)的机制,当成功的进行了一个传送,该位就 跳变一次。 主机总是认为设备是遵守完备的握手协议和重发协议(参见第7章)。但如果无论传送成 功否,设备都在Datal/Data 0间跳变PID,就忽略主机发来的握手信号。但这时,客户软 件会丢失一些包。因为有错误发生时,主机控制器会把设备发的下一个包当作上一个包的 重发。 一旦在中断通道上检测到一个引起中止的条件,或收到设备发来的STALL握手信号,所 有正等待的IRP都会中止。由软件通过独立的控制通道来消除中止条件。清除后,设备和
协议开销 13 字节 3 SYNC bytes, 3 PID bytes, 2 Endpoint+CRC bytes, 2 CRC bytes, and a 3_byte interpacket delay) 数据净 荷区 最大带宽 字节/秒 Frame 带宽/传送 最大传送数 剩余字节 有用数据 字节/Frame 1 107000 1% 107 2 107 2 200000 1% 100 0 200 4 352000 1% 88 4 352 8 568000 1% 71 9 568 16 816000 2% 51 21 816 32 1056000 3% 33 15 1056 64 1216000 5% 19 37 1216 Max 1500000 1500 中断通道的端点可以指明它要求的总线访问周期 高速设备要求的时间周期可以 1ms 到 255ms 而低速设备从 10ms 到 255ms 在设置期间 USB 系统软件根据它们的要求来决定一 个服务周期长度 USB 提供的服务周期长度可能比设备要求的要短些 但不会少于最短的 1ms 客户软件和设备只能够确定两次传送之间的时间长度不会比要求的周期时间长 但如 果传送中出现错误 那么周期时间必然要越界 当客户软件有一个中断传送的 IRP 时 端 点只是被选中 如果总线轮到此中断传送使用时 没有 IRP 处于待发状态 则端点没有机 会在此时间传数据 一旦一个 IRP 出现了 它的数据在下一个轮到它的时间时被发出 表 4-5 低速中断传送限制 协议开销 13 字节 数据净荷区 最大带宽 Frame 带宽/传送 最大传送数 剩余字节 有用数据 字节/Frame 1 13000 7% 13 5 13 2 24000 8% 12 7 24 4 44000 9% 11 0 44 8 64000 11% 8 19 64 Max 187500 187 要在 USB 上进行中断传送 必须在每个周期对端口进行访问 主机无法知道何时一个端 口准备好了一个中断传送 除非它访问这个端点 并同时请求一个中断传送 等待回答 如果端口无数据需要中断传送 就对其请求回送一个 NAK 信号 如果端口传送数据的会有 中断情况发生 一定要用中断传送 以防中断产生时 客户软件误以为 IRP 结束 长度为 0 的数据净负荷区的传送是合法的 而且对某些实现是很有用的 4.7.5 中断传送的数据顺序 中断传送可以利用 0/1 跳变位 toggle 位 的机制 当成功的进行了一个传送 该位就 跳变一次 主机总是认为设备是遵守完备的握手协议和重发协议(参见第 7 章) 但如果无论传送成 功否 设备都在 Data1/Data 0 间跳变 PID 就忽略主机发来的握手信号 但这时 客户软 件会丢失一些包 因为有错误发生时 主机控制器会把设备发的下一个包当作上一个包的 重发 一旦在中断通道上检测到一个引起中止的条件 或收到设备发来的 STALL 握手信号 所 有正等待的 IRP 都会中止 由软件通过独立的控制通道来消除中止条件 清除后 设备和
主机都复位到Data0的状态。如果总线上出现了一个影响传送的错误,则中断处理事务会 停止。 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。如果收到的一个数据 净负荷区超长,则所有在等待此端点的批传送IR即都将被中止/取消。 48.4批传送对总线访问的限制 只有高速设备可以使用批传送。 端点无法提出对批通道的总线访问频率的要求。USB会协调所有批传送和正等待的IRP 的总线访问请求,以获得在客户软件和应用层之间的“最佳”传送效果。总线上的控制传 送的优先级比批传送高。 对于控制传送,有可保证的传送时间,而对批传送,没有。只有当有可用的总线带宽时, 批传送才发生。如果有段时间没有被用于其他目的,这段时间将用于批传送。如果正等待 的各个批传送是要往不同的端点去的,主机控制器将根据公平访问原则,安排它们的顺序。 至于公平访问原则的具体内容,由主机控制器的实现决定。 系统中的所有批传送是竞争同一个可用的总线时间的,所以USB系统软件可以改变对某 个特定端点进行的批传送所占有的总线时间。所以端点和它的客户软件不能够期望有一个 特定的批传送的速度。当有设备被加进或移出USB系统或出现对其它设备上端点的请求时
主机都复位到 Data 0 的状态 如果总线上出现了一个影响传送的错误 则中断处理事务会 停止 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 系统或出现对其它设备上端点的请求时