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