阅读:2912回复:13
★★★一个奇怪的问题!(关于usbn9603,bulkusb.sys)
各位早上好:
我在用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,欢迎大家给我多出出主意。 |
|
沙发#
发布于:2002-07-23 10:57
我可以明确告诉你,是BulkUSB.SYS驱动程序的问题。这个问题当时困扰了我好久,每次在传输一些数据后出现64个字节为0的数据。后来我彻底修改了Bulk.cpp才解决了。
|
|
|
板凳#
发布于:2002-07-23 11:49
你所说的“彻底修改bulk.cpp\"是不是彻底的修改驱动程序,可不可以再说的详细一些,我不太了解驱动的编写。谢谢!
|
|
地板#
发布于:2002-07-23 15:12
我也用这个芯片,不过没使用BulkUSB.sys。所以没碰到这个问题。
|
|
|
地下室#
发布于:2002-07-23 15:20
也是批量传输吗,那你用的是什么驱动可不可以介绍一下!
|
|
5楼#
发布于:2002-07-23 15:33
用的基本上是EZ-usb的例子驱动,稍作修改。其实不改都能用,主要是板卡上的配置信息。
|
|
|
6楼#
发布于:2002-07-23 23:32
谢谢版主!但我还有一些不明白,我的固件中端点是64字节,bulkusb在owr***.c中将irp分解成本64字节的urb.你的意思是urb可以更大,那么是usbd将urb分解成更小包的吗?另,将urb增大就可以解决问题了吗,你是怎么办的呢?
|
|
7楼#
发布于:2002-07-24 08:46
USBD可以负责将Bulk分解成64的块,而且更可靠。bulkusb要去分坼我认为是它的硬件每次只能接受64字节,要不然就是程序写的太烂。我的程序一次urb最大传输32768字节,只需要30毫秒左右,因此bulk传输要简单多了,问题也解决了。
|
|
|
8楼#
发布于:2002-07-25 22:16
多谢了!我试试看。
|
|
9楼#
发布于:2002-07-28 22:44
bulk传输方式一次可以多于64bit吗??我的为什么每次只能一次接收64bit,要读后面的,还得固件程序中发送指针重新定位,要不发送的老是前64bit ,请指教
|
|
10楼#
发布于:2002-07-29 08:39
bulk传输方式一次可以多于64bit吗??我的为什么每次只能一次接收64bit,要读后面的,还得固件程序中发送指针重新定位,要不发送的老是前64bit ,请指教 这要看设备USB控制器的能力啊。 |
|
|
11楼#
发布于:2002-07-29 17:47
谁能给我WIN2K下BULKUSB,非常感谢!
|
|
12楼#
发布于:2002-07-30 22:32
to icent:
你用的是什么芯片? |
|
13楼#
发布于:2002-07-31 11:06
国半的usb9604
|
|