摘要:介绍iap功能及其相关应用,以及采用gprs远程实现iap功能的现实意义;结合某地区地下水远程监控系统,着重阐述采用gprs网络远程执行iap升级系统的思想和实现方法,以及应用中应注意的一些关键技术;论述采用gprs通信简单实用的应用层协议设计的方法,重点强调通信中校验码和重传机制;讨论影响本系统远程iap升级可靠性的一些因素和所采取的针对性解决办法。
关键词:gprs iap 远程升级 在线编程 远程监控
引 言
针对地下水资源已经严重透支,水资源受到严重破坏的问题设计本系统,目的就是为了监控农用机井的用水情况。农用机井分布站点广,站点之间距离几十m到一两百km,采用人工抄表监控会浪费大量的人力和物力,而且实时性差。以前采用gsm方式也存在实时性差、控制困难的问题。
目前,对此类问题可靠的、现实的解决方案就是,将现场设备接入internet上的服务器,在上层实现实时监控、管理;但是现场没有专门internet接入点和设备。采用gprs接入internet进行远程数据传输,是近两年企业、研究所等科研机构的热门课题。随着gprs技术的日益成熟,gprs已经成功地应用在远程抄表、夜灯照明、油田监测、自动测量、智能仪表等不方便甚至根本不可能人工操作的远程数据传输系统中。因此,本系统选用gprs和gsm混合工作模式:在网络状况通畅的情况使用gprs工作模式;反之可以切换到gsm工作模式。每个站点数据传输终端定时登陆到gprs,接入internet上的主机服务器,把采集数据和站点状态下载到服务器硬盘上;上层采用b/s浏览器方式供地级、区级、市级等不同级别设置权限浏览;同时可以随时监控站点的实时状态,报告实时现场状况,调用系统历史数据信息。
市场的机遇和应用技术的成熟常常是一对矛盾,尤其对于gprs这类新技术,通常不得不一边开拓市场一边完善技术。然而实践是检验真理的唯一标准。系统交接使用之后,用户反馈一些改善功能的意见,另外,长时间使用之后,终端程序隐藏的“bug”也可能会随之浮出水面。这就需要对数据传输终端的程序进行升级,但是设想一下,假如投入使用了200个站点,就算用isp现场在线编程,工作人员得到每个站点把程序更新一遍。不但浪费大量的人力、物力,而且直接贻误了开辟市场的时机,对企业造成的后果可能是致命的。
本设计方案就是应用在此类gprs远程监控系统上,融合gprs网络通信技术解决数据传输终端程序升级问题的。
1 iap功能简介与系统应用
iap(inapplication programming)是应用在flash程序存储器的一种编程模式。简单地说就是在应用程序控制下,对程序某段存储空间进行读取、擦除、写入操作。与isp(insystemprogramming)操作非常相似,都不需要从电路板上取下芯片用编程器烧写再安装上去运行新程序,即具有在线编程功能。但是它们有其不同点:isp通常是整片擦除、编程,在手工操作下通过pc串口下载程序到flash,需要简单的硬件资源——串口rx、tx和rs232驱动芯片;而iap却是在某段程序的控制下对另外一段程序flash进行读写操作,可以控制对某段、某页甚至某个字节的读写操作。
根据iap的功能特点,可以制作仿真软件替代仿真器功能。在pc上做个简单的界面应用程序就可以直接实现用户程序在线仿真:设置断点、单步运行、改变运行结果调试等功能。同理,根据isp的功能特点可以替代编程器。本系统就是把iap模式融入到gprs通信系统中,用gprs远程升级指定目标芯片的软件。
2 iap功能系统架构
iap功能系统架构如图1所示。
图1系统架构 (只标示与iap功能相关部分)
p89lpc936是philips公司推出的一款高稳定性、多功能的51内核mcu;集成了i2c总线,读写操作i2c器件fm24c256速度快、稳定性高;增强型uart,具有帧错误检测、帧间隔检测、可选双缓冲、接收和发送中断可选分开等强大串口通信功能,增强了和gprs模块串口通信的可靠性;内置ad/da转换器;16 kb flash存取器,支持isp和iap;采用tssop28或hwqfn28低成本封装。设计系统的外围电路可以减少到最少,不但提高了系统的性能,甚至可以iap升级终端部分功能而不用改变外围硬件电路。
fm24c256,256 kb的fram (铁电存储器),兼有rom的掉电数据保存特性和ram的读写速度和次数,读写次数达到1000亿次,采用i2c总线读写操作,使用稳定可靠;用8脚soic封装,与mcu的接口电路简单、通信可靠。通信速率0~400 khz可调。p89lpc936的i2sclh和i2scll 两个sfr的值就是确定串行时钟发生器占空比。本系统选择7.372 8 mhz晶振,i2sclh=i2scll=75,i2c速率为25 kbps。
gprs模块使用wavecom公司生产的q2406b,双频gprs/gsm模块(egsm900/1 800