一个通过GPRS远程升级模块的优化
来源:互联网 发布:pageoffice for java 编辑:程序博客网 时间:2024/05/18 02:57
一个通过GPRS远程升级模块的优化
前段时间,有个朋友问我是否做过GPRS通信;说他们升级128k字节需要2个小时,没有成功一次;据说人也换了三茬,什么Z-Modem,ftp,telnet都试过,问我能否帮忙看看。
询问得知,他们很早就用GPRS做64字节数据传输还是可以的,后来要做远程升级才遇到问题。一般早期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.
- 一个通过GPRS远程升级模块的优化
- 通过串口操作GPRS模块的编程
- GPRS 远程控制终端 (通过手机模块远程终端控制)
- 基于SIM900A-GPRS模块的远程文件传输实例
- 基于SIM900A-GPRS模块的远程文件传输实例
- 一个脑补的基于现有家居电器自动开关的插座(通过GPRS模块与手机通信)
- windows通过GPRS模块拨号上网流程
- windows通过GPRS模块拨号上网流程
- windows通过GPRS模块拨号上网流程
- GPRS模块SIM300的使用
- GPRS模块SIM300的使用
- 急!急!!急!!!WM6.0 通过Gprs访问远程服务器上的SQL2005数据库
- 使用GPRS模块SIM900A通过HTTP上传数据到云服务器的方法
- GPRS模块和GSM模块的差别
- 通过SPI方式实现LPC17xx的远程升级设计
- 慧锦GPRS/CDMA模块在远程控制系统中的应用
- 一个基于GPRS模块及云后台的开源系统--Luat
- GPRS模块通过TCP/IP方式发送数据流程
- Android回调机制
- 排序算法(五):希尔排序
- Qt下使用OpenGL(13)-根据NeHe的教程改写的
- python 获取脚本传递参数 及参数个数 检查文件 变量 是否存在 退出脚本
- jsp+servlet+commons-fileupload-1.3.jar+commons-io-2.4.jar+jstl标签库实现文件上传与下载
- 一个通过GPRS远程升级模块的优化
- Chapter_03 分析C语言的声明
- 集合+单例模式
- Android中常用colors.xml
- 在JNI代码中异步回调Java层方法
- 解决客户之间的矛盾-生米煮成熟饭
- Android:如何在java代码中覆盖webview中的javascript事件
- 适配器设计模式---接口适配
- for 和 foreach区别