打印

我自制的高速U盘总是导致其它高速U盘无法枚举成功?

[复制链接]
2727|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小弟初来发帖,接触USB设备也没多久,请各位高手不吝赐教!      我自制了一个USB2.0的高速U盘,独自运行没有问题,但是如果同时在主机上再插入一个高速U盘的话,将会导致我买的U盘无法枚举。即使先插入我买的U盘,也是我自制的U盘可以工作,而我买的U盘无法工作。  大家都知道,USB2.0高速端口都是在设备管理器的最后一个根集线器下,所以二者是公用一个根集线器的,不知什么原因(不是电压问题,因为我把两个U盘分别插到主机箱前后也是这样),请教高手,谁有没有遇到相似的情况,或者有什么建议?

相关帖子

沙发
iqizheng|  楼主 | 2012-8-4 11:35 | 只看该作者
我先自我顶一下吧,呵呵,我怀疑有两个原因: 一是可能是硬件板子哪个地方出现了问题;二是 我自制的U盘枚举太慢了,延迟了别的U盘的枚举。可是为什么我自制的U盘总是能导致其它U盘不能枚举,而其自己无论什么时候插入主机,都可以枚举成功,正常工作呢?

使用特权

评论回复
板凳
iqizheng|  楼主 | 2012-8-6 09:11 | 只看该作者
也没有高手给个意见吗,各位看官,给点建议吧,不能让我第一次发帖就被无视了啊,先谢谢了。

使用特权

评论回复
地板
insignal| | 2012-8-6 22:42 | 只看该作者
本帖最后由 insignal 于 2012-8-8 09:13 编辑

“,USB2.0高速端口都是在设备管理器的最后一个根集线器下,所以二者是公用一个根集线器的”

并不是说EHCI在最后一个UHCI下,就只有最后这个root HUB才是2.0高速的,一般的机器,只要有EHCI,所有的root hub就都是usb2.0高速的。可以用高速u盘做测试来验证,如果插在非usb2.0高速hub上,系统会有提示的。

所以,对你这个问题来说,插哪个hub都一样。

建议你从硬件、固件上查一下:
1、硬件:插入usb瞬间电流,用电流表看一下,如果插入瞬间电流过大,一般会导致主板所有usb端口都会异常。我们曾碰到过此类情况。

2、固件:用usb cv做一下测试,更严格的,用windows徽标测试中的usb测试部分做一下测试,看是否有兼容性、稳定性方面的问题。一般来说,经过徽标测试的usb设备,至少在兼容性方面没有问题。

使用特权

评论回复
5
iqizheng|  楼主 | 2012-8-7 14:40 | 只看该作者
4# insignal 首先,表示一下感谢,我接触USB时间不长,可能有不少误解,请你多多指教了,呵呵,拜谢!
只要有EHCI,所有的root hub就都是usb2.0高速的”  
关于这个我也不是很清楚,我只是说一下现象,如有不对望指正。
我主机上总共有5个USB主控制器和5个USB根集线器,前4个USB主控制器都不支持USB2.0高速,只有最后一个支持,这是我把最后一个禁用后,插入高速U盘就会提示插到了非USB2.0高速端口得出的结论。
而且最后一个根集线器是有8个端口的,我把多个USB高速设备插到主机箱前后任何usb端口,它都会自动识别到最后一个根集线器下,所以任何高速USB设备都共用最后一个根集线器。
再说明一点,我用的xp系统,所以我对 “只要有EHCI,所有的root hub就都是usb2.0高速的”  这句话不是很理解,望楼上帮我解惑,也同时欢迎大家积极回复,谢谢。

使用特权

评论回复
6
insignal| | 2012-8-8 08:48 | 只看该作者
本帖最后由 insignal 于 2012-8-8 09:15 编辑

EHCI(支持高速USB2.0)结合UHCI(支持全速、低速)才能共同支持USB2.0高速、全速、低速usb设备。
如果只有UHCI,没有EHCI,则只能支持全速、低速设备。
所以,你把EHCI禁用了,那当然所有的HUB就都不支持高速2.0的设备了。

