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