20楼#
发布于:2003-06-26 14:15
我在98上试的时候,DeviceIoControl将近要10ms!
但可以通过将驱动中的\"最大传输单元\"设的大一些来解决! 这样,传送10次2k的数据,可以变成传送一次20k的数据,就行了! |
|
21楼#
发布于:2003-06-26 21:47
其实这样在两次传输之间会有数据丢失的,你们有没有发现,因为从app->驱动->usbd是需要花费一些时间的。不知道你们是怎么解决的
是在设备方缓冲数据吗? |
|
22楼#
发布于:2003-06-27 08:31
我现在的方法是使这段时间正好位于无效数据区
|
|
23楼#
发布于:2003-06-27 11:14
可是我的数据都是有效的,而且数据率是比较高的,而且当初设备方没有准备缓存,如果这个问题软件上得不到解决那可就麻烦大了。
|
|
24楼#
发布于:2003-06-27 20:32
软件优化上可以下些功夫,但是从bulk的机制来说,就算驱动里做了很多工作,但是irp总不可能象iso一样建立起来以后就从不间断的吧?软件上再下功夫也顶多是外围需要的缓冲大点或小点。呵呵所有的活软硬不分家的啦。
|
|
25楼#
发布于:2003-07-14 17:58
我的测试,平均40k/s 我也是,上传64K需要1。6秒,太慢了,是不是写操作需要优化一下? |
|
26楼#
发布于:2003-07-14 18:54
这个问题早就讨论过了嘛。
你说的2-3个毫秒是一次控制传输(固件、USB Bus、Driver、应用程序),时间消耗在实际传输上,根本不是DeviceIoControl和内核消耗通讯的,不信你自己做实验(DeviceIOControl直接返回)。 USB Bulk传输理论值是12M bit/s。实际传输数据可达1M Byte/s,即一次Bulk传输传送32K Byte,使用ReadFile/WriteFile,大概是33个毫秒左右(数据从固件的SDRAM到应用程序接收到)。 |
|
|
27楼#
发布于:2003-07-14 18:55
[quote]我的测试,平均40k/s 我也是,上传64K需要1。6秒,太慢了,是不是写操作需要优化一下? [/quote] 我上传64K需要64毫秒,换句话说我的usb(an2131)的bulk通讯速度为8M bit/s! 当然,我的同步传输更快,可这种方式无纠错,不实用! |
|
|
28楼#
发布于:2003-07-15 09:44
[/quote]
我上传64K需要64毫秒,换句话说我的usb(an2131)的bulk通讯速度为8M bit/s! 当然,我的同步传输更快,可这种方式无纠错,不实用! [/quote] lq519 兄你达到这样8M bit/s是使用USB规范1.1吗? 顺便问一下,对于使用USB集连达数十个(如:50个)功能设备,并且要求每个设备同时将数十K(如:80)字节/秒的数据发送到其它几个(甚至十几个)设备,这样的架构是否具有可行性?为什么? |
|
|
29楼#
发布于:2003-07-15 10:35
我上传64K需要64毫秒,换句话说我的usb(an2131)的bulk通讯速度为8M bit/s! 当然,我的同步传输更快,可这种方式无纠错,不实用! [/quote] lq519 兄你达到这样8M bit/s是使用USB规范1.1吗? 顺便问一下,对于使用USB集连达数十个(如:50个)功能设备,并且要求每个设备同时将数十K(如:80)字节/秒的数据发送到其它几个(甚至十几个)设备,这样的架构是否具有可行性?为什么? [/quote] an2131 即是cypress的USB规范1.1的芯片! 首先您说的是设备与设备间的通讯,即OTG!可以实现,不过得使用USB2.0! |
|
|
30楼#
发布于:2003-07-18 17:53
[quote][quote]我的测试,平均40k/s 我也是,上传64K需要1。6秒,太慢了,是不是写操作需要优化一下? [/quote] 我上传64K需要64毫秒,换句话说我的usb(an2131)的bulk通讯速度为8M bit/s! 当然,我的同步传输更快,可这种方式无纠错,不实用! [/quote] 怎么做的,这么快,我算了一下,如果我能在bulk方式下,向每个帧里面传16个包,我也可以达到1M左右,可是怎么样才能发16个包啊,我作了很久了,没头绪,郁闷啊! |
|
31楼#
发布于:2003-07-18 17:55
?????????????? 关注,资料上说bulk传输中,在1ms的帧中可以放16个数据包,可是怎么实现,就请哪位大侠们指点一下了,我真的很急啊,头发都白了! |
|
32楼#
发布于:2003-07-18 17:57
我在98上试的时候,DeviceIoControl将近要10ms! 一定要改驱动吗?我在应用程序中把缓冲区开大些,不行吗? |
|
上一页
下一页