阅读:3834回复:32
一次DeviceIoControl与内核的通讯花费2ms左右的时间
请教高手们:
我编写的usb驱动程序速度很慢(500hz),应用层一次DeviceIoControl与内核的通讯花费2ms左右的时间,我用ds、ddk编写的驱动速度都是一样的,太慢了!你们的速度是多少呀? 不尽感激!!! |
|
最新喜欢:![]()
|
沙发#
发布于:2003-07-18 17:57
我在98上试的时候,DeviceIoControl将近要10ms! 一定要改驱动吗?我在应用程序中把缓冲区开大些,不行吗? |
|
板凳#
发布于:2003-07-18 17:55
?????????????? 关注,资料上说bulk传输中,在1ms的帧中可以放16个数据包,可是怎么实现,就请哪位大侠们指点一下了,我真的很急啊,头发都白了! |
|
地板#
发布于: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个包啊,我作了很久了,没头绪,郁闷啊! |
|
地下室#
发布于: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! |
|
|
5楼#
发布于: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)字节/秒的数据发送到其它几个(甚至十几个)设备,这样的架构是否具有可行性?为什么? |
|
|
6楼#
发布于:2003-07-14 18:55
[quote]我的测试,平均40k/s 我也是,上传64K需要1。6秒,太慢了,是不是写操作需要优化一下? [/quote] 我上传64K需要64毫秒,换句话说我的usb(an2131)的bulk通讯速度为8M bit/s! 当然,我的同步传输更快,可这种方式无纠错,不实用! |
|
|
7楼#
发布于: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到应用程序接收到)。 |
|
|
8楼#
发布于:2003-07-14 17:58
我的测试,平均40k/s 我也是,上传64K需要1。6秒,太慢了,是不是写操作需要优化一下? |
|
9楼#
发布于:2003-06-27 20:32
软件优化上可以下些功夫,但是从bulk的机制来说,就算驱动里做了很多工作,但是irp总不可能象iso一样建立起来以后就从不间断的吧?软件上再下功夫也顶多是外围需要的缓冲大点或小点。呵呵所有的活软硬不分家的啦。
|
|
10楼#
发布于:2003-06-27 11:14
可是我的数据都是有效的,而且数据率是比较高的,而且当初设备方没有准备缓存,如果这个问题软件上得不到解决那可就麻烦大了。
|
|
11楼#
发布于:2003-06-27 08:31
我现在的方法是使这段时间正好位于无效数据区
|
|
12楼#
发布于:2003-06-26 21:47
其实这样在两次传输之间会有数据丢失的,你们有没有发现,因为从app->驱动->usbd是需要花费一些时间的。不知道你们是怎么解决的
是在设备方缓冲数据吗? |
|
13楼#
发布于:2003-06-26 14:15
我在98上试的时候,DeviceIoControl将近要10ms!
但可以通过将驱动中的\"最大传输单元\"设的大一些来解决! 这样,传送10次2k的数据,可以变成传送一次20k的数据,就行了! |
|
14楼#
发布于:2003-05-27 10:10
usb的传输是基于1ms的帧的,bulk传输是如何往usb总线上放数的呢?
|
|
|
15楼#
发布于:2003-05-26 12:33
??????????????
大虾们: 我的问题好像没解决。有没有人能明白的阐述一下以上的问题呢? 另一个问题:usb1.1,bulk传输,1ms帧,一个端点一次传输64字节,在1ms的帧中,一个端点只能放一次数吗?如果不只一次,一个端点的bulk传输,如何往总线上放数呢? |
|
|
16楼#
发布于:2003-05-22 10:41
如果是USB1。1能到600kb/s就很不错了! NewTech 您好:我用的是usb1.1,您指的是批量传输的速度吗? 600kb/s如何解释呢? 如何组织下面端点向1ms的帧中放数的呢? 谢谢!!! |
|
|
17楼#
发布于:2003-05-22 10:16
如果是USB1。1能到600kb/s就很不错了!
|
|
18楼#
发布于:2003-05-21 12:39
我用了一个in一个out端点,都是双缓冲,我的是2.0的芯片,这个速度已经很慢了! [/quote]
难怪? |
|
|
19楼#
发布于:2003-05-21 12:18
jinghuiren,您好:您的速度好像比我的快不了多少?“3M字节左右”您是怎么实现的呀?批量传输吗?固件是怎么往内核送数的呢,几个端点呀? 我用了一个in一个out端点,都是双缓冲,我的是2.0的芯片,这个速度已经很慢了! |
|
上一页
下一页