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