文獻(xiàn)標(biāo)識碼: A
文章編號: 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)測終端的升級和維護(hù)受到了距離和環(huán)境的限制[2,3]。因此,需要建立一套行之有效的遠(yuǎn)程升級方案,提高車載監(jiān)測終端的可維護(hù)性[4]。
本文以文獻(xiàn)[5]中的工程機(jī)械車載測試終端為軟件升級對象,將STC89LE516RD主控制器換成具有IAP(In Application Programming)功能的ATMEGA128單片機(jī),提出一種基于LabVIEW、CDMA網(wǎng)絡(luò)的工程機(jī)械車載監(jiān)測終端的遠(yuǎn)程升級方案,實(shí)現(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運(yùn)營商無線通信網(wǎng)絡(luò)和工程機(jī)械車載監(jiān)測終端三部分組成。
應(yīng)用程序升級平臺由LabVIEW軟件設(shè)計(jì)而成,主要實(shí)現(xiàn)讀取并解析ATMEGA128單片機(jī)的HEX、BIN等格式的機(jī)器碼文件,通過網(wǎng)絡(luò)運(yùn)營商獲取Internet的IP地址,由用戶選擇指定的客戶端IAP終端平臺進(jìn)行更新,或客戶端平臺主動請求更新,并根據(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)用程序升級平臺發(fā)送的數(shù)據(jù),經(jīng)CRC校驗(yàn)碼校驗(yàn)無誤后,完成對應(yīng)用程序Flash存儲區(qū)域更新寫入的操作。最后由BootLoader程序跳轉(zhuǎn)到應(yīng)用程序Flash存儲區(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),對電源進(jìn)行濾波,使輸出電壓更加穩(wěn)定。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 升級平臺軟件設(shè)計(jì)
圖3表示升級平臺程序流程。升級平臺首先完成對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平臺提供的以太網(wǎng)傳輸層TCP協(xié)議,將各個(gè)小數(shù)據(jù)包按照順序依次發(fā)送到遠(yuǎn)程的工程機(jī)械車載監(jiān)測終端。
3.2 車載監(jiān)測終端程序遠(yuǎn)程升級設(shè)計(jì)
3.2.1 程序遠(yuǎn)程升級原理
ATmega128的Flash程序存儲器分為兩個(gè)區(qū):應(yīng)用代碼區(qū)和Boot加載區(qū)。應(yīng)用代碼區(qū)是Flash用來存儲應(yīng)用代碼的區(qū)域。由于對Flash ROM寫操作SPM(Store Program Memory)指令在應(yīng)用區(qū)執(zhí)行時(shí)是無效的,應(yīng)用區(qū)不能用來存儲Boot代碼。Boot加載區(qū)用來存儲Boot加載軟件, SPM指令只有在Boot加載區(qū)中執(zhí)行時(shí)才能夠完成對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個(gè)功能。
當(dāng)串口接收中斷發(fā)生時(shí),ATmega128調(diào)用接收中斷子程序讀取新程序代碼,并計(jì)算CRC16值,驗(yàn)證接收到的數(shù)據(jù)是否正確。只有確保接收到的數(shù)據(jù)完全正確,ATmega128才調(diào)用IAP子程序,將代碼寫入Flash程序存儲器。其中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ū)段直到升級完成[10]。
3.2.3 通信協(xié)議制定
為保證升級平臺端進(jìn)行效率高、可靠性強(qiáng)的數(shù)據(jù)通信,本文制定了雙方通信的協(xié)議及規(guī)則。通信協(xié)議對數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢錯(cuò)方式以及控制字符定義等問題做出統(tǒng)一規(guī)定,通信雙方必須共同遵守。
表1為升級平臺端命令格式,表2為監(jiān)測終端命令格式。起始位和結(jié)束位用于標(biāo)示數(shù)據(jù)串的起止范圍;數(shù)據(jù)長度為除了起始位和結(jié)束位外的數(shù)據(jù)總字節(jié);校驗(yàn)位采用CRC16校驗(yàn)。
根據(jù)升級平臺端和監(jiān)測終端的通信協(xié)議,建立如圖5所示的通信握手過程。
車載監(jiān)測終端監(jiān)測是否有特定的電話號碼撥入,如果匹配電話號碼成功,則終端通過CDMA Modern撥號接入電信服務(wù)器獲取IP,向升級平臺發(fā)送終端就緒命令;升級平臺獲得當(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)行升級平臺軟件調(diào)試時(shí),采用“網(wǎng)絡(luò)調(diào)試助手”作為監(jiān)測終端,進(jìn)行數(shù)據(jù)交互測試。以HEX格式文件為例,運(yùn)行升級平臺測試程序,設(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í),若數(shù)據(jù)出錯(cuò),則向升級平臺發(fā)送“通信出錯(cuò)”的代碼,升級平臺重新發(fā)送該數(shù)據(jù)包;若數(shù)據(jù)正確,則向升級平臺發(fā)送“通信正確”的代碼,升級平臺斷開與終端的連接。
在進(jìn)行車載監(jiān)測終端遠(yuǎn)程升級調(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ā)送由升級平臺調(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ù)對比可看出,數(shù)據(jù)完全相同,終端已實(shí)現(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)用于工程機(jī)械車載監(jiān)測終端軟件遠(yuǎn)程升級,提高了車載監(jiān)測終端的可維護(hù)性;采用LabVIEW Socket網(wǎng)絡(luò)套接字構(gòu)建了TCP服務(wù)器應(yīng)用程序,程序具有對HEX、BIN等格式的機(jī)器碼文件的解析和分包功能;規(guī)范了升級平臺和工程機(jī)械車載監(jiān)測終端之間阻塞式通信交互過程,采取了 IAP 軟件升級過程的可靠性和掉電保護(hù)措施。
參考文獻(xiàn)
[1] 金敏,羅恩澤,周翔.面向工程機(jī)械遠(yuǎn)程智能監(jiān)控的無線通信協(xié)議[J].中國機(jī)械工程,2011,22(19):2316-2324.
[2] 成強(qiáng),周月英,周慶民,等.程序可遠(yuǎn)程升級的數(shù)據(jù)采集終端的設(shè)計(jì)[J].河南大學(xué)學(xué)報(bào):自然科學(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] 江小霞,林建輝,周永征.工程機(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ī)車電傳動,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)程升級功能的小區(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單片機(jī)的軟件遠(yuǎn)程升級[J].電子技術(shù)應(yīng)用,2003,29(11):23-25.