基于FTP协议栈的OpenAt应用软件远程DOTA系统

2017-10-28 21:49鲍海森
软件工程 2017年9期

摘 要:OpenAt是一款基于GSM/GPRS无线CPU模块的嵌入式操作系统。OpenAt系统集成了基于GSM/GPRS无线CPU模块的大部分应用开发API函数库。DOTA是指系统远程无线升级功能。本文以Q2686无线CPU为模块为例,介绍OpenAt操作系统平台上的基于FTP协议的远程DOTA软件设计,为GSM/GPRS产品应用提供一种远程在线升级手段。

关键词:FTP;OPENAT;DOTA;GPRS;TCP/IP

中图分类号:TP23 文献标识码:A

Abstract:OpenAt is an embedded operating system based on the GSM/GPRS wireless CPU module.OpenAt integrates most of the applications based on the GSM/GPRS wireless CPU module to develop the API function library.DOTA refers to the system remote wireless upgrade function.Taking Q2686 wireless CPU as an example,this paper introduces the design of remote DOTA software based on FTP on the OpenAt operating system platform,and provides an online remote upgrade method for the GSM/GPRS product application.

Keywords:FTP;OPENAT;DOTA;GPRS;TCP/IP

1 引言(Introduction)

電子技术的发展,使得电子产品的升级换代越来越快,用户对电子产品的需求也会随着技术的发展而增加或改进,使得产品设计周期越来越短,同时带来的产品后续维护服务也越来越复杂。GPRS网络和互联网技术的发展使得无线远程数据传输技术深入到社会的各个领域,基于GPRS网络的终端系统也越来越多。在众多GPRS终端产品中,由于产品设计的周期变短,系统或多或少会存在软件缺陷,同时由于不同客户的需求也会增加,使得更多GPRS终端产品需要软件升级,相对于传统的有线升级模式,GPRS远程无线升级更具有灵活性,逐渐成为大多数产品远程升级的主要模式。DOTA的全称是Download Over The Air,即空中无线下载。DOTA的模式有两种,一种主动式,一种被动式。主动式是指GPRS终端获取升级指令后主动到服务器上搜寻升级程序,并下载下来进行系统内编程;被动式则是由服务器端控制软件将升级文件打包,依次将数据发送至GPRS终端。相对于被动式升级,主动式升级速度和效率上更具有优势。在这里,我们介绍基于无线CPU模块Q2686 FTP协议栈的DOTA升级模式。

2 OpenAt系统简介(OpenAt system introduction)

OpenAt嵌入式系统是为GPRS无线CPU开发的一款小型操作系统,集成了内存分配、FLASH管理、数据流管理、GPIO管理、总线管理、定时器管理等多种功能。底层为嵌入式API应用层,包括程序初始化API、AT指令API、操作系统API、标准API、流控API、总线API等。包含了建立在OpenAt基础之上的应用开发层函数库。应用开发层函数库(简称ADL)为开发人员提供了上层应用接口,简化了嵌入式应用的开发;同时ADL还提供了嵌入式应用程序框架,包括消息解析器和服务声明机制。基于以上原因,OpenAt应用程序开发应用程序时,更多的时间用于调用服务处理函数,使系统更专注于程序本身的优化[1]。

OpenAt操作系统与应用程序关系框图如图1所示。

3 FTP协议栈简介(FTP protocol stack introduction)

FTP协议是TCP/IP协议组中的协议之一,英文缩写为File Transfer Protocol,即文件传输协议。该协议是以Internet文件传送为基础,由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用的远程计算机,使存储介质对用户透明和可靠高效的传送数据,FTP属于一种客户端/服务器端的系统。FTP传输包括两种方式:ASCII传输模式和二进制数据传输模式。FTP支持两种工作方式,Standard模式和Passive模式,即主动方式和被动方式,主动模式连接过程是由客户端向FTP服务器端口(默认21)发送连接请求,服务器接收连接,建立一条命令链路,当需要数据传时,客户端在命令链路上发送PORT命令通知服务器发送数据到客户端指定端口;被动模式是指客户端向服务器的FTP端口发送连接请求,服务器接收连接,建立一条命令链路,当需要数据传输时,服务器通过PASV命令通知客户端新建数据传输端口,由客户端向新建FTP端口发送数据连接请求,建立一条数据链路来传输数据。在本文中,重点讨论被动模式下的FTP数据传输[2]。

