tomjin
驱动牛犊
驱动牛犊
  • 注册日期2002-12-16
  • 最后登录2006-03-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1676回复:6

USB传输速率问题???

楼主#
更多 发布于:2004-07-19 16:37
不知道大家在开发完usb设备后实际的数据传输率可以到多大??
看了前几天游人抱怨用D12大概都只能到50k,有的大侠用arm做到了1M,速度相差甚大,不知道问题出现在那里??
   传输方式上,如果选用中断方式,系统以1ms时间间隔轮询,以D12的主端点为例,一笔事务传64Byte,那这样速度就限制在64KB/s
.传输方式造成了速率瓶颈,不知道我这样理解是否正确??
   在硬件上用51+D12,在软件上有什么好的办法将数据传输率提高呢?
   望各位论坛大佬、顶级会员不舍赐教!!
xjLegend
驱动小牛
驱动小牛
  • 注册日期2002-11-04
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-19 20:32
在PC端加大每次读写的缓冲区 应该可以提高速度的,另外固件程序也要很好的配合才行。
我想要点分,这样才有成就感嘛!
tomjin
驱动牛犊
驱动牛犊
  • 注册日期2002-12-16
  • 最后登录2006-03-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-20 16:08
阁下说的在PC侧,加大每次读写的缓冲区,是在驱动代码中设置的吗?
还是在应用程序的ReadFile()函数的参数中设置的。
另外,你说的固件要很好的配合,具体有什么要注意的????
lejianz
驱动中牛
驱动中牛
  • 注册日期2003-03-05
  • 最后登录2023-11-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望145点
  • 贡献值0点
  • 好评度116点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-07-20 16:46
你说的64KBYTES/S不对,你可以查USB1.1协议,它的极限是1216KBYTES/S,因为一个TRANSACTION里最大可以有19个64bytes的frames数据,APP中加大buffer可能提高速度,提高FIRMWARE很重要。
一起交流,共同提高!
darydl
驱动小牛
驱动小牛
  • 注册日期2003-06-29
  • 最后登录2017-05-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-07-20 18:36
我的应用程序是用DeviceIOcontrl函数先发送VENDOR_REQUEST命令到驱动程序,即发送64(只能为这个???)字节的setup包,然后用DeviceIOcontrl来发送bulk_in命令传输。每次我设置bulk的传输数据为4096,但是结果还是传输了64?请问怎么加大每次读写的缓冲区???
windrv
驱动牛犊
驱动牛犊
  • 注册日期2004-07-05
  • 最后登录2004-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-21 09:37
Interrup endpoint is worse than bulk endpoint for usb data throughput. If you want to get 1MB/s data throughput, please use bulk endpoint instead.

Another point is, increase MaximumTransferSize to 256*1024, or 512*1024, or higher value when driver configures usb interface.


[编辑 -  7/21/04 by  windrv]
tomjin
驱动牛犊
驱动牛犊
  • 注册日期2002-12-16
  • 最后登录2006-03-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-21 14:53
"increase MaximumTransferSize to 256*1024, or 512*1024"   in
the application??


pc发一次in请求,usb接口芯片就传64Byte,产生一次中断。如果是中断传输,pc以1ms时间轮询,那最大速率就是64Byte/s,看样子要提高速率,只有减少pc的轮询时间间隔,用Bulk方式了??
游客

返回顶部