vcdeveloper
驱动牛犊
驱动牛犊
  • 注册日期2002-11-30
  • 最后登录2004-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1675回复:11

请教BULK传输问题!

楼主#
更多 发布于:2004-06-14 13:47
   我刚刚看懂一点DDK里的BulkUSB例子,它里面有一个IN和一个OUT管道,设备的缓冲区也很大有64KB,最大的数据块划分为256Bytes.这样的话,它每次送一个URB就是256Bytes长度,都是送给一个端点.
   我现在的设备做成两个IN和两个OUT管道,每个管道只有64Bytes缓冲,是不是我要把数据块划分成最大64Bytes呢?这样的话速度肯定很慢,我想要两个管道轮流接受数据包,就是当说一个端点消耗数据的同时,另外一个端点接收数据,这样做行吗?
   我思路混乱,请各位指点!
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-14 17:33
带宽是定的,这样做没用吧?
有朋自远方来,不亦乐乎?
vcdeveloper
驱动牛犊
驱动牛犊
  • 注册日期2002-11-30
  • 最后登录2004-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-14 17:57

但我觉得速度瓶颈在于设备端,如果只用一个端点传递,它在处理缓冲区数据的时间是不就浪费掉了?
谢谢!
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-14 18:05
d12双缓冲就是为了解决这个问题吧
我用一个端点上传可以到800多k,把固件程序优化好了速度就挺好的了
有朋自远方来,不亦乐乎?
darydl
驱动小牛
驱动小牛
  • 注册日期2003-06-29
  • 最后登录2017-05-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-06-14 20:24
你用乒乓结构缓冲?理论上是可行的
vcdeveloper
驱动牛犊
驱动牛犊
  • 注册日期2002-11-30
  • 最后登录2004-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-15 08:12
因为我的芯片不如D12或EZ那么牛,没有双缓冲,速度也慢,所以才有这样的问题!
那位前辈能启发启发?我想知道在驱动端该怎么做,
1 在发送的一个URB能否分配到多个管道来完成?
2 或者是发送一个URB给一个管道后,能否紧接着发另外一个URB给另一管道?
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-15 08:48
我觉得usb1帧是1ms,你只请求64字节不是也要占一帧的时间吗?
有朋自远方来,不亦乐乎?
vcdeveloper
驱动牛犊
驱动牛犊
  • 注册日期2002-11-30
  • 最后登录2004-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-15 09:49
我觉得usb1帧是1ms,你只请求64字节不是也要占一帧的时间吗?


hoverfei您这么说也有道理,那我能不能多个请求放在同一帧里?
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-15 10:50
不能吧,我没用过
有朋自远方来,不亦乐乎?
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-15 13:54
一个urb所能发送的数据是不超过pipeInformation的MaximumTransferSize就行。完全可以大于MaximumPacketSize。
比如我的USB2.0的一个设备,PacketSize是512,MaximumTransferSize可以自己设置,我设为8192,那么我的一个urb最多可以达到8192字节。
hoverfei
驱动小牛
驱动小牛
  • 注册日期2002-04-19
  • 最后登录2010-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-15 15:48
---------------------------------------
那我能不能多个请求放在同一帧里?
---------------------------------------

vcdeveloper的意思是在一帧里放两个端点的请求数据吧?
有朋自远方来,不亦乐乎?
vcdeveloper
驱动牛犊
驱动牛犊
  • 注册日期2002-11-30
  • 最后登录2004-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-15 16:46
是的!但我不抱多大希望的了!:(
以前也有相关的讨论:
http://www.driverdevelop.com/forum/html_56658.html?1087289041
游客

返回顶部