文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)05-0156-03
0 引言
長期以來,,工程機(jī)械安全作業(yè)形式嚴(yán)峻,開發(fā)面向工程機(jī)械的車載監(jiān)測終端可有效地監(jiān)測工程機(jī)械的施工狀態(tài),、預(yù)警故障等,,為故障診斷提供方便[1]。然而,,若車載監(jiān)測終端軟件出現(xiàn)故障或需要增加程序功能,,技術(shù)人員需要到現(xiàn)場下載程序,,這使車載監(jiān)測終端的升級(jí)和維護(hù)受到了距離和環(huán)境的限制[2,3],。因此,,需要建立一套行之有效的遠(yuǎn)程升級(jí)方案,提高車載監(jiān)測終端的可維護(hù)性[4],。
本文以文獻(xiàn)[5]中的工程機(jī)械車載測試終端為軟件升級(jí)對(duì)象,,將STC89LE516RD主控制器換成具有IAP(In Application Programming)功能的ATMEGA128單片機(jī),提出一種基于LabVIEW,、CDMA網(wǎng)絡(luò)的工程機(jī)械車載監(jiān)測終端的遠(yuǎn)程升級(jí)方案,,實(shí)現(xiàn)穩(wěn)定可靠、掉電可恢復(fù)的軟件遠(yuǎn)程升級(jí)目的,。此方法還可用于其他具有IAP功能的監(jiān)測終端中[6-8],, 具有廣闊的應(yīng)用前景。
1 遠(yuǎn)程升級(jí)系統(tǒng)總體結(jié)構(gòu)
遠(yuǎn)程升級(jí)系統(tǒng)整體結(jié)構(gòu)如圖1所示,,由應(yīng)用程序升級(jí)平臺(tái),、以太網(wǎng)及CDMA運(yùn)營商無線通信網(wǎng)絡(luò)和工程機(jī)械車載監(jiān)測終端三部分組成。
應(yīng)用程序升級(jí)平臺(tái)由LabVIEW軟件設(shè)計(jì)而成,,主要實(shí)現(xiàn)讀取并解析ATMEGA128單片機(jī)的HEX,、BIN等格式的機(jī)器碼文件,通過網(wǎng)絡(luò)運(yùn)營商獲取Internet的IP地址,,由用戶選擇指定的客戶端IAP終端平臺(tái)進(jìn)行更新,,或客戶端平臺(tái)主動(dòng)請(qǐng)求更新,并根據(jù)制訂的通信協(xié)議應(yīng)用程序以網(wǎng)絡(luò)數(shù)據(jù)包的形式傳輸?shù)竭h(yuǎn)程工程機(jī)械車載監(jiān)測終端,。運(yùn)行于車載監(jiān)測終端的BootLoader程序通過CDMA無線網(wǎng)絡(luò)接收并解析應(yīng)用程序升級(jí)平臺(tái)發(fā)送的數(shù)據(jù),,經(jīng)CRC校驗(yàn)碼校驗(yàn)無誤后,完成對(duì)應(yīng)用程序Flash存儲(chǔ)區(qū)域更新寫入的操作,。最后由BootLoader程序跳轉(zhuǎn)到應(yīng)用程序Flash存儲(chǔ)區(qū)復(fù)位地址開始處運(yùn)行更新后的應(yīng)用程序,。
2 電源電路設(shè)計(jì)
由于ATMEGA128單片機(jī)需要3.3 V電壓供電,而其他外圍芯片需要5 V電壓供電,,因此電源模塊需提供3.3 V和5 V電壓,。電源模塊的原理圖如圖2所示。
外部9 V直流變壓器接入J1,,通過5 V穩(wěn)壓芯片LM7805產(chǎn)生5 V電壓,,再經(jīng)過電壓轉(zhuǎn)換芯片AS1117(5 V~
3.3 V的轉(zhuǎn)換)的轉(zhuǎn)換,產(chǎn)生3.3 V的穩(wěn)壓電源,。圖中二極管VD1起電源保護(hù)作用,,防止外界電源反向時(shí)燒壞電路板;極性電容C101,、C103,、C203和無極性電容C102,、C201、C202分別兩兩并聯(lián),,對(duì)電源進(jìn)行濾波,,使輸出電壓更加穩(wěn)定。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 升級(jí)平臺(tái)軟件設(shè)計(jì)
圖3表示升級(jí)平臺(tái)程序流程,。升級(jí)平臺(tái)首先完成對(duì)ATMEGA128單片機(jī)的HEX,、BIN等格式的機(jī)器碼文件的讀取和解析;然后偵聽端口上是否有終端接入,,如果有,,則按照通信協(xié)議規(guī)定的客戶端一次性接收數(shù)據(jù)量大小,將文件分解成多個(gè)128 B小數(shù)據(jù)包,,直到數(shù)據(jù)索引結(jié)束,,最后一包的數(shù)據(jù)若不滿128 B,按照實(shí)際的數(shù)據(jù)量大小封裝,,每個(gè)小數(shù)據(jù)包尾部加入CRC16校驗(yàn)值,;最后,利用LabVIEW平臺(tái)提供的以太網(wǎng)傳輸層TCP協(xié)議,,將各個(gè)小數(shù)據(jù)包按照順序依次發(fā)送到遠(yuǎn)程的工程機(jī)械車載監(jiān)測終端,。
3.2 車載監(jiān)測終端程序遠(yuǎn)程升級(jí)設(shè)計(jì)
3.2.1 程序遠(yuǎn)程升級(jí)原理
ATmega128的Flash程序存儲(chǔ)器分為兩個(gè)區(qū):應(yīng)用代碼區(qū)和Boot加載區(qū)。應(yīng)用代碼區(qū)是Flash用來存儲(chǔ)應(yīng)用代碼的區(qū)域,。由于對(duì)Flash ROM寫操作SPM(Store Program Memory)指令在應(yīng)用區(qū)執(zhí)行時(shí)是無效的,,應(yīng)用區(qū)不能用來存儲(chǔ)Boot代碼。Boot加載區(qū)用來存儲(chǔ)Boot加載軟件, SPM指令只有在Boot加載區(qū)中執(zhí)行時(shí)才能夠完成對(duì)Flash ROM的寫操作,。ATmega128 中的Boot加載程序可以利用任何可用的數(shù)據(jù)接口和相關(guān)的協(xié)議來讀取代碼并且將其寫入(編程)Flash ROM,,或者從程序存儲(chǔ)器中讀取代碼[9]。
3.2.2 車載監(jiān)測終端程序遠(yuǎn)程升級(jí)
圖4表示車載監(jiān)測終端程序遠(yuǎn)程升級(jí)流程,,主要包括CDMA網(wǎng)絡(luò)的通信、協(xié)議解析和應(yīng)用程序更新3個(gè)功能,。
當(dāng)串口接收中斷發(fā)生時(shí),,ATmega128調(diào)用接收中斷子程序讀取新程序代碼,并計(jì)算CRC16值,,驗(yàn)證接收到的數(shù)據(jù)是否正確,。只有確保接收到的數(shù)據(jù)完全正確,ATmega128才調(diào)用IAP子程序,,將代碼寫入Flash程序存儲(chǔ)器,。其中IAP子程序詳見文獻(xiàn)[9]。為了提高數(shù)據(jù)通信可靠性,,數(shù)據(jù)傳輸過程中,,傳輸?shù)挠行?shù)據(jù)位數(shù)為128 B,,但I(xiàn)AP程序?qū)lash寫操作時(shí),一次只能寫一頁,,即256 B的數(shù)據(jù),,因此在校驗(yàn)正確的情況下,需要兩次傳輸過程才能完成一個(gè)完整頁的數(shù)據(jù)傳輸,,并執(zhí)行應(yīng)用程序區(qū)Flash頁寫入功能,。如果寫入出錯(cuò),且超過5次,,則向服務(wù)器返回出錯(cuò)命令,;反之則向服務(wù)器發(fā)送正確指令。為了解決程序下載時(shí)終端斷電造成的故障,,在應(yīng)用程序區(qū)段,,用第一條語句跳轉(zhuǎn)至Boot區(qū)段,讀取寫碼操作開始標(biāo)志位(此標(biāo)志位被寫入EEPROM 中),,若該標(biāo)志位被置位,,則跳轉(zhuǎn)至應(yīng)用程序區(qū)段繼續(xù)運(yùn)行程序,否則繼續(xù)守候在Boot區(qū)段直到升級(jí)完成[10],。
3.2.3 通信協(xié)議制定
為保證升級(jí)平臺(tái)端進(jìn)行效率高,、可靠性強(qiáng)的數(shù)據(jù)通信,本文制定了雙方通信的協(xié)議及規(guī)則,。通信協(xié)議對(duì)數(shù)據(jù)格式,、同步方式、傳送速度,、傳送步驟,、檢錯(cuò)方式以及控制字符定義等問題做出統(tǒng)一規(guī)定,通信雙方必須共同遵守,。
表1為升級(jí)平臺(tái)端命令格式,,表2為監(jiān)測終端命令格式。起始位和結(jié)束位用于標(biāo)示數(shù)據(jù)串的起止范圍,;數(shù)據(jù)長度為除了起始位和結(jié)束位外的數(shù)據(jù)總字節(jié),;校驗(yàn)位采用CRC16校驗(yàn)。
根據(jù)升級(jí)平臺(tái)端和監(jiān)測終端的通信協(xié)議,,建立如圖5所示的通信握手過程,。
車載監(jiān)測終端監(jiān)測是否有特定的電話號(hào)碼撥入,如果匹配電話號(hào)碼成功,,則終端通過CDMA Modern撥號(hào)接入電信服務(wù)器獲取IP,,向升級(jí)平臺(tái)發(fā)送終端就緒命令;升級(jí)平臺(tái)獲得當(dāng)前終端的IP地址,,采用TCP協(xié)議向終端下載程序代碼,,終端發(fā)送確認(rèn)回執(zhí)后,,進(jìn)行下一輪的數(shù)據(jù)交互,直到數(shù)據(jù)傳輸結(jié)束,。兩者之間的通信采用阻塞式通信,,確保數(shù)據(jù)正確完整地下載到終端。中間引入超時(shí)機(jī)制,,防止通信過程的死鎖,。
4 系統(tǒng)測試
在進(jìn)行升級(jí)平臺(tái)軟件調(diào)試時(shí),采用“網(wǎng)絡(luò)調(diào)試助手”作為監(jiān)測終端,,進(jìn)行數(shù)據(jù)交互測試,。以HEX格式文件為例,運(yùn)行升級(jí)平臺(tái)測試程序,,設(shè)置偵聽端口號(hào)為“6341”,,選擇com.hex文件;打開“網(wǎng)絡(luò)調(diào)試助手”,,選擇協(xié)議類型為“TCP客戶端”,,輸入升級(jí)平臺(tái)IP和偵聽端口號(hào),建立終端和升級(jí)平臺(tái)的網(wǎng)絡(luò)通信,。圖6表示LabVIEW分包發(fā)送數(shù)據(jù)的界面,。
當(dāng)終端接收到最后一包數(shù)據(jù)時(shí),若數(shù)據(jù)出錯(cuò),,則向升級(jí)平臺(tái)發(fā)送“通信出錯(cuò)”的代碼,,升級(jí)平臺(tái)重新發(fā)送該數(shù)據(jù)包;若數(shù)據(jù)正確,,則向升級(jí)平臺(tái)發(fā)送“通信正確”的代碼,,升級(jí)平臺(tái)斷開與終端的連接。
在進(jìn)行車載監(jiān)測終端遠(yuǎn)程升級(jí)調(diào)試時(shí),,采用黑盒調(diào)試法,。首先,利用Jtag開發(fā)器將Bootloader調(diào)試程序下載到開發(fā)板(Bootloader主程序如下所示),;其次,,運(yùn)行“網(wǎng)絡(luò)調(diào)試助手”,設(shè)置相應(yīng)參數(shù)和終端建立以太網(wǎng)通信,,并依次向TCP網(wǎng)絡(luò)發(fā)送由升級(jí)平臺(tái)調(diào)試得到的正確數(shù)據(jù)包。當(dāng)最后一包數(shù)據(jù)傳輸完畢,,開發(fā)板進(jìn)入休眠狀態(tài),,使用AVR studio讀取開發(fā)板應(yīng)用程序區(qū)的Flash數(shù)據(jù),檢驗(yàn)是否寫入數(shù)據(jù),。通過原始數(shù)據(jù)包和Flash數(shù)據(jù)對(duì)比可看出,,數(shù)據(jù)完全相同,,終端已實(shí)現(xiàn)軟件遠(yuǎn)程升級(jí)。
Bootloader調(diào)試程序:
void main(void)
{
unsigned char seviseip[]=
{"61.152.124.198"};
unsigned char seviseport[]={"6341"};
MCUCR|=0X02;//轉(zhuǎn)移中斷向量表至boot程序區(qū)
SystemInit();//初始化
OpenPort(3,1);//開串口
SREG=0X80;//打開全局中斷
ATTCP(seviseip,seviseport);//連入TCP網(wǎng)絡(luò)
pagewrite();//執(zhí)行IAP功能的函數(shù)
}
5 結(jié)論
本文將ATMEGA128 IAP技術(shù)應(yīng)用于工程機(jī)械車載監(jiān)測終端軟件遠(yuǎn)程升級(jí),,提高了車載監(jiān)測終端的可維護(hù)性,;采用LabVIEW Socket網(wǎng)絡(luò)套接字構(gòu)建了TCP服務(wù)器應(yīng)用程序,程序具有對(duì)HEX,、BIN等格式的機(jī)器碼文件的解析和分包功能,;規(guī)范了升級(jí)平臺(tái)和工程機(jī)械車載監(jiān)測終端之間阻塞式通信交互過程,采取了 IAP 軟件升級(jí)過程的可靠性和掉電保護(hù)措施,。
參考文獻(xiàn)
[1] 金敏,,羅恩澤,周翔.面向工程機(jī)械遠(yuǎn)程智能監(jiān)控的無線通信協(xié)議[J].中國機(jī)械工程,,2011,,22(19):2316-2324.
[2] 成強(qiáng),周月英,,周慶民,,等.程序可遠(yuǎn)程升級(jí)的數(shù)據(jù)采集終端的設(shè)計(jì)[J].河南大學(xué)學(xué)報(bào):自然科學(xué)版,2010,,40(4):353-356.
[3] 羅文,,王莉娜,肖鯤.基于GPRS的嵌入式系統(tǒng)遠(yuǎn)程監(jiān)控和升級(jí)[J].電子技術(shù)應(yīng)用,,2010,,36(5):159-162.
[4] 朱偉斌,張濤,,顧海濤,,等.基于CDMA網(wǎng)絡(luò)的嵌入式設(shè)備遠(yuǎn)程升級(jí)系統(tǒng)[J].電子技術(shù)應(yīng)用,2014,,40(2):135-138.
[5] 江小霞,,林建輝,周永征.工程機(jī)械車載測試系統(tǒng)的研發(fā)[J].電子測量與儀器學(xué)報(bào),,2009,,23(4):107-111.
[6] 李衛(wèi)紅,張凌云,,陳天喜,,等.基于IAP程序遠(yuǎn)程更新設(shè)計(jì)在車載乘客信息顯示器中的應(yīng)用[J].機(jī)車電傳動(dòng),2012,,5(2):79-81.
[7] 張雙鑼,,郎沁爭,肖鐵軍.供暖節(jié)能監(jiān)控系統(tǒng)的無線遠(yuǎn)傳協(xié)調(diào)器設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2012,,20(5):1251-1254.
[8] 諸德宏,,張介環(huán).具有遠(yuǎn)程升級(jí)功能的小區(qū)電能監(jiān)測系統(tǒng)[J].電子器件,2014,,37(4):733-736.
[9] 陳惠濱,,黃海.ATMega128 IAP技術(shù)在移動(dòng)數(shù)據(jù)采集器中的應(yīng)用[J].電子器件,2005,,28(1):101-104.
[10] 田日才,,王國鵬,梁學(xué)東.ATMEGA128單片機(jī)的軟件遠(yuǎn)程升級(jí)[J].電子技術(shù)應(yīng)用,,2003,,29(11):23-25.