当前位置: 代码迷 >> 驱动开发 >> 请教Windows下USB端口的地址分配是怎样的?USB的驱动程序大概做了一些什么事情?当设备插入USB端口后系统做了哪些工作
  详细解决方案

请教Windows下USB端口的地址分配是怎样的?USB的驱动程序大概做了一些什么事情?当设备插入USB端口后系统做了哪些工作

热度:129   发布时间:2016-04-28 10:16:25.0
请问Windows下USB端口的地址分配是怎样的?USB的驱动程序大概做了一些什么事情?当设备插入USB端口后系统做了哪些工作?
我对USB并不是很了解。
如题:请问Windows下USB端口的地址分配是怎样的?USB的驱动程序大概做了一些什么事情?当设备插入USB端口后系统做了哪些工作,如何进行地址分配的?
USB端口的地址是不是不是和CPU统一编址,而是独立编址的,每个端口的地址是固定的,当某个设备插入某个USB口后,系统根据设备描述符加载对应的驱动。而不是一个设备插入某个USB口后,动态分配端口地址,而存在可能占用其它已插入的USB设备的端口地址?谢谢!
------解决方案--------------------
简单来讲USB设备的管理操作系统就都做了,你不用关心怎么分配地址的,就好像你不用关心你操作系统的文件是存放在具体哪个硬件扇区一样。对于USB的开发,只需要了解USB的基本协议,MSD,HID,CDC等就行了。有很多东西不要了解太深,对于刚开始学的人来讲简单一些容易理解和掌握。
------解决方案--------------------
引用:
具体问题就是这个:因为我们整个系统有三个USB设备:两个摄像头,两个USB转串口的涉嫌头,一个专用设备(使用Cypress的USB芯片),反复测试下来的结果是USB的连接造成系统关不了机;或者突然间鼠标键盘不能动的死机状态;或者有时候摄像头显示画面不更新。调换USB的连接就可以避免出现这种情况,而硬件工程师说:四组USB口,一组两个,而每组的USB都是适用的同一个芯片,所以理论上是一样的。于是老板就认为是端口分配地址造成的。我认为这是工控机的USB硬件设计有问题。
后来解决的方法是:升级工控机的BIOS;工控机有两个USB HostController,一个带了两个Generic USB hub,一个带了其它几个,必须将两个摄像头连在带两个Generic USB hub的USB HostController上才行。
两个USB转串口的操作杆。




如果设备驱动都正常安装了,应该不是端口分配地址的原因。不同的USB设备有不同的VID/PID,Windows系统会为
每个设备分配独立且唯一的Device ID设备之间不会有冲突的。

从你将摄像头分开接入不同的Host Controller上可以解决问题来看,有可能是USB带宽不够了。摄像头传输图像数据,非常消耗带宽。如果USB带宽不够是会造成某些USB设备不工作或者工作不正常。特别是一些用Bulk传输的设备,会响应慢。如果某个设备驱动程序写的不好,会造成系统崩溃。

另外一个问题,你的XP升级安装了SP3了么?确保系统的USB Host Controller安装了最新的驱动程序。

  相关解决方案