jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
阅读:3983回复:6

为什么两个相同的USB设备接入不同的主机控制器有冲突?

楼主#
更多 发布于:2007-03-15 15:57
  两个usb设备,硬件上一样,固件也一样,驱动是同一个,接在同一个主机控制器下可以正常显示两个设备;接在不同的主机控制器下只能显示一个设备:先接入一个USB设备在主机控制器A,在"设备管理器"中可以识别出来,然后另一个USB设备接入不同的主机控制器B时,仍只识别一个usb设备,并且在该设备上显示黄色“!”号,当拔出两个设备中的任一个后,设备管理器中就不显示该设备。
    不知道是什么原因造成上面的问题,在多个PC机上试过,此问题重现,说明与PC机无关。
    我不知道是usb驱动的原因还是固件的原因,或者是硬件的问题,已经郁闷了两个星期,找不到解决方法。请帮忙分析原因。
耕一块贫瘠的土地
jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-15 19:49
为什么同一个主机控制器下可以不同主机控制器就不行呢?
耕一块贫瘠的土地
jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-03-16 12:38
忘了说了,当两个设备冲突时,“设备管理器”中显示的设备状态是“由于系统中已有一个重复的设备,Windows 无法加载这个硬件的设备驱动程序。 (代码 42)”。
耕一块贫瘠的土地
ytwei
驱动小牛
驱动小牛
  • 注册日期2005-04-01
  • 最后登录2010-07-30
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望102点
  • 贡献值0点
  • 好评度85点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-03-16 14:16
1、这个问题是由于你的两个设备使用了同样的序列号,在连接到两个控制器上,某些情况下会引起系统重启。我说的某些情况是,我以前碰到这样的问题,一定会引起重启,而你没有提到。
2、同一个控制器上连接OK,不同的控制器上连接会出现问题。我的分析原因(未经证实)是,两个同样SN的USB设备连接到同一个控制器上时,后连接的设备会被控制器换一个序列号(形如6&387349e1&0&1)报告给系统,当然也有可能是控制器用别的方法报告给系统,再由系统分配的SN。而不同的控制器彼此不知道对方已连接一个和自己相同SN的设备,OS又没有做相同SN设备的考虑(更有可能OS是为了满足USB的规范),于是就^_^。
3、你在测试设备和上位机软件时,可以考虑把固件的SN改成无,具体的应该是把SN的Index改成0即可。这样OS系统对无SN的设备不会有冲突现象发生。
jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-03-16 15:05
感谢ytwei!
确实是SN的问题,原来在固件中把SN写了一个固定的字符串.
再次感谢!
耕一块贫瘠的土地
jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-03-17 10:33
ytwei在第1点中提到的“两个设备使用了同样的序列号,在连接到两个控制器上,某些情况下会引起系统重启”我确实没有遇到这种情况,也许是操作系统有关,我是在winxp(sp2),其他的os没试过。
ytwei在第2点中提到的“同一个控制器上连接OK,不同的控制器上连接会出现问题”,我是这样认为的:在同一个主机控制器下,主机给设备分配的设备地址不同,于是后接入的设备被主机控制器分配了不同的序列号(第一个接入的设备仍然是一个固定值,不知系统分配的),这样就不会产生问题。在不同的主机控制器下,主机给设备分配的设备地址相同(通过usbview可以看到,usb协议中说的“控制器给设备分配唯一的地址”我认为是在同一个控制器的前提下),于是设备序列号也相同,问题就产生了。

最后我把SN的index改为0,问题解决了。感谢ytwei的帮助,这两个星期的郁闷终于结束了^_^
耕一块贫瘠的土地
liseyy
驱动牛犊
驱动牛犊
  • 注册日期2010-07-16
  • 最后登录2010-07-20
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-07-16 19:41
游客

返回顶部