xulingfei
驱动牛犊
驱动牛犊
  • 注册日期2004-06-13
  • 最后登录2009-03-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1169回复:3

关于利用D12双缓冲区提高速度的问题,请教各位大侠!!!

楼主#
更多 发布于:2004-09-14 23:31


rayyang2000版主曾有这样的帖子:
回去修改了一下D12的CLKOUT的输出,让它输出24MHz的时钟,我在BULK传输的时候每次都直接让它发送64个字节。经过同时优化windows device driver和firmware,结果传输16MByte的数据用了33秒!!!计算一下达到了496KByte/s。如果弄个可以运行50MHz的MCU,岂不是要加倍,达到992KByte/s?

当然,如果要实际的每次给D12写64byte的数据,速度就会慢许多,基本上会减半。但我发现,其实D12因为有double buffering的功能,可以每次向它写128bytes!而且,在driver里面直接把16Mbyte的数据分成64K,发给usbd,全部完成以后再一次性的返回给app,这样就得到了我上面说的数据了。

因此,我认为,只要有合适的MCU,再加上时序的调整,driver和app的配合,很有希望得到一个800~900k的传输速率。当然,这只是我的设想,还没有条件验证。哪位xd有条件试验的,可一定要告诉我结果啊!

另外,由于usb的传输和usbd.sys的速度也有很大关系,因此用一个速度快的PC和可以得到更快的传输。

如何才能利用D12的双缓冲区来提搞USB的传输速度?这一问题已经困扰了我好长时间,那位能帮我一把!
我看了rayyang2000版主的帖子还是不行!我还是不知道解决双缓冲区的问题!
wanggang508
驱动小牛
驱动小牛
  • 注册日期2003-08-24
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-15 09:16
xulingfei,您所说的:“其实D12因为有double buffering的功能,可以每次向它写128bytes”是指下位机每次可以向d12的端点缓冲区写128个字节得数据吗?论坛上也有人说下位机只能从端点一次读128个字节得数据不能一次写128字节的数据呀!!“在driver里面直接把16Mbyte的数据分成64K”中是不是该为64B呀?
多多交流,少走弯路!!!
xulingfei
驱动牛犊
驱动牛犊
  • 注册日期2004-06-13
  • 最后登录2009-03-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-15 10:06
上面话是rayyang2000版主说的。现在我从主机都MCU中的数据,也不会用D12的双缓冲区。每次只能写64各字节,只能用到其中的一个缓冲区。如何利用D12的双缓冲区,还需要各位大侠帮我解释一下。
xue_minggang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-02
  • 最后登录2004-09-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-15 11:01
看了楼主的帖子,不由得心生佩服啊。
我也遇到了速度的问题,我买了一套D12的USB SMART开发板,不知你说的APP指的是不是PC端的应用程序,我的速度只有37KBytes/s,我想提高速度的,最近看了很多帖子,什么usbd啊,什么driver啊,搞得我一团浆糊,更不用说修改优化了。
我的速度要是可以达到150KBytes/s,我就谢天谢地了。
楼主如果可以帮助指点,最好要有QQ什么的联系,因为问题实在是太多,不胜感谢!
游客

返回顶部