阅读:1611回复:4
求教版主(50分):为什么我用周立功的D12固件,在Linux的驱动中无法对bulk pipe进行读呢?老是超时:(
急死我了,这个问题困扰了我快一个月了:(
下面的代码中usb_control_msg总是能成功的返回。但usb_bulk_msg 在等待了10秒钟后就总是返回超时。我每次读的数据都不超过64字节的。 我也看过网上关于周立功固件在read bulk pipe时会超时错误的帖子,但还是不明白。 因为我用同样的固件在Windows的驱动下是能正常读的,没有出现过超时的问题。 我想问题应该是出在Linux这边,但始终找不到问题的根源,谁能救救我啊 ! // Fill SETUP phase data dma_request_setup.request_type_8=0x40; dma_request_setup.request_8=0x0C; dma_request_setup.value_16=0; dma_request_setup.index_16=0x0471; dma_request_setup.length_16=6; //Fill DATA phase data dma_request_data.address_low_16=0; dma_request_data.address_high_8=0; dma_request_data.transfer_size_16=count_all; dma_request_data.command_8=0x81; // Now we start to setup DMA request ,using endpoint 0. retval_setup=usb_control_msg( dev->udev, usb_rcvbulkpipe (dev->udev, 0), dma_request_setup.request_8, dma_request_setup.request_type_8, dma_request_setup.value_16, dma_request_setup.index_16, &dma_request_data, dma_request_setup.length_16, HZ*10); retval = usb_bulk_msg (dev->udev, usb_rcvbulkpipe (dev->udev, dev->bulk_in_endpointAddr), dev->bulk_in_buffer, (int)count_all, &actually_one_msg_count, HZ*10); |
|
最新喜欢:![]() |
沙发#
发布于:2004-06-30 17:21
我也碰到了同样的问题,有些设备读半拉就死了,不过我用的不是周立功的固件,是自己的,但软件是linux,如果你解决了这个问题,希望能给我点参考
|
|
板凳#
发布于:2004-06-30 21:40
你大概觉得是哪里会出问题呢,现在要命的是,我找不到出问题的地方
|
|
地板#
发布于:2004-07-01 10:37
你是设备端吗,我做的是HOST端,你的D12固件是在同一台机器下不同的操作系统做的测试吗,你的设备有没有挂起,或者中断处理的不够快,在读写数据的时候,有没有用示波器量过。相互探讨吧 :(
|
|
地下室#
发布于:2004-07-02 18:13
唉,我手上没有相关的仪器。
我现在的状况就是,在linux中,对bulk pipe(主机读USB方向)进行 usb_bulk_msg 后就睡眠等待,从此硬件就好像没反应了,直到usb_bulk_msg超时退出。 我用的是周立功的D12开发板,用的自带的固件,在Windows下一切都是正常的,在linux下就是上述的情况了??????? |
|