“最后一个根集线器是有8个端口的,我把多个USB高速设备插到主机箱前后任何usb端口,它都会自动识别到最后一个根集线器下”
你是用usb verify看的吧,
你拿一个usb鼠标或键盘(一般是低速usb设备)对比看一下就明白了

如果你想了解更多,可以到intel或google一下 EHCI spec,大概了解一下EHCI的原理就比较好理解你的问题了。

使用特权

评论回复
7
insignal| | 2012-8-8 09:22 | 只看该作者
本帖最后由 insignal 于 2012-8-8 09:27 编辑

EHCI spec中的描述:
A USB 2.0 Host Controller includes one high-speed mode host controller and 0 or more USB 1.1 host
controllers
(see Figure 1-2). The high-speed host controller implements an EHCI interface. It is used for all
high-speed communications to high-speed-mode devices connected to the root ports of the USB 2.0 host
controller. This specification allows communications to Full- and Low-speed devices connected to the root
ports of the USB 2.0 host controller to be provided by companion USB 1.1 host controllers. If an
implementation does not include companion host controllers, the host controller must include a high-speed
device permanently attached to each of the EHCI ports the implementation is planning to utilize. The EHCI
controller cannot work with a Full- or Low-speed device.

High-speed devices are always routed to and controlled by the EHCI host controller (eHC). When running
and configured, the eHC is the default ownerof all the root ports. The eHC and its driver initially detect all
device attaches. It has additional control bits visible in each port register to manage the routing logic. For
example: if the attached device is not a high-speed device, the eHC driver releases ownership of the port
(and thus control of the device) to a companion host controller. For that port, enumeration starts over from
the initial attach detect point and the device is enumerated under the cHC. Otherwise, the eHC retains
ownership of the port and the device completes enumeration under the eHC.

ehci.JPG (22.32 KB )

ehci.JPG

使用特权

评论回复
8
insignal| | 2012-8-8 09:25 | 只看该作者
说简单点
uhci(或ohci)只支持全速、低速设备。
ehci只支持高速设备。

usb device先和EHCI连接,ehci如果发现这个不是高速设备,则交给UHCI来连接。

使用特权

评论回复
9
iqizheng|  楼主 | 2012-8-8 11:43 | 只看该作者
6# insignal "你是用usb verify看的吧,
你拿一个usb鼠标或键盘(一般是低速usb设备)对比看一下就明白了"
我是用设备管理器看的。见下图(由于不能传图片,是我百度上找的,类似):


说实话,你说的有点很专业,我比较懵懂,像你所说的“usb verify”我也不知道是啥,我就是用设备管理器看的,或者bus hound

使用特权

评论回复
10
iqizheng|  楼主 | 2012-8-8 11:46 | 只看该作者
图片无法显示,发网址好了: http://image.baidu.com/i?ct=5033 ... &S314&TPjpg

使用特权

评论回复
11
insignal| | 2012-8-8 12:01 | 只看该作者
usb verify就是一个工具
用那个工具就能清楚看到root hub、所插上usb device的信息
建议你用那个工具看一下
将高速u盘、usb鼠标插在不同的端口上,看这些设备都出现在哪个地方
就比较好明白了

usbverfy.rar

112.27 KB

使用特权

评论回复
12
iqizheng|  楼主 | 2012-8-8 19:43 | 只看该作者
11# insignal usb verify 这个工具看起来和设备管理器中的差不多,不过它可以显示端口的配置情况。情况和原先还是一样的,高速设备都会到最下边的USB根集线器下的,所以还是共用一个根集线器。

使用特权

评论回复
13
insignal| | 2012-8-8 22:55 | 只看该作者
“情况和原先还是一样的,高速设备都会到最下边的USB根集线器下的”
是的,无论高速设备插在那个端口,都会显示在最下边的EHCI下,是吧?
但如果是全速或低速设备,就会显示在上面的UHCI下。

“所以还是共用一个根集线器”
EHCI和UHCI就是共同作用的,才能在一个hub上既能支持高速,又能支持全速、低速。

不知道你的疑问是什么,我有点糊涂了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

25

帖子

0

粉丝