USB 获取设备描述符 问题
在向设备发送 请求获取设备描述符过程中,使用的是设备的地址0,成功获取设备描述符后 调用 hub_set_address() 发送请求设置设备的地址!
我的问题是,此时有两个USB 设备连接上来,那么针对每个设备我们必须获得设备描述符,发送 setup token packet,在此包中包含设备的地址(0),而问题是 Host Controller 怎样根据设备地址(0)将packet 发送到具体的设备中去呢?设备的地址应该是不同的啊!请指教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
lz 是在做Wireless USB相关的东西么?
看了下hub.c里面的这个hub_set_address(),只有在WUSB的时候才会用到。
如果不是WUSB的话,那么 set_address()这个动作并不是由Hub所完成的,是在usbcore里面去实现的。
关于你的问题,两个USB device连接上来的话,他们初始的地址的确都是0,不过他们连接一定有先后顺序,所以对应的USB Enumeration的动作也是有先后的,即使你先在hub上接好device也一样,所以Enumeration的时候不会出问题。
上面只是大致的解释,具体的话请参考fundan_abc的Linux那些事 。
回复 2# wyqt
谢谢您的回复,我已经解决了上述问题!
主机一次 只能列举一个USB设备,所以同一时刻只能有一个USB设备使用缺省地址0!
路过