4.3.1对0号端点的要求 所有USB设备都需要实现一个缺省的控制方法。这种方法将端点0作为输入端点,同时 也将端点0作为输出端点。USB系统用这个缺省方法初始化及一般地使用逻辑设备(即设置 此设备)。缺省控制通道(见4.3.2节)支持了对控制的传送(控制传送将在4.5中定义), 一旦设备接上,并加电,且又收到一个总线复位命令,端点0就是可访问的了。 4.3.1.2对非0号端点的要求 设备可以有除0以外的其它端点,这取决于这些设备的实现。低速设备在0号输入及输 出端点外,只能有2个额外的可选端点。而高速设备可具有的额外端点数仅受限于协议的 定义(协议中规定,最多15个额外的输入端点和最多15个额外的输出端点)。 除缺省控制通道的缺省端点外,其它端点只有在设备被设置后才可使用,对设备的设置 是设备设置过程(见第8章)的一部分。 4.3.2通道 一个USB通道是设备上的一个端点和主机上软件之间的联系。体现了主机上缓存和端点 间 传送数据的能力。 有两不同的且互斥的通道通信格式。 ·流(Stream):指不具有USB定义的格式的数据流。 ·消息(Message):指具有某种USB定义的格式的数据流 USB不解释在通道中传送的数据的内容。消息通道要求数据组织成USB定义的格式,但它 的内容,USB是不管的。 特别地,有下列概念与通道相关: ·对USB总线访问的申请(claim),带宽的使用情况 ·传送类型 ·与通道相连的端点的特性,例如:端点的数据传送方向,最大数据净负荷区的长度。 数据净负荷是指在总线处理事务(transaction)中,数据包中数据区的数据(总线处理事 务见第7章)。由两个0号端点组成的通道叫缺省控制通道。一旦设备加电并复位后,此通 道即可使用。其它通道只在设备被设置后才存在。USB系统软件在决定设备身份、设置要求 和设置设备时使用缺省控制通道。当设备被设置后,这个设备的特定软件还可使用该通道。 USB系统软件保留缺省控制通道的拥有权,协调其它客户软件对通道的使用。 一个客户软件一般都通过I/0请求包(IRP)来要求数据传送。然后,或者等待,或者当传 送完成后被通知。IP的细节是由操作系统来指定的。客户软件提出与设备上的端点建立某 个方向的数据传送的请求,IRP就可简单地理解为这个请求。一个客户软件可以要求一个通 道回送所有的IRP。当关于IRP的总线传送结束时,无论它是成功地完成,还是出现错误, 客户软件都将获得通知说IRP完成了。 如果通道上没有正在传送的数据,也没有数据想使用此通道,这个通道就处于闲置状态。 主机控制器对它不采取任何动作,也就是说,这个通道的端点会发现没有任何的总线动作 是冲它而来的。只有当有数据在通道上时,该通道才能发现总线对它的动作。 如果一个非同步通道遇到一个迫使它给主机发STALL的情况(参见第7章),或者在任一 个IRP中发现3个总线错误。这个IRP将被中止。其它所有突出的IRP也一同被中止。通 道不再接收任何RP,直到客户软件从这个情况中恢复过来(恢复的方式取决于软件的实 现),而且承认这个中止或出现的错误,并发一个USBD Cal1来表明它已承认。一个合适的 状态信息将通知客户软件IP的结果一出错或中止。同步通道的运作在4.6中介绍。 一个IP可能会需要多个数据净荷区来传递数据。这些数据区除最后一个外,都具有数 据净荷区的最大长度,最后一个数据区包含了这个IP中剩下的数据。(可参见关于传送类
4.3.1 对 0 号端点的要求 所有 USB 设备都需要实现一个缺省的控制方法 这种方法将端点 0 作为输入端点 同时 也将端点 0 作为输出端点 USB 系统用这个缺省方法初始化及一般地使用逻辑设备(即设置 此设备) 缺省控制通道 见 4.3.2 节 支持了对控制的传送(控制传送将在 4.5 中定义) 一旦设备接上 并加电 且又收到一个总线复位命令 端点 0 就是可访问的了 4.3.1.2 对非 0 号端点的要求 设备可以有除 0 以外的其它端点 这取决于这些设备的实现 低速设备在 0 号输入及输 出端点外 只能有 2 个额外的可选端点 而高速设备可具有的额外端点数仅受限于协议的 定义(协议中规定 最多 15 个额外的输入端点和最多 15 个额外的输出端点) 除缺省控制通道的缺省端点外 其它端点只有在设备被设置后才可使用 对设备的设置 是设备设置过程(见第 8 章)的一部分 4.3.2 通道 一个 USB 通道是设备上的一个端点和主机上软件之间的联系 体现了主机上缓存和端点 间 传送数据的能力 有两不同的且互斥的通道通信格式 流(Stream) 指不具有 USB 定义的格式的数据流 消息(Message) 指具有某种 USB 定义的格式的数据流 USB 不解释在通道中传送的数据的内容 消息通道要求数据组织成 USB 定义的格式 但它 的内容 USB 是不管的 特别地 有下列概念与通道相关 对 USB 总线访问的申请(claim) 带宽的使用情况 传送类型 与通道相连的端点的特性 例如 端点的数据传送方向 最大数据净负荷区的长度 数据净负荷是指在总线处理事务 transaction 中 数据包中数据区的数据(总线处理事 务见第 7 章) 由两个 0 号端点组成的通道叫缺省控制通道 一旦设备加电并复位后 此通 道即可使用 其它通道只在设备被设置后才存在 USB 系统软件在决定设备身份 设置要求 和设置设备时使用缺省控制通道 当设备被设置后 这个设备的特定软件还可使用该通道 USB 系统软件保留缺省控制通道的拥有权 协调其它客户软件对通道的使用 一个客户软件一般都通过 I/O 请求包(IRP)来要求数据传送 然后 或者等待 或者当传 送完成后被通知 IRP 的细节是由操作系统来指定的 客户软件提出与设备上的端点建立某 个方向的数据传送的请求 IRP 就可简单地理解为这个请求 一个客户软件可以要求一个通 道回送所有的 IRP 当关于 IRP 的总线传送结束时 无论它是成功地完成 还是出现错误 客户软件都将获得通知说 IRP 完成了 如果通道上没有正在传送的数据 也没有数据想使用此通道 这个通道就处于闲置状态 主机控制器对它不采取任何动作 也就是说 这个通道的端点会发现没有任何的总线动作 是冲它而来的 只有当有数据在通道上时 该通道才能发现总线对它的动作 如果一个非同步通道遇到一个迫使它给主机发 STALL 的情况(参见第 7 章) 或者在任一 个 IRP 中发现 3 个总线错误 这个 IRP 将被中止 其它所有突出的 IRP 也一同被中止 通 道不再接收任何 IRP 直到客户软件从这个情况中恢复过来(恢复的方式取决于软件的实 现) 而且承认这个中止或出现的错误 并发一个 USBD Call 来表明它已承认 一个合适的 状态信息将通知客户软件 IRP 的结果 出错或中止 同步通道的运作在 4.6 中介绍 一个 IRP 可能会需要多个数据净荷区来传递数据 这些数据区除最后一个外 都具有数 据净荷区的最大长度 最后一个数据区包含了这个 IRP 中剩下的数据 (可参见关于传送类
型的介绍,以获得更详细的了解)。对这样的一个IP,短包(也就是说未达到最大长度的数 据区)在数据输入时无法填完IP数据缓冲区。这可能会有二种不同解释,它依赖于客户软 件的情况: ·如果该客户软件可以接受变长的IRP,那么,IRP数据缓冲区未被填满,可以看作一 个分限,说明一个IRP己成功结束,主机控制器可以准备接收下一个IRP了。 ·如果该客户软件只收定长的IP。那么,我们认为发生了一个错误,这IP将被中止, 通道也会被阻塞,通道上的数据都中止。 因为对这两种情况,主机控制器会有不同的反应,而且采取何种措施不由控制器决定,所 以对每个IRP都必须说明客户软件的具体要求。 通道的端点可以用NAK信号来通知主机自己正忙,NAK不能作为向主机反还IRP的中止条 件。在一个给定的IRP处理过程中,可以遇到任意多个NAK,NAK不构成错误。 4.3.2.1流通道 流通道中的数据是流的形式,也就是该数据的内容不具有USB要求的结构。数据从流通 道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的,流通道中的通信流总是 单方向的。 对于在流通道中传送的数据,USB认为它来自同一个客户。USB系统软件不能够提供使用 同一流通道的多个客户的同步控制。在流通道中传送的数据遵循先进先出原则。 流管流只能连到一个固定号码的端点上,或者流进,或者流出。(这个号码是由协议层决 定的)。而具有这个号码的另一个方向的端点可以被分配给其它流通道。 流通道支持同步传送,中断传送和批传送,这些在稍后的章节会进一步解释。 4.3.2.2消息通道 消息通道与端点的关系同流通道与端点的关系是不同的。首先,主机向USB设备发出一 个请求;接着,就是数据的传送;最后,是一个状态阶段。为了能够容纳请求/数据/状态 的变化,消息通道要求数据有一个格式,此格式保证了命令能够被可靠地传送和确认。 消息通道允许双方向的信息流,虽然大多数的通信流是单方向的。特别地,缺省控制通道 也 是一个消息通道。 USB系统软件不会让多个请求同时要求同一个消息通道。一个设备的每个消息通道在一个 时间段内,只能为一个消息请求服务,多个客户软件可以通过缺省控制通道发出它们的请 求,但这些请求到达设备的次序是按先进先出的原则的。设备可以在数据传送阶段和状态 阶段控制信息流,这取决于这些设备与主机交互的能力(参见第7章)。正常情况下,在上 一个消息未被处理完之前,是不能向消息通道发下一个消息的。但在有错误发生的情况下, 主机会取消这次消息传送,并且不等设备将己收的数据处理完,就开始下一次的消息传送。 在操作通道的软件看来,一个IRP中的错误,使这个IRP被取消,并且所有正排队等待的 IRP一同也被取消。申请这个IRP的客户被通知IRP结束,且有出错提示。 消息通道后有两个相同号码的端点,一个用于输入,一个用于输出。两个号码必须相同。 消息通道支持控制传送,这将在4.5中进行介绍。 4.4传送类型 USB通过通道在主机缓冲区与设备端点间传送数据。在消息通道中传递的数据具有USB 定义的格式,它的数据净荷区中包含的数据允许具有设备指定的格式。USB要求任何在通道 上传送的数据均被打包,数据的解释工作由客户软件和应用层软件负责。SB提供了多种数 据格式,使之尽可能满足客户软件和应用软件的要求。一个IP需要一个或多个总线处理 事务来完成。 每个传送类型在以下的几个传送特征上会有不同:
型的介绍 以获得更详细的了解) 对这样的一个 IRP 短包(也就是说未达到最大长度的数 据区)在数据输入时无法填完 IRP 数据缓冲区 这可能会有二种不同解释 它依赖于客户软 件的情况 如果该客户软件可以接受变长的 IRP 那么 IRP 数据缓冲区未被填满 可以看作一 个分限 说明一个 IRP 已成功结束 主机控制器可以准备接收下一个 IRP 了 如果该客户软件只收定长的 IRP 那么 我们认为发生了一个错误 这 IRP 将被中止 通道也会被阻塞 通道上的数据都中止 因为对这两种情况 主机控制器会有不同的反应 而且采取何种措施不由控制器决定 所 以对每个 IRP 都必须说明客户软件的具体要求 通道的端点可以用 NAK 信号来通知主机自己正忙 NAK 不能作为向主机反还 IRP 的中止条 件 在一个给定的 IRP 处理过程中 可以遇到任意多个 NAK NAK 不构成错误 4.3.2.1 流通道 流通道中的数据是流的形式 也就是该数据的内容不具有 USB 要求的结构 数据从流通 道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的 流通道中的通信流总是 单方向的 对于在流通道中传送的数据 USB 认为它来自同一个客户 USB 系统软件不能够提供使用 同一流通道的多个客户的同步控制 在流通道中传送的数据遵循先进先出原则 流管流只能连到一个固定号码的端点上 或者流进 或者流出 (这个号码是由协议层决 定的) 而具有这个号码的另一个方向的端点可以被分配给其它流通道 流通道支持同步传送 中断传送和批传送 这些在稍后的章节会进一步解释 4.3.2.2 消息通道 消息通道与端点的关系同流通道与端点的关系是不同的 首先 主机向 USB 设备发出一 个请求 接着 就是数据的传送 最后 是一个状态阶段 为了能够容纳请求/数据/状态 的变化 消息通道要求数据有一个格式 此格式保证了命令能够被可靠地传送和确认 消息通道允许双方向的信息流 虽然大多数的通信流是单方向的 特别地 缺省控制通道 也 是一个消息通道 USB 系统软件不会让多个请求同时要求同一个消息通道 一个设备的每个消息通道在一个 时间段内 只能为一个消息请求服务 多个客户软件可以通过缺省控制通道发出它们的请 求 但这些请求到达设备的次序是按先进先出的原则的 设备可以在数据传送阶段和状态 阶段控制信息流 这取决于这些设备与主机交互的能力(参见第 7 章) 正常情况下 在上 一个消息未被处理完之前 是不能向消息通道发下一个消息的 但在有错误发生的情况下 主机会取消这次消息传送 并且不等设备将已收的数据处理完 就开始下一次的消息传送 在操作通道的软件看来 一个 IRP 中的错误 使这个 IRP 被取消 并且所有正排队等待的 IRP 一同也被取消 申请这个 IRP 的客户被通知 IRP 结束 且有出错提示 消息通道后有两个相同号码的端点 一个用于输入 一个用于输出 两个号码必须相同 消息通道支持控制传送 这将在 4.5 中进行介绍 4.4 传送类型 USB 通过通道在主机缓冲区与设备端点间传送数据 在消息通道中传递的数据具有 USB 定义的格式 它的数据净荷区中包含的数据允许具有设备指定的格式 USB 要求任何在通道 上传送的数据均被打包 数据的解释工作由客户软件和应用层软件负责 USB 提供了多种数 据格式 使之尽可能满足客户软件和应用软件的要求 一个 IRP 需要一个或多个总线处理 事务来完成 每个传送类型在以下的几个传送特征上会有不同
·USB规定的数据格式 ·信息流的方向 ·数据净荷区的长度限制 ·总线访问的限制 ·延时的限制 ·出错处理 USB设备的设计者可以决定设备上每个端点的能力。一旦为这个端点建立了一个通道,这 个通道的绝大多数传送特征也就固定下来了,一直到这个通道被取消为止。也有部分传送 特征可以改变,对这样的特征,将会在介绍每个传送类型时作出说明。 USB定义了4种传送类型: ·控制传送:可靠的、非周期性的、由主机软件发起的请求或者回应的传送,通常用于 命令事务和状态事务。 ·同步传送:在主机与设备之间的周期性的、连续的通信,一般用于传送与时间相关的 信息。这种类型保留了将时间概念包含于数据中的能力。但这并不意味着,传送这样数据 的时间总是很重要的,即传送并不一定很紧急。 ·中断传送:小规模数据的、低速的、固定延迟的传送。 ·批传送:非周期性的,大包的可靠的传送。典型地用于传送那些可以利用任何带宽的 数据,而且这些数据当没有可用带宽时,可以容忍等待。 这些传送类型将在后面的四个大节中进行讨论。IP的数据均放在数据包中的数据区被传 送,这将在7.4.3中介绍。关于与具体传送类型有关的一些协议细节在第7章中介绍。 4.5控制传送 控制传送允许访问一个设备的不同部分。控制传送用于支持在客户软件和它的应用之间 的关于设置信息、命令信息、状态信息的传送。控制传送由以下几个事务组成:(1)建立联 系,把请求信息从主机传到它的应用设备:(2)零个或多个数据传送事务,按照(1)事务 中指明的方向传送数据;(③)状态信息回传。将状态信息从应用设备传到主机。当端点成功 地完 成了被要求的操作时,回传的状态信息为“success”。7.2中将介绍控制传送的细节,例如, 什么样的包,什么样的总线事务和总线事务的顺序。而第8章将介绍SB定义的USB命令 字。 USB设备必须实现缺省控制通道,并将它实现成一个消息通道。这个通道由USB系统软件 使用。USB设备的确认信息、状态信息以及控制信息由该通道传送。如果需要的话,一个应 用设备可以为端点实现额外的控制通道。 USB设备框架(见第8章)定义了标准的,设备级的或由销售商提供的请求,这些请求可操 作设备的状态。USB设备框架又定义了一些描述器(descriptor),用于存放USB设备的各 种信息。控制机制提供访问设备描述器和请求操作设备的机制。 控制传送只能通过消息通道进行。所以,使用控制传送的数据必须具有USB定义的数据 格式(见4.5.1节)。 应用层和相应的客户软件不能为控制传送指定总线访问频率和带宽。这由USB系统软件 从全局优化角度加以决定。USB系统软件会限制设备要求的访问频率和带宽,这些限制在 4.5.3和4.5.4中介绍。 4.5.1控制传送类型的数据格式 Setup包的数据格式属于一个命令集,这个集合能保证主机和设备之间正常通信。这个格 式也允许一些销售商对设备命令的扩展。Setup包后的数据传送也具有USB定义的格式,除 非这个数据是销售商提供的信息。回传的状态信息仍然具有SB定义的格式。7.5.8节和第
USB 规定的数据格式 信息流的方向 数据净荷区的长度限制 总线访问的限制 延时的限制 出错处理 USB 设备的设计者可以决定设备上每个端点的能力 一旦为这个端点建立了一个通道 这 个通道的绝大多数传送特征也就固定下来了 一直到这个通道被取消为止 也有部分传送 特征可以改变 对这样的特征 将会在介绍每个传送类型时作出说明 USB 定义了 4 种传送类型 控制传送 可靠的 非周期性的 由主机软件发起的请求或者回应的传送 通常用于 命令事务和状态事务 同步传送 在主机与设备之间的周期性的 连续的通信 一般用于传送与时间相关的 信息 这种类型保留了将时间概念包含于数据中的能力 但这并不意味着 传送这样数据 的时间总是很重要的 即传送并不一定很紧急 中断传送 小规模数据的 低速的 固定延迟的传送 批传送 非周期性的 大包的可靠的传送 典型地用于传送那些可以利用任何带宽的 数据 而且这些数据当没有可用带宽时 可以容忍等待 这些传送类型将在后面的四个大节中进行讨论 IRP 的数据均放在数据包中的数据区被传 送 这将在 7.4.3 中介绍 关于与具体传送类型有关的一些协议细节在第 7 章中介绍 4.5 控制传送 控制传送允许访问一个设备的不同部分 控制传送用于支持在客户软件和它的应用之间 的关于设置信息 命令信息 状态信息的传送 控制传送由以下几个事务组成 (1)建立联 系 把请求信息从主机传到它的应用设备 (2)零个或多个数据传送事务 按照 1 事务 中指明的方向传送数据 (3)状态信息回传 将状态信息从应用设备传到主机 当端点成功 地完 成了被要求的操作时 回传的状态信息为 success 7.2 中将介绍控制传送的细节 例如 什么样的包 什么样的总线事务和总线事务的顺序 而第 8 章将介绍 USB 定义的 USB 命令 字 USB 设备必须实现缺省控制通道 并将它实现成一个消息通道 这个通道由 USB 系统软件 使用 USB 设备的确认信息 状态信息以及控制信息由该通道传送 如果需要的话 一个应 用设备可以为端点实现额外的控制通道 USB 设备框架(见第 8 章)定义了标准的 设备级的或由销售商提供的请求 这些请求可操 作设备的状态 USB 设备框架又定义了一些描述器 descriptor 用于存放 USB 设备的各 种信息 控制机制提供访问设备描述器和请求操作设备的机制 控制传送只能通过消息通道进行 所以 使用控制传送的数据必须具有 USB 定义的数据 格式(见 4.5.1 节) 应用层和相应的客户软件不能为控制传送指定总线访问频率和带宽 这由 USB 系统软件 从全局优化角度加以决定 USB 系统软件会限制设备要求的访问频率和带宽 这些限制在 4.5.3 和 4.5.4 中介绍 4.5.1 控制传送类型的数据格式 Setup 包的数据格式属于一个命令集 这个集合能保证主机和设备之间正常通信 这个格 式也允许一些销售商对设备命令的扩展 Setup 包后的数据传送也具有 USB 定义的格式 除 非这个数据是销售商提供的信息 回传的状态信息仍然具有 USB 定义的格式 7.5.8 节和第
8章将介绍控制传送的Setup定义和数据定义。 4.5.2控制传送的方向 控制传送使用的是消息通道上的双向信息流。所以,一旦一个控制通道被确认之后,这 个通道就使用了具有某个端点号的两个端点,一个输入,一个输出。 4.5.3控制传送包的大小的限制 控制传送的端点决定了它所能接收或发送的最大数据净负荷区长度。USB为高速设备定义 的最大数据净负荷区长度为8、16、32或64字节,低速设备的数据净负荷区的长度只能是 8字节。Setup后的所有数据包都要遵守这个规定,这个规定是针对这些数据包中的数据净 负荷区的,不包括包中的协议要求的额外信息,Setup包实际上也是8字节。控制通道(包 括缺省控制通道)总是使用w Max Packet Size的值。 端点在自己的设置信息中报告自己允许的最大净负荷区长度。SB不要求数据净负荷区必 须达到最大长度,当长度不够时,不必填充到最大长度。 主机控制器对高速设备的控制通道端点支持8、16、32、64字节的最大长度,对低速设 备支持8字节的长度。它不能支持更大的或更小的其它长度。 对于缺省控制通道的最大数据区长度,USB系统软件要从设备描述器的头8个字节中读 出,设备将这8个字节放在一个包中发出,其中的七个字包含了缺省通道的 wMaxPacketSize。对其它的控制瑞点来说,USB系统软件在它们被设置后,获得此长度,然 后USB系统软件就会保证数据净负荷区不会超长。另外,主机总是认为数据净负荷区的最 大长度至少为8。 端点所传的数据净负荷区长度必须小于或等于其wMaxPacketSize(参见第8章),当一个 数据区不能容纳所传数据时,就分几个区来传。除最后一个区外,其它区都应达到最大长 度。最后一区包含最后剩下的数据。 当端点做了以下两件事时,控制传送的数据阶段可被认为结束: ·已传了由Setup阶段指定的数据量。 ·传了一个数据包,它的长度为0或它的数据区长度小于最大长度。 数据阶段结束后,主机控制器进入状态阶段,而不是开始另一个数据传诵。如果它不这 样做,端点会认为通道脱线而中止通道(通道脱线见4.3.2)。如果主机在状态阶段时,主机 收到一个大于最大长度的数据区,那么请求这次传送的IRP将被中止。 当数据全部传完,主机与端点之间的控制传送的数据阶段结束。如果其间,端点收到了 超过最大长度的数据区,它将中止通道。 4.5.4控制传送的总线访问的限制 无论低速设备还是高速设备都可以使用控制通道。 端点没法指明控制通道对总线访问频率的要求。USB权衡所有控制通道的总线访问频率和 正等待的IRP,从全局优化,提供一个“最佳”传送方案。 USB要求数据帧中的一部分被留给控制传送使用。 ·如果被引发的控制传送(引发方式由实现决定)只用了数据帧的不到10%的时间,则剩余 的时间留给批传送(参见4.8节)。 ·如果一个控制传送被引发又被中止,则它的中止可在本次的帧内,也可在以后的帧内。 也就是说,引发和中止不必在同一个帧内。 ·如果留给控制传送的时间不够用,但恰好有一些同步和中断传送的帧时间未用,则主 机控制器利用这些时间进行额外的控制传送。 ·如果对可用的帧时间有太多的控制传送在等待,那么就对它们进行排序然后传送。 ·如果各个控制传送申请的是不同的端点,主机控制器根据公平访问原则决定它们的访 问顺序。公平访问原则的具体内容决定于主机控制器的实现
8 章将介绍控制传送的 Setup 定义和数据定义 4.5.2 控制传送的方向 控制传送使用的是消息通道上的双向信息流 所以 一旦一个控制通道被确认之后 这 个通道就使用了具有某个端点号的两个端点 一个输入 一个输出 4.5.3 控制传送包的大小的限制 控制传送的端点决定了它所能接收或发送的最大数据净负荷区长度 USB 为高速设备定义 的最大数据净负荷区长度为 8 16 32 或 64 字节 低速设备的数据净负荷区的长度只能是 8 字节 Setup 后的所有数据包都要遵守这个规定 这个规定是针对这些数据包中的数据净 负荷区的 不包括包中的协议要求的额外信息 Setup 包实际上也是 8 字节 控制通道(包 括缺省控制通道)总是使用 w Max Packet Size 的值 端点在自己的设置信息中报告自己允许的最大净负荷区长度 USB 不要求数据净负荷区必 须达到最大长度 当长度不够时 不必填充到最大长度 主机控制器对高速设备的控制通道端点支持 8 16 32 64 字节的最大长度 对低速设 备支持 8 字节的长度 它不能支持更大的或更小的其它长度 对于缺省控制通道的最大数据区长度 USB 系统软件要从设备描述器的头 8 个字节中读 出 设备将这 8 个字节放在一个包中发出 其中的七个字包含了缺省通道的 wMaxPacketSize 对其它的控制端点来说 USB 系统软件在它们被设置后 获得此长度 然 后 USB 系统软件就会保证数据净负荷区不会超长 另外 主机总是认为数据净负荷区的最 大长度至少为 8 端点所传的数据净负荷区长度必须小于或等于其 wMaxPacketSize(参见第 8 章) 当一个 数据区不能容纳所传数据时 就分几个区来传 除最后一个区外 其它区都应达到最大长 度 最后一区包含最后剩下的数据 当端点做了以下两件事时 控制传送的数据阶段可被认为结束 已传了由 Setup 阶段指定的数据量 传了一个数据包 它的长度为 0 或它的数据区长度小于最大长度 数据阶段结束后 主机控制器进入状态阶段 而不是开始另一个数据传诵 如果它不这 样做 端点会认为通道脱线而中止通道(通道脱线见 4.3.2) 如果主机在状态阶段时 主机 收到一个大于最大长度的数据区 那么请求这次传送的 IRP 将被中止 当数据全部传完 主机与端点之间的控制传送的数据阶段结束 如果其间 端点收到了 超过最大长度的数据区 它将中止通道 4.5.4 控制传送的总线访问的限制 无论低速设备还是高速设备都可以使用控制通道 端点没法指明控制通道对总线访问频率的要求 USB 权衡所有控制通道的总线访问频率和 正等待的 IRP 从全局优化 提供一个 最佳 传送方案 USB 要求数据帧中的一部分被留给控制传送使用 如果被引发的控制传送(引发方式由实现决定)只用了数据帧的不到 10%的时间 则剩余 的时间留给批传送(参见 4.8 节) 如果一个控制传送被引发又被中止 则它的中止可在本次的帧内 也可在以后的帧内 也就是说 引发和中止不必在同一个帧内 如果留给控制传送的时间不够用 但恰好有一些同步和中断传送的帧时间未用 则主 机控制器利用这些时间进行额外的控制传送 如果对可用的帧时间有太多的控制传送在等待 那么就对它们进行排序然后传送 如果各个控制传送申请的是不同的端点 主机控制器根据公平访问原则决定它们的访 问顺序 公平访问原则的具体内容决定于主机控制器的实现
·如果一个控制传送事务频繁地被中止,不能认为给它的总线访问时间是不公平的。 这些要求使得控制传送一般可以在总线上进行规则地、最优化地传送。 对某个端点的控制传送的速率是可以变化的,USB系统软件控制这些离散的变化。端点和 其客户软件不能想当然的认为其有一个固定的传送速率,端点可能发现在一帧内有零个或 若干个传送。一个端点和它相应的客户软件可占用的总线时间会因为其它设备进入或退出 系统或者本设备上的其它端点进入或退出系统而改变。 总线频率和帧定时决定于一个帧内可传送的控制传送的最大个数。在任一个SB系统内, 一个帧内的8字节高速数据区须少于29个,8字节低速数据区须少于4个。表4-1是关于 不同规格的高速的控制传送的情况,以及在一帧内可能的最大的传送数目。这张表有两个 默认的前提,即控制传送有一个数据传送阶段而且这个数据传送阶段有一个长度为0状态 阶段,表4-1还指出了出现两个数据区都达不到最大长度的情况,表中不包括用于管理的 些额外的位。 表4-1高速控制传送限制 协议开销(46字节) (9 SYNC bytes,9 PID bytes,6 Endpoint+CRC bytes, 6 CRC bytes,8 Setup data bytes,and a 7_byte interpacker delay(EOP,etc.)) 数据净荷区 最大带宽 Frame带宽/传送 最大传送数 剩余 有用数据 (字节/秒) 字节 字节/Frame 1 32000 3% 32 23 32 2 62000 3% 31 43 62 4 120000 3% 30 30 120 f 224000 4% 28 16 224 16 384000 4% 24 36 384 32 608000 5% 19 37 608 64 832000 7% 13 83 832 Max 1500000 1500 因为一个帧内只留10%的时间给非周期性传送,所以当一个系统的总线时间被排满的时 候,这个系统内的所有控制传送只能去竞争每个帧内的三个控制传送名额。因为除了客户 软件会要求控制传送外,SB系统要用控制传送来传送设置信息,所以对某个客户和它的应 用就不能指望它们的控制传送像它们想的一样进行。主机控制器可以自由地决定如何将某 个具体的控制传送在总线上进行,可以在一个帧内,也可以跨几个帧。一个端点可能发现 一个控制传送的各个总线处理事务在同一帧内或分在几个不连续的帧内。由于具体实现的 不同,主机控制器可能不能提供理论上的每帧的最大控制传送数目。 低速控制传送与高速控制传送都是竞争同样多的可用帧时间。低速控制传送只是要用更 多的时间来传送罢了。表4-2列出了不同规格的低速包的情况,以及一帧内允许的最大包 数。这张表同样没包括进管理用的开销。无论低速与高速,由于一个控制传送都由几个包 组成,所以都可能要用几个帧才能完成传送。 表4-2低速控制传送限制 协议开销(46字节) 数据净荷区最大带宽 Frame带宽/传送 最大传送数 剩余字节 有用数据 字节/Frame 字节Frame 3000 25% 3 46 3 2 6000 26% 3 43 6
如果一个控制传送事务频繁地被中止 不能认为给它的总线访问时间是不公平的 这些要求使得控制传送一般可以在总线上进行规则地 最优化地传送 对某个端点的控制传送的速率是可以变化的 USB 系统软件控制这些离散的变化 端点和 其客户软件不能想当然的认为其有一个固定的传送速率 端点可能发现在一帧内有零个或 若干个传送 一个端点和它相应的客户软件可占用的总线时间会因为其它设备进入或退出 系统或者本设备上的其它端点进入或退出系统而改变 总线频率和帧定时决定于一个帧内可传送的控制传送的最大个数 在任一个 USB 系统内 一个帧内的 8 字节高速数据区须少于 29 个 8 字节低速数据区须少于 4 个 表 4-1 是关于 不同规格的高速的控制传送的情况 以及在一帧内可能的最大的传送数目 这张表有两个 默认的前提 即控制传送有一个数据传送阶段而且这个数据传送阶段有一个长度为 0 状态 阶段 表 4-1 还指出了出现两个数据区都达不到最大长度的情况 表中不包括用于管理的 一些额外的位 表 4-1 高速控制传送限制 协议开销 46 字节 9 SYNC bytes, 9 PID bytes, 6 Endpoint+CRC bytes, 6 CRC bytes, 8 Setup data bytes, and a 7_byte interpacker delay(EOP, etc.)) 数据净荷区 最大带宽 字节/秒 Frame 带宽/传送 最大传送数 剩 余 字节 有用数据 字节/Frame 1 32000 3% 32 23 32 2 62000 3% 31 43 62 4 120000 3% 30 30 120 8 224000 4% 28 16 224 16 384000 4% 24 36 384 32 608000 5% 19 37 608 64 832000 7% 13 83 832 Max 1500000 1500 因为一个帧内只留 10%的时间给非周期性传送 所以当一个系统的总线时间被排满的时 候 这个系统内的所有控制传送只能去竞争每个帧内的三个控制传送名额 因为除了客户 软件会要求控制传送外 USB 系统要用控制传送来传送设置信息 所以对某个客户和它的应 用就不能指望它们的控制传送像它们想的一样进行 主机控制器可以自由地决定如何将某 个具体的控制传送在总线上进行 可以在一个帧内 也可以跨几个帧 一个端点可能发现 一个控制传送的各个总线处理事务在同一帧内或分在几个不连续的帧内 由于具体实现的 不同 主机控制器可能不能提供理论上的每帧的最大控制传送数目 低速控制传送与高速控制传送都是竞争同样多的可用帧时间 低速控制传送只是要用更 多的时间来传送罢了 表 4-2 列出了不同规格的低速包的情况 以及一帧内允许的最大包 数 这张表同样没包括进管理用的开销 无论低速与高速 由于一个控制传送都由几个包 组成 所以都可能要用几个帧才能完成传送 表 4-2 低速控制传送限制 协议开销 46 字节 数据净荷区 最大带宽 字节/Frame Frame 带宽/传送 最大传送数 剩余字节 有用数据 字节/Frame 1 3000 25% 3 46 3 2 6000 26% 3 43 6