rurality
驱动牛犊
驱动牛犊
  • 注册日期2004-11-06
  • 最后登录2009-11-13
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望30点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1411回复:2

求教各位关于usb设备驱动的问题

楼主#
更多 发布于:2009-02-27 19:41
大家好。
最近在进行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


谢谢大家了
rurality
驱动牛犊
驱动牛犊
  • 注册日期2004-11-06
  • 最后登录2009-11-13
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望30点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-03-06 09:14
问题已经解决,反馈一下。
主机没有收到数据包的原因是因为在枚举阶段有最后一个握手没有提供,中断处理中的异常状态的状态位没有清除。
现在已经能够正常收发数据。
谢谢看过本贴的各位。以后有问题还来请教大家。
denniswuu
驱动牛犊
驱动牛犊
  • 注册日期2009-04-01
  • 最后登录2009-04-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-04-01 22:55
rurality  你好
我遇到一个和你类似的问题,也就是主机往设备写数据可以,但却读不上来
我不确定是不是你说的那个中断位没有清除的问题
但是,如果我在读取之前先通过IN通道发一个数据给主机(可以是0长度)
那么剩下的读写就都没问题了
也许是设备芯片差异,我理解我这边情况是这样的
设备发数据之前需要先填充USB的硬件Buf,等待主机发IN的Token包,发送完成之后才会产生一个中断,ISR中再去填充下一个数据Buf,再次等待
不知道这种情况是否和你所说一致
游客

返回顶部