QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1414|回复: 1

为什么我的开发板的USB只能部分识别啊??

[复制链接]
发表于 2006-6-14 20:51:14 | 显示全部楼层 |阅读模式
我的内核是2.6.11的
能识别的USB盘,正确的打印信息如下: (前面有"!!!"的是我另外加上的打印信息,主要是在core/hub.c中的函数中)
# !!! state 5 ports 4 chg 0000 evt 0010
!!! connect_change =0
!!! connect_change =0
!!! connect_change =0
!!! connect_change =0
!!! (1) hub_port_reset(hub, port1, udev, delay)=-134
!!! in hub_event, list_empty(&hub_event_list)!=0
!!! state 5 ports 2 chg 0000 evt 0004
!!! connect_change =0
!!! connect_change =0
!!! (1) hub_port_reset(hub, port1, udev, delay)=0
usb 3-2: new full speed USB device using ohci_hcd and address 2
!!! (2)hub_port_reset(hub, port1, udev, delay)=0
!!! usb_get_device_descriptor(udev, USB_DT_DEVICE_SIZE)=18
!!! udev->descriptor.bMaxPacketSize0=8
!!! udev->descriptor.bLength=12
!!! udev->descriptor.bDescriptorType=1
!!! udev->descriptor.bcdUSB=110
!!! udev->descriptor.bDeviceClass=0
!!! udev->descriptor.bDeviceSubClass=0
!!! udev->descriptor.idVendor=dd8
!!! udev->descriptor.idProduct=1003
!!! udev->descriptor.bcdDevice=200
!!! udev->descriptor.iManufacturer=1
!!! udev->descriptor.iProduct=2
!!! udev->descriptor.iSerialNumber=0
!!! udev->descriptor.bNumConfigurations=1
!!! new device strings: Mfr=1, Product=2, SerialNumber=0
!!! begin to usb_device_match()
!!! begin to usb_device_match()
!!! begin to usb_device_match()
!!! begin to usb_device_match()
!!! begin to usb_probe_interface
scsi2 : SCSI emulation for USB Mass Storage devices
!!! hub_port_connect_change return
!!! state 5 ports 2 chg 0000 evt 0004
!!! connect_change =0
!!! connect_change =0
!!! in hub_event, list_empty(&hub_event_list)!=0
!!! in hub_thread() ,after hub_event,begin wait_event_interruptible !
  Vendor:           Model:                   Rev:     
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sda: 62048 512-byte hdwr sectors (32 MB)
sda: assuming drive cache: write through
SCSI device sda: 62048 512-byte hdwr sectors (32 MB)
sda: assuming drive cache: write through
sda: sda1
Attached scsi disk sda at scsi2, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi2, channel 0, id 0, lun 0,  type 0

不能识别的USB盘 的打印信息如下:
# !!! state 5 ports 4 chg 0000 evt 0010
!!! connect_change =0
!!! connect_change =0
!!! connect_change =0
!!! connect_change =0
!!! (1) hub_port_reset(hub, port1, udev, delay)=-134
!!! in hub_event, list_empty(&hub_event_list)!=0
!!! state 5 ports 2 chg 0000 evt 0004
!!! connect_change =0
!!! connect_change =0
!!! (1) hub_port_reset(hub, port1, udev, delay)=0
usb 3-2: new full speed USB device using ohci_hcd and address 3
!!! (2)hub_port_reset(hub, port1, udev, delay)=0
!!! usb_get_device_descriptor(udev, USB_DT_DEVICE_SIZE)=18
!!! udev->descriptor.bMaxPacketSize0=64
!!! udev->descriptor.bLength=12
!!! udev->descriptor.bDescriptorType=1
!!! udev->descriptor.bcdUSB=110
!!! udev->descriptor.bDeviceClass=0
!!! udev->descriptor.bDeviceSubClass=0
!!! udev->descriptor.idVendor=204
!!! udev->descriptor.idProduct=6025
!!! udev->descriptor.bcdDevice=100
!!! udev->descriptor.iManufacturer=0
!!! udev->descriptor.iProduct=0
!!! udev->descriptor.iSerialNumber=0
!!! udev->descriptor.bNumConfigurations=1
!!! new device strings: Mfr=0, Product=0, SerialNumber=0
!!! begin to usb_device_match()
!!! begin to usb_device_match()
!!! begin to usb_device_match()
!!! begin to usb_device_match()
!!! begin to usb_probe_interface
scsi3 : SCSI emulation for USB Mass Storage devices
!!! hub_port_connect_change return
!!! state 5 ports 2 chg 0000 evt 0004
!!! connect_change =0
!!! connect_change =0
!!! in hub_event, list_empty(&hub_event_list)!=0
!!! in hub_thread() ,after hub_event,begin wait_event_interruptible !
/******************这里要等待一段时间************************/
!!! (1) hub_port_reset(hub, port1, udev, delay)=0
usb 3-2: reset full speed USB device using ohci_hcd and address 3
usb 3-2: scsi_eh_3 timed out on ep0in
!!! (2)hub_port_reset(hub, port1, udev, delay)=0
usb 3-2: device descriptor read/64, error -145
usb 3-2: scsi_eh_3 timed out on ep0in
!!! (2)hub_port_reset(hub, port1, udev, delay)=0
usb 3-2: device descriptor read/64, error -145
!!! state 5 ports 2 chg 0000 evt 0004
!!! connect_change =0
!!! connect_change =0
!!! in hub_event, list_empty(&hub_event_list)!=0
.........................以下省略


初看好象前面都是一样的,直到执行函数wait_event_interruptible(khubd_wait, !list_empty(&hub_event_list))的时候,出现问题,好象是list_empty(&hub_event_list)的返回值不一样,但我不知道为什么会出现这样的问题.有高手知道吗??
下面是/usb/core/hub.c中的线程函数:
static int hub_thread(void *__unused)
{
        /*
         * This thread doesn't need any user-level access,
         * so get rid of all our resources
         */

        daemonize("khubd");
        allow_signal(SIGKILL);

        /* Send me a signal to get me die (for debugging) */
        do {
                hub_events();
                wait_event_interruptible(khubd_wait, !list_empty(&hub_event_list));
                try_to_freeze(PF_FREEZE);
        } while (!signal_pending(current));

        pr_debug ("%s: khubd exiting\n", usbcore_name);
        complete_and_exit(&khubd_exited, 0);
}
我都快分析了一周了,没解决!
求高手,帮忙分析一下!
 楼主| 发表于 2006-6-15 01:32:24 | 显示全部楼层
没人会吗?帮忙分析一下也可以啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-23 09:31 , Processed in 0.050909 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表