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中剩下的数据(可参见关于传送类