您现在的位置: USB开发网 > USB技术文档 > USB专题 > USB1.1协议中文完整在线版
USB1.1协议中文完整在线版

9.2 通用USB设备操作(Generic USB Device Operations)

------分隔线----------------------------

9.2 通用USB设备操作(Generic USB Device Operations)

  所有的USB设备支持通用的操作集,这一节主要描述的这些操作。

9.2.1 动态插接与拔开

  USB设备必须在任意时刻允许被插接与拔开。提供连接点或端口的集线器应当负责汇报端口的状态改变情况。

  当主机探测到连接操作后,会使得所连的集线器端口生效,设备也会因此而复位,一个被复位了的USB设备有如下特性:

  • 对缺省USB地址发生响应
  • 没有被配置
  • 初始状态不是挂起

  当设备从一个集线器端口移去时,集线器会使得原来连接的端口失效,并且通知主机设备已移去。

9.2.2 地址分配

  当USB设备连接以后,由主机负责给此设备分配一个唯一的地址,这个操作是在设备复位及端口使能操作以后。

9.2.3 配置

  USB设备在正常被使用以前,必须被配置,由主机负责配置设备。主机一般会从USB设备获取配置信息后再准定此设备有哪些功能。

  作为配置操作的一部分,主机会设置设备的配置值,并且,如果必要的话会选择合适的接口的备选设置。

  只须一个简单配置,一个设备可能支持多重接口。一个接口是一组端结点集合,它们代表了设备向主机提供的单一的功能或特性,用来与这组相关端结点通信的协议以及接口内各端结点的目的可以作为一个设备类的一部分或者由厂商制定具体定义。

  另外,一个配置中的结口可能有备选设置。这些备选设置会重定义相关端结点的数目或特性。如果是这样的话,设备必须支持GetInterface(接口请求)与Set Interface(接口设置)请求,来汇报及选择指定的接口的设备选设置。

  在每个设备配置下,每个接口描述表可能包括用来标识接口的及备选设置的域,接口被从0~N-1编号。n为配置所支持的能同时使用的接口数目,类似的设置的编号也从0开始。当设备初始化配置后,缺省设置是备选设置0。

  为了支持通用的设备驱动程序管理一组相关的BUS设备,设备与接口描述表中包含了类(Class),子类(Sub class),及协议(Protocol)域。这些域用来标识一个设备的功能及用于通信的协议。

  一个类值被分配给一组按照特性划分成USB类说明一部分的设备。一个类的设备可进一步划分成子类,并且在一个类或子类中,一个协议代值可定义主机软件是怎样与设备通信的。

  注意:类、子类、与协议值必须一致,但在本说明范围之外。

9.2.4 数据传送

  数据可能以四种方式在USB设备端结点与主机之间传送。四种传送方式参见第五章。在不同设置下,一个终端结点可能被用于不同的传输方式,但一旦设置选定,传送方式就选定了。

9.2.5 电源管理

  USB设备的电源管理包括以下说明部分的几条。

9.2.5.1 电源

  USB总线电源是一个有限的资源,在设备标识(device enumeration)阶段,主机估测电源的需求。如果电源的需求量超过USB总线所能提供的电量,主机软件则不能选择那个配置。

  USB设备应将电源需求量限制在一个单元以下,直到被配置。中止(挂起)的设备,不管是否已经配置过了,应将总线耗电降到第7章定义的标准以下。视接到设备的端口电源负载能力而定,USB设备在配置了以后可从VBUS汲取达5个单元的电量。

9.2.5.2 远程唤醒

  远程唤醒能力参许一个被挂起的USB设备发达信号给处于挂起状态的主机。这个信号会使得主机醒来,处理触发事件。USB设备通过配置描述来向主机汇报其远程唤醒的能力。USB设备的远程唤醒能力应能被禁止的。远程唤醒能力通过7.1.7.5节中电信号的方式来达到的。

 9.2.6 请求处理

  除SetAddress( )请求以外(见9.4.6节),在安装完成返回ACK信号以后,设备就开始处理请求。在某一状态成功结束以前,设备应当“完成”对请求的处理。许多请求费时较多,像这样的请求,该设备类应定义一个方法而不是等待交换状态信息阶段(StatusStage)的结束来表示该操作已经完成。像这样的操作有:集线器端口的复位至少需10ms来完成。当端口复位产生时,SetPortFeature (PORT-RESET)(见11章)请求就结束了。当端口状态改变并表明此端口已经生效时,一个信号就会产生表明复位信号已经结束。这种技术可以防止当主机知道某一个请求费时较长的情况一直探测此请求是否已完成。

9.2.6.1 请求处理的定时处理

  所有的设备应当及时处理请求,USB给定一个5秒的命令处理的时间上界。这个限制并不是对所有情况都适用的。这些限制在接下来的部分给予描述,应当说明的是,下面的限制包括实现的很大的范围。如果所有设备都采用最大的请求处理允许时间的话,用户是无法忍受的。应此,具体实现应当尽可能快地完成请求的处理。

9.2.6.2 复位/继续 恢复时间

  当一个端口被复位或从中止态继续的时候,USB系统软件应当等待一个10ms的恢复时间才能确保端口对数据传输产生响应。

  一旦恢复时间段结束(从reset信号结束,或resume信号结尾的EOP结束开始计时)设备必须在任意时刻都能对数据传输作出响应。

9.2.6.3 设置地址的处理

  在reset/resume恢复时间段以后,如果设备收到SetAddress( )请求,设备必须能在50ms内完成请求的处理,并完成状态的转换,在SetAddress ( )的请求下,当设备发出O长度的状态数据包或设备收到状态数据包的响应信号ACK就表明状态转换结束了。

  在状态转换结束后,设备有2ms的SetAddress ( )恢复时间。在这段时间结束以后,设备必须能在新地址处接受Setup数据包,并且,必须确保此时设备不对旧地址的信号产生响应。(当然,除非新旧地址是一样的)。

9.2.6.4 标准设备请求

  对于不须传送数据标准的设备请求,一个设备必须在收到请求的50ms以内结束对请求的处理及状态的转换。

  对于需要数据传输的标准设备请求,设备必须在收到请求的500ms以内返回第一个数据包。接下来的数据包必须在前一个数据包发送起的500ms以内开始发送。设备必须在最后一个数据包返回以后的50ms以内结束状态的转换。

  对于需要数据传输的标准设备请求,5秒的限制就起作用了。这意味着设备必须能在主机以设备最大能接受的速率发送数据包的情况下接收所有的数据包并且完成状态切换,数据包之间时延是主机让设备完成请求处理而加入的。

9.2.6.5 与类有关的请求

  除非在类文档中特别说明,所有的类有关的请求必须按照标准请求的时间限制。

  类说明文档可能要求设备反应比这部分讲的要快。标准设备请求与与类有关的设备请求可被要求反应更快。

9.2.7 请求错误

  如果一设备收到一个请求,它或是在设备中无定义,或是不适用于当前设置,或是数值不对,这时就会产生一个请求错误。设备在下一个数据传输阶段或状态交换阶段(Status stage)返回一个表明错误的STALL PID信号,一般在下一个数据传输返回更好,这样可减少不必要的总线活动。

------分隔线----------------------------
USB开源项目
联系我们
  • Q Q: 1148374829 点击这里给我发消息
  • 旺旺:jhoneqhsieh 点击这里给我发消息
  • 电话:(0)15923141204
  • 淘宝网店