阅读:1169回复:3
关于利用D12双缓冲区提高速度的问题,请教各位大侠!!!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版主的帖子还是不行!我还是不知道解决双缓冲区的问题! |
|
沙发#
发布于:2004-09-15 09:16
xulingfei,您所说的:“其实D12因为有double buffering的功能,可以每次向它写128bytes”是指下位机每次可以向d12的端点缓冲区写128个字节得数据吗?论坛上也有人说下位机只能从端点一次读128个字节得数据不能一次写128字节的数据呀!!“在driver里面直接把16Mbyte的数据分成64K”中是不是该为64B呀?
|
|
|
板凳#
发布于:2004-09-15 10:06
上面话是rayyang2000版主说的。现在我从主机都MCU中的数据,也不会用D12的双缓冲区。每次只能写64各字节,只能用到其中的一个缓冲区。如何利用D12的双缓冲区,还需要各位大侠帮我解释一下。
|
|
地板#
发布于:2004-09-15 11:01
看了楼主的帖子,不由得心生佩服啊。
我也遇到了速度的问题,我买了一套D12的USB SMART开发板,不知你说的APP指的是不是PC端的应用程序,我的速度只有37KBytes/s,我想提高速度的,最近看了很多帖子,什么usbd啊,什么driver啊,搞得我一团浆糊,更不用说修改优化了。 我的速度要是可以达到150KBytes/s,我就谢天谢地了。 楼主如果可以帮助指点,最好要有QQ什么的联系,因为问题实在是太多,不胜感谢! |
|