custjcy
驱动牛犊
驱动牛犊
  • 注册日期2002-03-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2912回复:13

★★★一个奇怪的问题!(关于usbn9603,bulkusb.sys)

楼主#
更多 发布于:2002-07-23 10:33
各位早上好:
    我在用usbn9603开发usb设备时遇到了一个奇怪的问题,请大家多提提建议。我的usb设备使用9603支持两个批量传输端点(
epc1,in,size:64,addr:0x81;epc2,out,sie:64,addr:0x02),在调试时仅将epc1种接收到的数据从epc2返回到计算机。驱动和测试应用程序是98ddk中的bulkusb.sys和rwbulk.exe,未作任何修改,开发环境:98ddk,win2000。为了和98ddk中的例子相匹配,我把固件中的pid&vid设成了和bulkusb.inf中的一样。
    在测试中插上设备,每次开始能够正常工作收发的数据一致,运行几次后就出问题了,虽然收发的数据都是64字节,但接收到的数据与发送的不一致(都是0),奇怪的是应用程序显示“成功的接收到了64字节”。为什么数据明明不对,rwbulk仍显示成功?
    后来我在固件清除了txc1中的使能位,但还能接收到64字节的数据(还是0),再后来我将epc1中的使能位也清除了,奇怪的是它还能接收到64个字节的0。如果说固件有问题那它就不可能列举并安装成功,还在开始有几次好使,而且应用程序没有报告接收有错误,但是bulkusb.sys又是不可能有问题的呀?我都不知道应该从那着手。希望大家能指点一二!
    问题有三点:
1。开始工作正常,但后来就不对了?
2。总是能接收到数据,但数据明显不对,应用程序却并没有显示错误信息?
3。输入端点未使能时还能接收到数据?
  
   我的email:custjcy@sina.com,欢迎大家给我多出出主意。
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-23 10:57
我可以明确告诉你,是BulkUSB.SYS驱动程序的问题。这个问题当时困扰了我好久,每次在传输一些数据后出现64个字节为0的数据。后来我彻底修改了Bulk.cpp才解决了。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
custjcy
驱动牛犊
驱动牛犊
  • 注册日期2002-03-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-23 11:49
你所说的“彻底修改bulk.cpp\"是不是彻底的修改驱动程序,可不可以再说的详细一些,我不太了解驱动的编写。谢谢!
study
驱动牛犊
驱动牛犊
  • 注册日期2001-05-14
  • 最后登录2010-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-23 15:12
我也用这个芯片,不过没使用BulkUSB.sys。所以没碰到这个问题。
学无止境
custjcy
驱动牛犊
驱动牛犊
  • 注册日期2002-03-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-23 15:20
也是批量传输吗,那你用的是什么驱动可不可以介绍一下!
study
驱动牛犊
驱动牛犊
  • 注册日期2001-05-14
  • 最后登录2010-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-07-23 15:33
用的基本上是EZ-usb的例子驱动,稍作修改。其实不改都能用,主要是板卡上的配置信息。
学无止境
custjcy
驱动牛犊
驱动牛犊
  • 注册日期2002-03-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-23 23:32
谢谢版主!但我还有一些不明白,我的固件中端点是64字节,bulkusb在owr***.c中将irp分解成本64字节的urb.你的意思是urb可以更大,那么是usbd将urb分解成更小包的吗?另,将urb增大就可以解决问题了吗,你是怎么办的呢?
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-24 08:46
USBD可以负责将Bulk分解成64的块,而且更可靠。bulkusb要去分坼我认为是它的硬件每次只能接受64字节,要不然就是程序写的太烂。我的程序一次urb最大传输32768字节,只需要30毫秒左右,因此bulk传输要简单多了,问题也解决了。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
custjcy
驱动牛犊
驱动牛犊
  • 注册日期2002-03-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-25 22:16
多谢了!我试试看。
icnet
驱动牛犊
驱动牛犊
  • 注册日期2002-04-05
  • 最后登录2004-03-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-28 22:44
bulk传输方式一次可以多于64bit吗??我的为什么每次只能一次接收64bit,要读后面的,还得固件程序中发送指针重新定位,要不发送的老是前64bit  ,请指教
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-29 08:39
bulk传输方式一次可以多于64bit吗??我的为什么每次只能一次接收64bit,要读后面的,还得固件程序中发送指针重新定位,要不发送的老是前64bit  ,请指教

这要看设备USB控制器的能力啊。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
laiqing
驱动小牛
驱动小牛
  • 注册日期2002-02-27
  • 最后登录2013-08-28
  • 粉丝5
  • 关注0
  • 积分46分
  • 威望104点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-29 17:47
谁能给我WIN2K下BULKUSB,非常感谢!
custjcy
驱动牛犊
驱动牛犊
  • 注册日期2002-03-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-07-30 22:32
to icent:
你用的是什么芯片?
icnet
驱动牛犊
驱动牛犊
  • 注册日期2002-04-05
  • 最后登录2004-03-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-31 11:06
国半的usb9604
游客

返回顶部