各位前辈们,我目前在利用RT3070传输视频数据到手机端的应用时遇到了wifi网速慢的问题。
我的大致环境是:开发板端连接USB WIFI,采用的是RT3070,开发板端做AP,同时开发板端连有USB 的CAMERA,USB工作在全速模式,通过套接字编程,将摄像头采集的图像实时的传送到手机的软件来显示。
RT3070AP的驱动是网上下载的,好像其官网上只有STA的驱动,所以我参考的http://blog.sina.com.cn/s/blog_6e5e78bf0100rmbg.html,移植到我自己的平台上,总体的功能是达到了,但是目前WIFI传输的图像不是很流畅(跑的是JPG,320*240,15帧的,采用的原相PAP7501,标准的uvc驱动),并且一段时间后还造成了传输数据错位的现象,导致明显的图像错乱,甚至于将我自定义的数据头部信息冲掉的现象,导致后面的图片无法被手机端正确识别(因为手机端的软件相当于黑盒,我是按照约定的协议定义头部信息的,错位后导致手机端的图片一致显示的是错位前的那一张,程序本身没有死掉,所以很可能是数据错乱,将头部的命令冲掉了)。
我将RT3070AP以及我编写的相关的应用程序移植到ARM9的Mini2440上,图像却很流畅,当然跑的都是全速USB模式。
所以我做了一系列实验来验证问题的症结。(1)在RT3070AP端大家tftp服务器,在手机端down开发板端的文件的速度在100KB左右,而在ARM9上为300KB左右,初步怀疑这里是一个瓶颈,毕竟320*240再是15帧,那1s大概是60k,加上网路的协议头等,应该会有100多KB。并且如果跑25帧的话,更慢。
(2) 测试过我们的控制器USB的带宽,U盘在全速下的bulk传输速度在1M以上,这个说明我们的控制器的带宽是足够的。
(3) 为排除是摄像头采集数据过慢,同时测试了,在wifi发送出去之前,将其图片保存成文件,并未发现异常的图片数据。
(4) 为了确认手机端的图片会出现接收断链的问题,我测试过利用wifi传输事先存储在nfs中的几十张图片,手机端并未出现接收断链的问题。
(5) 由于RT3070STA的驱动是官网有的,同样移植之后,我们的平台上测试过,其速度也是在300KB左右,不知是块还是慢。
这些现象似乎都说明了是RT3070AP驱动限制了wifi的速度,不过奇怪的是同样的驱动,只是交叉编译工具的不同,移植到ARM9上却是300KB左右,跑的也很流畅,难道深层次的与CPU的控制器有关联,但是STA与AP驱动速度的差异,是否又说明了是RT3070驱动本身的问题呢?而又该怎么下手去调试RT3070AP驱动与其网速关联的代码呢?
各位前辈有做过RT3070AP驱动相关的项目的,能否提供一些有价值的思路呢?不胜感激啊! |