USB 枚举过程 USB Enu meration USB架构中, hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt IN Endpoint)来向主机(Host)报告
在系统启动时,主机轮询它的根 hub(Root Hub)的状态看是否有设备(包括子 hub和子 hub上的设备)连接
USB总线拓扑结构见下图(最顶端为主机的Root Hub): USB总线拓扑结构 (USB Bus Topology) 一旦获悉有新设备连接上来,主机就会发送一系列的请求(Resqusts)给设备所挂载到的hub,再由 hub建立起一条连接主机(Host)和设备(Device)之间的通信通道
然后主机以控制传输(Control Transfer)的方式,通过端点0(Endpoint 0)对设备发送各种请求,设备收到主机发来的请求后回复相应的信息,进行枚举(Enumerate)操作
所有的USB设备必须支持标准请求(StandardRequests),控制传输方式(Control Transfer)和端点0(Endpoint 0)
从用户角度来看,枚举过程是自动完成并不可见的
但很多初次使用的设备连接时,系统会弹出说新硬件检测到,设备安装成功,可以使用之类的消息提示框,而且有时还需要用户配合选择安装相关的驱动
当枚举完成后,这个新添加的设备可在 Windows的设备管理器里面看到,当用户删除这个设备/硬件时,系统把这个设备从设备管理器里删除
对于一般的设备,固件(Firmware)内包含主机所要请求的信息,而有些设备则是完全由硬件来负责响应主机的请求
在主机方面则是由操作系统而非应用程序负责处理相关枚举操作
枚举步骤 USB协议定义了设备的 6种状态,仅在枚举过程种,设备就经历了 4个状态的迁移:上电状态(Pow ered),默认状态(Default),地址状态(A