4 OpenAt系统DOTA流程(OpenAt system DOTA

process)

在OpenAt操作系统中,启动DOTA远程升级的流程大致如下:启动WIP服务,建立GPRS链路,打开FTP服务SOCKET连接,连接至指定FTP服务器,打开文件夹查找到目标文件,由客户端发起,执行文件下载,完成下载后,启动OpenAt内部在线编程服务,从而完成升级。完整的系统流程图如图2所示。

5 GPRS终端硬件系统(GPRS terminal hardware

system)endprint

在这里,以无线CPU模块Q2686小系统为例,Q2686模块是Sierra公司为工业应用开发的高端GPRS无线CPU,适用于恶劣环境,具备抗强电磁干扰能力。内部集成了32位的ARM9芯片,最高频率为104MHz,集成了32M的Flash空间和8M的RAM,拥有44个GPIO、两路SPI、两路UART口。集成了嵌入式OpenAt操作系统,支持USB Slave和I2C总线[3]。

一个基于Q2686的车载GPS小系统硬件框图如图3所示。

6 DOTA软件设计(DOTA software design)

基于上述Q2686小系统,设计OpenAt嵌入式程序。DOTA系统程序设计包括系统初始化、GPRS链路建立、FTP协议栈启动、文件下载、升级安装、系统重启等过程。

6.1 GPRS数据链路的建立[4]

在OpenAt嵌入式系统中,启动GPRS的功能模块是WIP插件库,该插件库集成了TCP/IP、UDP、FTP、HTTP等多种网络协议栈,根据需要启动相应的协议栈函数库。在这里,我们建立FTP客户端。

OpenAt系统中,启动WIP登录GPRS网络首先启动系统的Bearer,Bearer在OpenAt中作为一种数据通道,在一个Bearer下可以建立多条不同协议栈的数据链路。Bearer的建立示例代码如下:

void StartWipHandler(u8 ID){

s8 sReturn;

if(wip_netInit()==0){//初始化网络协议栈 sReturn=wip_bearerOpen(&br,"GPRS",BearerHandler,NULL);//打开Bearer的GPRS链路

if((sReturn==0)||(sReturn==WIP_BERR_ALREADY)){ sReturn=wip_bearerSetOpts(br,WIP_BOPT_GPRS_APN,”CMNET”,

WIP_BOPT_LOGIN,NULL,WIP_BOPT_PASSWORD,NULL,WIP_BOPT_END);//设置GPS参数,APN接入点,PPP协议的认证用户名和密码

if(sReturn==0) sReturn=wip_bearerStart(br);//建立PPP连接

}}}

Bearer通道建立完成后,当BearerHandler返回函数返回WIP_BEV_IP_CONNECTED事件时,表明当前的PPP连接建立成功。

6.2 FTP协议栈的启动

完成WIP_BEV_IP_CONNECTED事件返回后,创建FTP协议栈的客户端连接[4]。启动函数为:

Channel=wip_FTPClientCreateOpts(“202.113.23.56”,ClientEventHandler,NULL,

WIP_COPT_USER,”ADMIN”,//FTP登录用户名

WIP_COPT_PASSWORD,”password”,//FTP登录密码

WIP_COPT_PASSIVE,TRUE,//建立被动式连接

WIP_COPT_PEER_PORT,21,//端口

WIP_COPT_END);

其中,Channel值即FTP链路返回句柄。返回函数ClientEventHandler定义如下:

void ClientEventHandler(wip_event_t*event,void*ctx) {

switch(event->kind){

case WIP_CEV_READ:break; //FTP数据包读操作

case WIP_CEV_OPEN: //FTP链路建立完成

sReturn=wip_cwd(Channel,”file/download”);//切换到文件所在目录

break;

case WIP_CEV_DONE://切换文件目录完成

wip_getFile(Channel,”file.dwl”,(wip_eventHandler_f)FtpevhHandler,NULL);//下载file.dwl二进制文件

break;

}}

