USB3.2超高速的设备总线枚举
USB3.2超高速定义了7种设备状态,比以往多了一个错误状态。
USB的设备状态图代表着从USB设备的状态转换过程。要进行状态转换,当然必须是先将USB设备插入到USB接口中,这个USB接口可以是USB集线接口,也可以是根集线器的接口。当USB设备插入USB接口后,USB设备进入Attached状态。在这个时候,USB设备还没有上电,即VBus还没有对USB设备供电,所以这个Attached状态仅指的是物理连接状态。
当USB设备连接到USB接口后,通过VBus开始对设备供电,这时设备开始从USB总线上获取电流,这时设备进入Power状态。进行电源供电状态后,根所Far-end Revciver终端是否存在或被侦察决定是进行USB3的超高速链路训练态还是USB2.0高速的传设备状态。USB集线器一般是双总线结构,就是为了向后兼容USB2.0。
链路训练失败后,这说明USB3.0的超高速通道无法使用了,那么切换至USB2.0状态,让设备还可以用,虽然速度慢了点。
链路训练完成后,进行Defaul状态,这个状态是USB设备枚举的开始。具体过程这里就和USB2.0类似了,如进行为Address状态用于对设备分配通讯地址,配置状对设备选择工作配置。
相比于USB2.0,设备的枚举过程也类似,都是设备插入USB接口后,由USB集线器上报给主机有设备接入,USB主机通过GetPortStatus获取设备状态,有时需要复位。然后通过默认的地址获取设备的描述符,然后设置地址,再获取设备描述符,配置描述符,选择配置等。不过由于USB3.2引入了一些新的东西,比如关于延迟的LTM,U1/U2的超时通过SetPortFeature完成。当然这些都是在设备置配前及正式工作前完成。
当然在进行default状后,这时说明物理链路是正常的,这样当设备在分配地址(Address),配置(Congigured)时失败,这时设备会进入错误状态。
错误状态(Error)是指如果设备处于默认、地址、配置或挂起状态,如果由于超时而退出恢复状态,则进入错误状态。如果设备被热复位,拔掉,可将设备从此中状态中恢复。
错误状态(Error)还是比较常见的,比如在设备管理器中显示设备的描述符错误等,这一类错误都是错误状态。这种方法只能通过上述的拨掉设备或换机器来恢复了。
更多参考可见:
USB 枚举/断开过程 http://www.usbzh.com/article/detail-110.html
USB设备的枚举过程分析 http://www.usbzh.com/article/detail-419.html
Windows下USB设备的枚举过程分析 http://www.usbzh.com/article/detail-420.html