摘 要:OpenAt是一款基于GSM/GPRS無線CPU模塊的嵌入式操作系統(tǒng)。OpenAt系統(tǒng)集成了基于GSM/GPRS無線CPU模塊的大部分應用開發(fā)API函數(shù)庫。DOTA是指系統(tǒng)遠程無線升級功能。本文以Q2686無線CPU為模塊為例,介紹OpenAt操作系統(tǒng)平臺上的基于FTP協(xié)議的遠程DOTA軟件設(shè)計,為GSM/GPRS產(chǎn)品應用提供一種遠程在線升級手段。
關(guān)鍵詞: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)
電子技術(shù)的發(fā)展,使得電子產(chǎn)品的升級換代越來越快,用戶對電子產(chǎn)品的需求也會隨著技術(shù)的發(fā)展而增加或改進,使得產(chǎn)品設(shè)計周期越來越短,同時帶來的產(chǎn)品后續(xù)維護服務也越來越復雜。GPRS網(wǎng)絡和互聯(lián)網(wǎng)技術(shù)的發(fā)展使得無線遠程數(shù)據(jù)傳輸技術(shù)深入到社會的各個領(lǐng)域,基于GPRS網(wǎng)絡的終端系統(tǒng)也越來越多。在眾多GPRS終端產(chǎn)品中,由于產(chǎn)品設(shè)計的周期變短,系統(tǒng)或多或少會存在軟件缺陷,同時由于不同客戶的需求也會增加,使得更多GPRS終端產(chǎn)品需要軟件升級,相對于傳統(tǒng)的有線升級模式,GPRS遠程無線升級更具有靈活性,逐漸成為大多數(shù)產(chǎn)品遠程升級的主要模式。DOTA的全稱是Download Over The Air,即空中無線下載。DOTA的模式有兩種,一種主動式,一種被動式。主動式是指GPRS終端獲取升級指令后主動到服務器上搜尋升級程序,并下載下來進行系統(tǒng)內(nèi)編程;被動式則是由服務器端控制軟件將升級文件打包,依次將數(shù)據(jù)發(fā)送至GPRS終端。相對于被動式升級,主動式升級速度和效率上更具有優(yōu)勢。在這里,我們介紹基于無線CPU模塊Q2686 FTP協(xié)議棧的DOTA升級模式。
2 OpenAt系統(tǒng)簡介(OpenAt system introduction)
OpenAt嵌入式系統(tǒng)是為GPRS無線CPU開發(fā)的一款小型操作系統(tǒng),集成了內(nèi)存分配、FLASH管理、數(shù)據(jù)流管理、GPIO管理、總線管理、定時器管理等多種功能。底層為嵌入式API應用層,包括程序初始化API、AT指令API、操作系統(tǒng)API、標準API、流控API、總線API等。包含了建立在OpenAt基礎(chǔ)之上的應用開發(fā)層函數(shù)庫。應用開發(fā)層函數(shù)庫(簡稱ADL)為開發(fā)人員提供了上層應用接口,簡化了嵌入式應用的開發(fā);同時ADL還提供了嵌入式應用程序框架,包括消息解析器和服務聲明機制。基于以上原因,OpenAt應用程序開發(fā)應用程序時,更多的時間用于調(diào)用服務處理函數(shù),使系統(tǒng)更專注于程序本身的優(yōu)化[1]。
OpenAt操作系統(tǒng)與應用程序關(guān)系框圖如圖1所示。
3 FTP協(xié)議棧簡介(FTP protocol stack introduction)
FTP協(xié)議是TCP/IP協(xié)議組中的協(xié)議之一,英文縮寫為File Transfer Protocol,即文件傳輸協(xié)議。該協(xié)議是以Internet文件傳送為基礎(chǔ),由一系列規(guī)格說明文檔組成,目標是提高文件的共享性,提供非直接使用的遠程計算機,使存儲介質(zhì)對用戶透明和可靠高效的傳送數(shù)據(jù),F(xiàn)TP屬于一種客戶端/服務器端的系統(tǒng)。FTP傳輸包括兩種方式:ASCII傳輸模式和二進制數(shù)據(jù)傳輸模式。FTP支持兩種工作方式,Standard模式和Passive模式,即主動方式和被動方式,主動模式連接過程是由客戶端向FTP服務器端口(默認21)發(fā)送連接請求,服務器接收連接,建立一條命令鏈路,當需要數(shù)據(jù)傳時,客戶端在命令鏈路上發(fā)送PORT命令通知服務器發(fā)送數(shù)據(jù)到客戶端指定端口;被動模式是指客戶端向服務器的FTP端口發(fā)送連接請求,服務器接收連接,建立一條命令鏈路,當需要數(shù)據(jù)傳輸時,服務器通過PASV命令通知客戶端新建數(shù)據(jù)傳輸端口,由客戶端向新建FTP端口發(fā)送數(shù)據(jù)連接請求,建立一條數(shù)據(jù)鏈路來傳輸數(shù)據(jù)。在本文中,重點討論被動模式下的FTP數(shù)據(jù)傳輸[2]。
4 OpenAt系統(tǒng)DOTA流程(OpenAt system DOTA
process)
在OpenAt操作系統(tǒng)中,啟動DOTA遠程升級的流程大致如下:啟動WIP服務,建立GPRS鏈路,打開FTP服務SOCKET連接,連接至指定FTP服務器,打開文件夾查找到目標文件,由客戶端發(fā)起,執(zhí)行文件下載,完成下載后,啟動OpenAt內(nèi)部在線編程服務,從而完成升級。完整的系統(tǒng)流程圖如圖2所示。
5 GPRS終端硬件系統(tǒng)(GPRS terminal hardware
system)endprint
在這里,以無線CPU模塊Q2686小系統(tǒng)為例,Q2686模塊是Sierra公司為工業(yè)應用開發(fā)的高端GPRS無線CPU,適用于惡劣環(huán)境,具備抗強電磁干擾能力。內(nèi)部集成了32位的ARM9芯片,最高頻率為104MHz,集成了32M的Flash空間和8M的RAM,擁有44個GPIO、兩路SPI、兩路UART口。集成了嵌入式OpenAt操作系統(tǒng),支持USB Slave和I2C總線[3]。
一個基于Q2686的車載GPS小系統(tǒng)硬件框圖如圖3所示。
6 DOTA軟件設(shè)計(DOTA software design)
基于上述Q2686小系統(tǒng),設(shè)計OpenAt嵌入式程序。DOTA系統(tǒng)程序設(shè)計包括系統(tǒng)初始化、GPRS鏈路建立、FTP協(xié)議棧啟動、文件下載、升級安裝、系統(tǒng)重啟等過程。
6.1 GPRS數(shù)據(jù)鏈路的建立[4]
在OpenAt嵌入式系統(tǒng)中,啟動GPRS的功能模塊是WIP插件庫,該插件庫集成了TCP/IP、UDP、FTP、HTTP等多種網(wǎng)絡協(xié)議棧,根據(jù)需要啟動相應的協(xié)議棧函數(shù)庫。在這里,我們建立FTP客戶端。
OpenAt系統(tǒng)中,啟動WIP登錄GPRS網(wǎng)絡首先啟動系統(tǒng)的Bearer,Bearer在OpenAt中作為一種數(shù)據(jù)通道,在一個Bearer下可以建立多條不同協(xié)議棧的數(shù)據(jù)鏈路。Bearer的建立示例代碼如下:
void StartWipHandler(u8 ID){
s8 sReturn;
if(wip_netInit()==0){//初始化網(wǎng)絡協(xié)議棧 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);//設(shè)置GPS參數(shù),APN接入點,PPP協(xié)議的認證用戶名和密碼
if(sReturn==0) sReturn=wip_bearerStart(br);//建立PPP連接
}}}
Bearer通道建立完成后,當BearerHandler返回函數(shù)返回WIP_BEV_IP_CONNECTED事件時,表明當前的PPP連接建立成功。
6.2 FTP協(xié)議棧的啟動
完成WIP_BEV_IP_CONNECTED事件返回后,創(chuàng)建FTP協(xié)議棧的客戶端連接[4]。啟動函數(shù)為:
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鏈路返回句柄。返回函數(shù)ClientEventHandler定義如下:
void ClientEventHandler(wip_event_t*event,void*ctx) {
switch(event->kind){
case WIP_CEV_READ:break; //FTP數(shù)據(jù)包讀操作
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函數(shù)的返回函數(shù)FtpevhHandler定義如下:
Void FtpevhHandler(wip_event_t*ev,void*ctx){
switch(ev->kind){
sase WIP_CEV_READ://下載文件
downloadFile();break;
case WIP_CEV_PEER_CLOSE://下載完成
install();//啟動升級安裝函數(shù)
default:break;
}}
系統(tǒng)返回WIP_CEV_READ事件狀態(tài),立即啟動download()函數(shù)進行文件下載存儲,download示例代碼為:
Void download(u8 ID){
if((len=wip_read(Channel,&FtpBuf[0],sizeof(FtpBuf)))>0){
sReturn=adl_adWrite(ptk_UpDataCellHandle,
len,F(xiàn)tpBuf);//存入Flash空間endprint
DataNumber+=len;//文件長度變量,全局變量
if(sReturn==0)adl_tmrSubscribe(FALSE,
2,ADL_TMR_TYPE_100MS,download);//200ms后重新調(diào)用download()函數(shù)
}}
Download()函數(shù)下載文件到文件尾時,系統(tǒng)自動進入WIP_CEV_PEER_CLOSE事件狀態(tài),完成下載。
6.3 升級程序
在WIP_CEV_PEER_CLOSE事件狀態(tài)啟動install()函數(shù),安裝下載完成的file.dwl文件。Install ()函數(shù)運行大約耗時3—5秒,安裝過程中,系統(tǒng)輸出ADL_AD_EVENT_INSTALL事件狀態(tài),表明系統(tǒng)已經(jīng)完成新程序的安裝,系統(tǒng)硬件自動重新啟動,啟動運行新程序。完成整個下載過程。
6.4 系統(tǒng)的安全性設(shè)計
在實際的DOTA程序設(shè)計中,存在很多不可預見的災難性錯誤,容易導致系統(tǒng)崩潰,為了保證系統(tǒng)DOTA程序的順利進行,需要在DOTA過程中增加多級災難預警和保護措施[5]。保護措施如圖4所示。
7 遠程DOTA系統(tǒng)的應用(Application of remote
DOTA system )
對基于GPRS無線CPU的終端產(chǎn)品進行遠程DOTA,可以很方便地實現(xiàn)軟件系統(tǒng)版本的更新,又減少了現(xiàn)場服務的成本,所以DOTA功能被很多產(chǎn)品采用,包括兒童追蹤器、車載GPS系統(tǒng)、GSM直放站監(jiān)控系統(tǒng)、GPRS道路交通誘導系統(tǒng)和家庭無線報警系統(tǒng)中。而基于FTP協(xié)議棧的DOTA應用更具備一些優(yōu)勢,首先是無須服務器端控制軟件,減少了服務器軟件開發(fā)成本,其次是DOTA過程全部由下位機獨立完成,只需要將升級文件上載至固定FTP服務器的固定文件夾即可,下位機完成升級后自動重啟運行新程序,減少了人工干預的過程,實現(xiàn)了系統(tǒng)的自動化運行。
8 結(jié)論(Conclusion)
市場機遇和應用技術(shù)的成熟往往是互相矛盾的[5],產(chǎn)品更新?lián)Q代的速度隨著技術(shù)的發(fā)展而加快,系統(tǒng)潛在的BUG會隨著產(chǎn)品的使用出現(xiàn),客戶的需求也會隨時改變,尤其對于車載類GPRS遠程數(shù)據(jù)傳輸產(chǎn)品的設(shè)計,往往客戶的需求并不是一次性提出的,后續(xù)的產(chǎn)品升級如果繼續(xù)采用傳統(tǒng)的現(xiàn)場燒錄方式已經(jīng)不合時宜,而且花費的人力物力也是非常龐大。GPRS類產(chǎn)品本身就是遠程數(shù)據(jù)傳輸,借助于遠程數(shù)據(jù)傳輸,通過CPU內(nèi)部的自安裝功能,設(shè)計可以隨時隨地遠程升級的程序,是為客戶提供最好的非現(xiàn)場技術(shù)支持手段,更關(guān)鍵可以實現(xiàn)在客戶不知不覺的情況下實時了遠程DOTA升級。該方案從根本上解決了現(xiàn)場升級困難和耗費大量財力的情況,加速了新產(chǎn)品上市的時間,可以為產(chǎn)品的售后提供更快更完美
的用戶服務,增強產(chǎn)品的市場競爭力。
參考文獻(References)
[1] 洪利,等.無線CPU與移動IP網(wǎng)絡開發(fā)技術(shù)[M].北京:北京航空航天大學出版社,2015.
[2] W.Richard Stevers(美).TCP/IP詳解(第三卷)協(xié)議[M].北京:北京大學出版社,2015.
[3] WM_Q2686_modules_spec_sheet [S].Wavecom Corporation,
2016.
[4] ADL_User_Guide For OpenAt@OS[S].Wavecom Corporation,
2016.
[5] 胡靜靜.實現(xiàn)基于GPRS的無線遠程IAP功能[J].單片機與嵌入式系統(tǒng)應用,2005(1):21-23.
作者簡介:
鮑海森(1977-),男,本科,高級工程師.研究領(lǐng)域:車聯(lián)網(wǎng)技術(shù),戰(zhàn)略方向規(guī)劃,車聯(lián)網(wǎng)商業(yè)模式分析.endprint