阅读:1847回复:7
请问D12的BULK READ传输
我用DS向导生成的一个驱动程序。
BULK WRITE基本正常, PC往设备写数据时,D12产生main_rxdone中断,在该中断完成数据接收工作。 但bulk read不能工作。 按照我的理解,PC调用读设备命令时,D12应该产生main_txdone型中断,然后我在该中断程序中往D12的缓冲区中填入数据。不知理解是否有误。 我现在的情况是,一进行读设备,要么是死亡蓝屏,要么读到0字字。 请各位大侠指教。 |
|
沙发#
发布于:2003-10-07 16:09
我的问题和你差不多,如果你解决了,麻烦通知一声。谢谢。
|
|
板凳#
发布于:2003-10-07 18:19
那我问一下关于bulk write 的问题。
我在应用程序中通过BULK方式往设备写几个字节的数据。 设备会产生N次main_rxdone中断,每次只能读到一个字节。 为何会这样 |
|
地板#
发布于:2003-10-08 08:49
这样试试。
在WINDOWS直接读,D12里直接写。我感觉D12只会在完成发送后才能产生main_txdone型中断。你理解的不用传送数据,只要上位机开始读就先有一个中断(可能)不对,我的程序是直接读写的,我也想把它改成你说的样子。 |
|
地下室#
发布于:2003-10-08 08:52
后一个问题,你用sniffusb 0.13看看就知道了,这样子猜不到是怎么回事。
|
|
5楼#
发布于:2003-10-08 12:13
我在固件程序的主循环中不停地往输出端点(我用的是端点1)写数据并读端点状态。
temp = D12_WriteEndpoint(3, outbuffer, 16); printf(\"write to ep3 %d bytes.\\n\",temp); temp= D12_ReadEndpointStatus(3); printf(\"ep3 status is: %x\\n\",tem 每次写完,端点状态都是0X20(缓冲0满) 在PC端的应用程序中读却读不到任何数据。 下面是两次读时用BUSHOUND看到的数据 10.1 USTS 0c 00 00 c0 buffer overrun 4.0sc 2.1.0 10 URB 48 00 09 00 BULK/INT XFER 36us 2.2.0 0c 00 00 c0 2.2.4 10.1 LEN 03 00 00 00 3 2.4sc 3.1.0 10.1 DI cd cd cd ... 31us 3.2.0 10.1 USTS 30 00 00 c0 endpoint halted 5us 3.3.0 10 URB 48 00 09 00 BULK/INT XFER 6us 3.4.0 30 00 00 c0 3.4.4 第一次出现buffer overrun,这是什么意思。 第二次则出现endpoint halted. 我在固件中读端点的状态为0x20(缓冲区满),停止位为0,表明该端点没有停止呀。 [编辑 - 10/8/03 by wildluo] [编辑 - 10/9/03 by wildluo] |
|
6楼#
发布于:2003-10-09 14:20
请各位高手不吝赐教。
急死了。 |
|
7楼#
发布于:2003-10-10 16:13
帮我确定一下问题所在也行呀。
是HOST端驱动的事还是DEVICE端的事? |
|