阅读:1410回复:2
求教各位关于usb设备驱动的问题
大家好。
最近在进行usb驱动的开发工作。有一些问题想请教大家。 先说说现在的情况。设备端的usb芯片是用的PLX的net2272,现在已经完全通过了USB官方网站提供的测试工具的chaptor9的测试。 HOST这端的驱动使用的是windowsDDK下的bulkusb,没有作改动。 使用的是自己定义的类(Vendor-Specific 0xff),传输想使用bulk-only的方式,不过在描述的时候用的也是Vendor-Specific(0xff)。 现在遇到的情况是,使用一个简单的应用程序来读该芯片时,总是出现 no response , 提示主机收不到数据。而且根据芯片的寄存器显 示,也确实没有发出数据。但是在以前试做的mass storage驱动的时候,按照同样方法是能够发送数据的(包括csw)。另外,用该程序写 芯片是没有问题的。 到底出了什么问题?还请大家多多指教。 下面是busbound提示的信息 ------ ----- -------------------------------------------------- ---------------- ----- ------------------ ---------- ------------ 13 IRP 06 00 90 01 00 00 00 00 00 00 00 00 00 00 00 00 4.1sc 1.1.0 2009/02/27 08:34:46.376 b0 85 8c 85 b0 85 8c 85 00 00 00 00 00 00 00 00 1.1.16 13 STAK 16 02 00 e0 03 00 00 00 01 00 00 00 01 00 00 00 POWER 6us 1.2.0 2009/02/27 08:34:46.376 00 00 00 00 70 7b 90 85 00 00 00 00 a9 ea 6f b6 1.2.16 13 IRP 06 00 90 01 78 51 ca 85 00 09 00 00 00 00 00 00 5.6ms 2.1.0 2009/02/27 08:34:46.382 30 82 da 85 30 82 da 85 01 00 00 c0 00 00 00 00 2.1.16 13 STAK 0f 00 00 e0 88 2e 8e 89 00 00 00 00 03 00 22 00 INTERNAL IOCTL 3us 2.2.0 2009/02/27 08:34:46.382 00 00 00 00 70 7b 90 85 00 00 00 00 74 2d 70 b6 2.2.16 13.1 USTS 05 00 00 c0 no response 2us 2.3.0 2009/02/27 08:34:46.382 <-------------此处失败,而且没有LEN显示 13.1 URB 48 00 09 00 05 00 00 c0 c0 d4 d0 85 20 00 00 00 BULK/INT XFER 2us 2.4.0 2009/02/27 08:34:46.382 9c 8e 94 89 03 00 00 00 00 00 00 00 00 00 00 00 2.4.16 13 IRP 06 00 90 01 00 00 00 00 00 00 00 00 00 00 00 00 5.6sc 3.1.0 2009/02/27 08:34:52.001 88 cd 86 89 88 cd 86 89 00 00 00 00 00 00 00 00 3.1.16 13 STAK 16 02 00 e0 03 00 00 00 01 00 00 00 03 00 00 00 POWER 6us 3.2.0 2009/02/27 08:34:52.001 00 00 00 00 70 7b 90 85 00 00 00 00 0d ed 6f b6 3.2.16 13 IRP 06 00 90 01 00 00 00 00 00 00 00 00 00 00 00 00 33sc 4.1.0 2009/02/27 08:35:25.965 00 cb b8 85 00 cb b8 85 20 01 00 c0 00 00 00 00 4.1.16 13 STAK 0f 00 00 e0 00 00 00 00 08 00 00 00 27 00 22 00 INTERNAL IOCTL 6us 4.2.0 2009/02/27 08:35:25.965 d8 6c bb 89 70 7b 90 85 00 00 00 00 f3 0d 70 b6 4.2.16 13 IRP 06 00 90 01 00 00 00 00 00 00 00 00 00 00 00 00 52ms 5.1.0 2009/02/27 08:35:26.018 88 cd 86 89 88 cd 86 89 00 00 00 00 00 00 00 00 5.1.16 13 STAK 16 02 00 e0 03 00 00 00 01 00 00 00 01 00 00 00 POWER 6us 5.2.0 2009/02/27 08:35:26.018 00 00 00 00 70 7b 90 85 00 00 00 00 a9 ea 6f b6 5.2.16 13 IRP 06 00 90 01 40 0b 99 89 00 0a 00 00 00 00 00 00 12ms 6.1.0 2009/02/27 08:35:26.031 30 82 da 85 30 82 da 85 00 00 00 00 00 00 00 00 6.1.16 13 STAK 0f 00 00 e0 60 b4 1b 89 00 00 00 00 03 00 22 00 INTERNAL IOCTL 3us 6.2.0 2009/02/27 08:35:26.031 00 00 00 00 70 7b 90 85 00 00 00 00 74 2d 70 b6 6.2.16 13.2 LEN 20 00 00 00 32 2us 6.3.0 2009/02/27 08:35:26.031 <-------------LEN显示 13.2 DO 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 ................ 2us 6.4.0 2009/02/27 08:35:26.031 <------------ DO 显示正常 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 ................ 6.4.16 13.2 URB 48 00 09 00 00 00 00 00 c0 d4 d0 85 20 00 00 00 BULK/INT XFER 2us 6.5.0 2009/02/27 08:35:26.031 bc 8e 94 89 02 00 00 00 20 00 00 00 00 00 00 00 6.5.16 13 IRP 06 00 90 01 00 00 00 00 00 00 00 00 00 00 00 00 5.6sc 7.1.0 2009/02/27 08:35:31.704 b8 a2 ba 85 b8 a2 ba 85 00 00 00 00 00 00 00 00 7.1.16 谢谢大家了 |
|
沙发#
发布于:2009-03-06 09:14
问题已经解决,反馈一下。
主机没有收到数据包的原因是因为在枚举阶段有最后一个握手没有提供,中断处理中的异常状态的状态位没有清除。 现在已经能够正常收发数据。 谢谢看过本贴的各位。以后有问题还来请教大家。 |
|
板凳#
发布于:2009-04-01 22:55
rurality 你好
我遇到一个和你类似的问题,也就是主机往设备写数据可以,但却读不上来 我不确定是不是你说的那个中断位没有清除的问题 但是,如果我在读取之前先通过IN通道发一个数据给主机(可以是0长度) 那么剩下的读写就都没问题了 也许是设备芯片差异,我理解我这边情况是这样的 设备发数据之前需要先填充USB的硬件Buf,等待主机发IN的Token包,发送完成之后才会产生一个中断,ISR中再去填充下一个数据Buf,再次等待 不知道这种情况是否和你所说一致 |
|