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