求助:我的单板偶尔检测不到U盘的插拔

king_208 2010-10-20 11:43:06
大家好,我的单板上面有两个USB接口,正常情况下可以检测到U盘的插拔

可是有的时候用两个U盘反复进行插拔的时候,会导致某一个USB接口失去作用,也就是U盘拔出来时,内核不提示打印,仿佛

是没有检测到U盘的拔出,然后再插入到那个USB接口后,也无法检测到插入

我ps了一下,发现有几个奇怪的进程:

1296 root SW< [scsi_eh_16]
1297 root SW< [usb-storage]
1299 root DW< [usb-stor-scan]

按理说,当U盘拔出时,上面3个进程都会消失的,现在这几个进程没有消失,就是说内核没有检测到U盘的拔出,所以这三个

进程才会变成这样的状态?

此时,如果再次插入U盘,就不会有任何响应了,因为上面3个进程还在,内核就会以为U盘是一直插在上面的?

我想把这三个进程杀掉,然后再重新插拔,来证实我的想法,可是这些进程又没有办法杀掉

大家能否就这种情况给点提示?非常感谢!!!
...全文
135 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
homlinlee 2013-01-23
LZ问题解决了么?我也遇到类似问题,求解答!谢谢!
回复
gettext 2010-10-22
内核版本是多少?
回复
king_208 2010-10-22
我在hub_thread和hub_events里都加了打印

当USB口出现问题时,在那个USB口插拔U盘都没有任何打印出来!
回复
king_208 2010-10-22
应该不是中断没有被响应,因为我板子上有两个USB口,用的是一个中断

当一个USB口出问题时,另一个还是可以使用的
回复
king_208 2010-10-22
[Quote=引用 4 楼 gettext 的回复:]
内核版本是多少?
[/Quote]

Linux version 2.6.20.21-pmc (zhangsong@XPONPP) (gcc version 3.4.4 mipssde-6.05.00-20061023) #3012 SMP Fri Oct 22 10:30:33 CST 2010
/ #
回复
pottichu 2010-10-20
这个情况跟 usb 设备的 热插拔有关系, 有时候 usb 接口正在交换数据,
然后设备被拔出,虽然硬件已经感知到 设备被拔出,但是驱动没办法正常处理,
因为数据处理部分在发送/接受数据, 传输失败的时候会进行重试,
如果驱动不够强壮,就会出现问题, 驱动没有正确处理 disconnect 。然后就出现你的问题了 。
你 dmesg看一下,是否有错误信息。

另外关于 usb reset , 你 google 一下 libusb ,这个库中有相应的接口,需要你自己移植
并编写程序来实现。
回复
king_208 2010-10-20
[Quote=引用 1 楼 pottichu 的回复:]
这种情况是有的, 我觉得应该是 u 盘拔出的 中断没有正确响应,也就导致
usb disconnect 没有正确执行,相关资源没有正确释放。
这3个是内核线程, 杀不死的。 但是可以通过 reset usb 接口来实现。
[/Quote]

您好,请问这种情况您也遇到过?

U盘中的为啥没有被正确响应呢?还有就是如何reset usb接口呢,在串口上敲啥命令可以实现呢?

谢谢!!!
回复
pottichu 2010-10-20

这种情况是有的, 我觉得应该是 u 盘拔出的 中断没有正确响应,也就导致
usb disconnect 没有正确执行,相关资源没有正确释放。
这3个是内核线程, 杀不死的。 但是可以通过 reset usb 接口来实现。
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4152

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2010-10-20 11:43
社区公告
暂无公告