我对USB并不是很了解。
如题:请问Windows下USB端口的地址分配是怎样的?USB的驱动程序大概做了一些什么事情?当设备插入USB端口后系统做了哪些工作,如何进行地址分配的?
USB端口的地址是不是不是和CPU统一编址,而是独立编址的,每个端口的地址是固定的,当某个设备插入某个USB口后,系统根据设备描述符加载对应的驱动。而不是一个设备插入某个USB口后,动态分配端口地址,而存在可能占用其它已插入的USB设备的端口地址?谢谢!
------解决方案--------------------
简单来讲USB设备的管理操作系统就都做了,你不用关心怎么分配地址的,就好像你不用关心你操作系统的文件是存放在具体哪个硬件扇区一样。对于USB的开发,只需要了解USB的基本协议,MSD,HID,CDC等就行了。有很多东西不要了解太深,对于刚开始学的人来讲简单一些容易理解和掌握。
------解决方案--------------------
如果设备驱动都正常安装了,应该不是端口分配地址的原因。不同的USB设备有不同的VID/PID,Windows系统会为
每个设备分配独立且唯一的Device ID设备之间不会有冲突的。
从你将摄像头分开接入不同的Host Controller上可以解决问题来看,有可能是USB带宽不够了。摄像头传输图像数据,非常消耗带宽。如果USB带宽不够是会造成某些USB设备不工作或者工作不正常。特别是一些用Bulk传输的设备,会响应慢。如果某个设备驱动程序写的不好,会造成系统崩溃。
另外一个问题,你的XP升级安装了SP3了么?确保系统的USB Host Controller安装了最新的驱动程序。