bjcjg
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2005-08-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1917回复:8

PD12开发

楼主#
更多 发布于:2002-07-02 00:24
用PD12,设置了四个ENDPOINT,OX81\\OX1\\0X82\\0X2,均为BULK传输。
设备安装后用usbview查开一切正常。写数据时正常。读时用斯波器观察根本就没有中断信号低点平产生。
设备驱动读写的差别就时读时的的传输标志加了个transferFlags |= USBD_TRANSFER_DIRECTION_IN。请问高手,此为何因?
  
    同时另外用driverworks自动生成驱动时,产生了四个ioctl.
安装后用usbview观察,没有任何pipe打开。也用了acStatus = m_Usb.ActivateConfiguration(
        1)。设备的配置情况如下:
  DEV_DSC:
                DB 12H,01H,10H,01H,00H,00H,00H,10H,81H,04H
                DB 01H,00H,00H,01H,00H,00H,00H,01H
      
        CFG_DSC:
                DB 09H,02H,2EH,00H,01H,01H,00H,80H,32H
                DB 09H,04H,00H,00H,04H,00H,00H,00H,00H
                DB 07H,05H,81H,02H,10H,00H,00H
                DB 07H,05H,01H,02H,10H,00H,00H
                DB 07H,05H,02H,02H,40H,00H,00H
                DB 07H,05H,82H,02H,40H,00H,00H

请高手分析原因?

最新喜欢:

fly_flyfly_fl...
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-02 11:57
在你读数据之前,D12的对应PIPE的缓冲中必须有数据,而且缓冲要使能。这才能产生中断。
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
bjcjg
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2005-08-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-02 12:48
缓冲区有数据,而且也使能了。但就是无法产生中断。
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-03 15:58
PIPE选对没有呀?
先要向对应的PIPE buffer中填数据哟。
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
bjcjg
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2005-08-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-03 18:08
PIPE选择应该没有错。从驱动程序内核追踪确实是选择PIPE IN的管道。0X81和0X82都如此。
liuwan
驱动小牛
驱动小牛
  • 注册日期2001-10-15
  • 最后登录2004-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-07-05 08:44
D12怎么能够有四个BULK管道呢?我看手册上就是两个呀,都是2号管道,1号管道是general管道。
菜菜
bjcjg
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2005-08-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-08 22:53
Generic endpoint can be used either as Bulk or Interrupt endpoint
hsr321
驱动牛犊
驱动牛犊
  • 注册日期2002-05-17
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-10 19:17
------------------------------------------
同时另外用driverworks自动生成驱动时,产生了四个ioctl.
安装后用usbview观察,没有任何pipe打开。
----------------------------------------

要在对应的四个“空壳”函数中加相关请求的 :D :D
bjcjg
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2005-08-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-10 20:58
谢谢各位的关心。
通过几天的调测,问题总算有点眉目了。
对于第一个问题,原因在于读数据时应采用异步的方式。
对于第二个问题,原因在于我的firmware里面对getconfiguration的请求数据长度只判断了低字节部分,而没有判断高字节。driverworks 里的ActiveConfiguration函数第二个参数的缺省值为
1024,相当于0x4000.恰被硬件判断为读取configuration的长度为零,不做任何的处理。所以也就无从谈配置。
游客

返回顶部