其中,wip_getFile函数的返回函数FtpevhHandler定义如下:

Void FtpevhHandler(wip_event_t*ev,void*ctx){

switch(ev->kind){

sase WIP_CEV_READ://下载文件

downloadFile();break;

case WIP_CEV_PEER_CLOSE://下载完成

install();//启动升级安装函数

default:break;

}}

系统返回WIP_CEV_READ事件状态,立即启动download()函數进行文件下载存储,download示例代码为:

Void download(u8 ID){

if((len=wip_read(Channel,&FtpBuf[0],sizeof(FtpBuf)))>0){

sReturn=adl_adWrite(ptk_UpDataCellHandle,

len,FtpBuf);//存入Flash空间endprint

DataNumber+=len;//文件长度变量,全局变量

if(sReturn==0)adl_tmrSubscribe(FALSE,

2,ADL_TMR_TYPE_100MS,download);//200ms后重新调用download()函数

}}

Download()函数下载文件到文件尾时,系统自动进入WIP_CEV_PEER_CLOSE事件状态,完成下载。

6.3 升级程序

在WIP_CEV_PEER_CLOSE事件状态启动install()函数,安装下載完成的file.dwl文件。Install ()函数运行大约耗时3—5秒,安装过程中,系统输出ADL_AD_EVENT_INSTALL事件状态,表明系统已经完成新程序的安装,系统硬件自动重新启动,启动运行新程序。完成整个下载过程。

6.4 系统的安全性设计

在实际的DOTA程序设计中,存在很多不可预见的灾难性错误,容易导致系统崩溃,为了保证系统DOTA程序的顺利进行,需要在DOTA过程中增加多级灾难预警和保护措施[5]。保护措施如图4所示。

7 远程DOTA系统的应用(Application of remote

DOTA system )

对基于GPRS无线CPU的终端产品进行远程DOTA,可以很方便地实现软件系统版本的更新,又减少了现场服务的成本,所以DOTA功能被很多产品采用,包括儿童追踪器、车载GPS系统、GSM直放站监控系统、GPRS道路交通诱导系统和家庭无线报警系统中。而基于FTP协议栈的DOTA应用更具备一些优势,首先是无须服务器端控制软件,减少了服务器软件开发成本,其次是DOTA过程全部由下位机独立完成,只需要将升级文件上载至固定FTP服务器的固定文件夹即可,下位机完成升级后自动重启运行新程序,减少了人工干预的过程,实现了系统的自动化运行。

8 结论(Conclusion)

市场机遇和应用技术的成熟往往是互相矛盾的[5],产品更新换代的速度随着技术的发展而加快,系统潜在的BUG会随着产品的使用出现,客户的需求也会随时改变,尤其对于车载类GPRS远程数据传输产品的设计,往往客户的需求并不是一次性提出的,后续的产品升级如果继续采用传统的现场烧录方式已经不合时宜,而且花费的人力物力也是非常庞大。GPRS类产品本身就是远程数据传输,借助于远程数据传输,通过CPU内部的自安装功能,设计可以随时随地远程升级的程序,是为客户提供最好的非现场技术支持手段,更关键可以实现在客户不知不觉的情况下实时了远程DOTA升级。该方案从根本上解决了现场升级困难和耗费大量财力的情况,加速了新产品上市的时间,可以为产品的售后提供更快更完美

的用户服务,增强产品的市场竞争力。

参考文献(References)

[1] 洪利,等.无线CPU与移动IP网络开发技术[M].北京:北京航空航天大学出版社,2015.

[2] W.Richard Stevers(美).TCP/IP详解(第三卷)协议[M].北京:北京大学出版社,2015.

[3] WM_Q2686_modules_spec_sheet [S].Wavecom Corporation,

2016.

[4] ADL_User_Guide For OpenAt@OS[S].Wavecom Corporation,

2016.

[5] 胡静静.实现基于GPRS的无线远程IAP功能[J].单片机与嵌入式系统应用,2005(1):21-23.

作者简介:

鲍海森(1977-),男,本科,高级工程师.研究领域:车联网技术,战略方向规划,车联网商业模式分析.endprint