一个通过GPRS远程升级模块的优化

来源:互联网 发布:pageoffice for java 编辑:程序博客网 时间:2024/05/18 02:57




一个通过GPRS远程升级模块的优化


 


前段时间,有个朋友问我是否做过GPRS通信;说他们升级128k字节需要2个小时,没有成功一次;据说人也换了三茬,什么Z-Modemftptelnet都试过,问我能否帮忙看看。


询问得知,他们很早就用GPRS64字节数据传输还是可以的,后来要做远程升级才遇到问题。一般早期GPRS模块传输64字节还是可以的,128字节就经常出错!那么我们可以如下计算:


128k/64 = 2k包;


2k*3s = 6000s一般GPRS的上下行都会有一个1s的强制延时,再加上OS的处理等不会少于3s


2k*600ms = 1200s;这个是Flash擦写需要的时间。


6000s + 1200s =2小时。


 


按他们的人说,大概就需要2小时,不能再少了。如果采用ftp,按照这种逐包传递的方法似乎就是这样。好在我知道他们现在用的是最新的华为模块,对于这个优化我还是非常有信心的!


 


第一步,从每包64字节变成256字节。估计时间能缩短到30分。结果是系统刚起来就崩溃了,化了一周调整GPRS的驱动。实际用时45分钟,偶尔能升级成功。


第二步,发现这种操作Flash的方式实属变态,果断改成一开始就全部擦除,共用时2s。升级用时25分钟,3次有1次能成功。


第三步,使用并行传输异步收发,这个是从卫星通信中看到的方案,估计这次能到8分钟。实际测试结果是15分钟,并且经常出现任务卡顿。据朋友说以前只是偶尔出现,看来优化的道路还很漫长。


第四步,经过追踪发现0.5sGPRS就能收到一包。看来问题不在GPRS,于是从任务调度入手,把他们几年没有动过的任务优先级从新调整了一遍。感觉系统比以前还要流畅,再也不卡顿,切换时间也有原来的0.1s变成了<0.01s。实测结果用时5分钟,成功率也达到60%!但是有的时段,比如下班成功率<10%。优化需要继续……


第五步,终于要出最后的杀手锏,断点续传。成功率>85%,最多5次肯定能成功。优化到此为止!


 


后来,朋友做了户外移动测试,15个目标同时进行。不用人工干预,全部升级成功!妥、妥的结束吃饭去……


 


 


 


 


 


by csz_cmy 2013-12-27.




0 0
原创粉丝点击