阅读:1675回复:11
请教BULK传输问题!
我刚刚看懂一点DDK里的BulkUSB例子,它里面有一个IN和一个OUT管道,设备的缓冲区也很大有64KB,最大的数据块划分为256Bytes.这样的话,它每次送一个URB就是256Bytes长度,都是送给一个端点.
我现在的设备做成两个IN和两个OUT管道,每个管道只有64Bytes缓冲,是不是我要把数据块划分成最大64Bytes呢?这样的话速度肯定很慢,我想要两个管道轮流接受数据包,就是当说一个端点消耗数据的同时,另外一个端点接收数据,这样做行吗? 我思路混乱,请各位指点! |
|
沙发#
发布于:2004-06-14 17:33
带宽是定的,这样做没用吧?
|
|
|
板凳#
发布于:2004-06-14 17:57
但我觉得速度瓶颈在于设备端,如果只用一个端点传递,它在处理缓冲区数据的时间是不就浪费掉了? 谢谢! |
|
地板#
发布于:2004-06-14 18:05
d12双缓冲就是为了解决这个问题吧
我用一个端点上传可以到800多k,把固件程序优化好了速度就挺好的了 |
|
|
地下室#
发布于:2004-06-14 20:24
你用乒乓结构缓冲?理论上是可行的
|
|
5楼#
发布于:2004-06-15 08:12
因为我的芯片不如D12或EZ那么牛,没有双缓冲,速度也慢,所以才有这样的问题!
那位前辈能启发启发?我想知道在驱动端该怎么做, 1 在发送的一个URB能否分配到多个管道来完成? 2 或者是发送一个URB给一个管道后,能否紧接着发另外一个URB给另一管道? |
|
6楼#
发布于:2004-06-15 08:48
我觉得usb1帧是1ms,你只请求64字节不是也要占一帧的时间吗?
|
|
|
7楼#
发布于:2004-06-15 09:49
我觉得usb1帧是1ms,你只请求64字节不是也要占一帧的时间吗? hoverfei您这么说也有道理,那我能不能多个请求放在同一帧里? |
|
8楼#
发布于:2004-06-15 10:50
不能吧,我没用过
|
|
|
9楼#
发布于:2004-06-15 13:54
一个urb所能发送的数据是不超过pipeInformation的MaximumTransferSize就行。完全可以大于MaximumPacketSize。
比如我的USB2.0的一个设备,PacketSize是512,MaximumTransferSize可以自己设置,我设为8192,那么我的一个urb最多可以达到8192字节。 |
|
10楼#
发布于:2004-06-15 15:48
---------------------------------------
那我能不能多个请求放在同一帧里? --------------------------------------- vcdeveloper的意思是在一帧里放两个端点的请求数据吧? |
|
|
11楼#
发布于:2004-06-15 16:46
是的!但我不抱多大希望的了!:(
以前也有相关的讨论: http://www.driverdevelop.com/forum/html_56658.html?1087289041 |
|