徐洋,鄭繼敏
(重慶郵電大學自動化學院,重慶 400065)
車載終端的嵌入式軟件部分,由于其靈活性較大,往往是最容易出錯的地方,因此在車載終端的使用過程中,經常會發現系統中存在一些可以修復的軟件問題。另外,即使終端產品在使用過程中不存在軟件上的錯誤,但用戶提出了新的軟件需求,在這些情況下都需要對終端軟件程序進行升級。由于車輛流動性大且隨機分布在不同區域,當要給這些安裝在車輛上的車載終端進行程序升級時,通常要派出大量技術支持人員趕赴現場對終端進行代碼更新,這會極大地影響車載終端程序升級的及時性,可能會造成不可預計的損失[1]。同時,也給汽車生產商增加了大量的開支成本,給企業收益帶來影響。為了解決車載終端執行文件升級的不及時、成本較高等問題,作者設計了一套針對電動車車載終端的遠程升級系統。該系統在GPRS和因特網的支持下,從遠程服務器上下載最新的程序文件來替換舊的程序文件。其優勢在于利用網絡傳輸技術,而無須趕赴現場對車載終端進行升級。
在微處理器中,程序存儲器的編程方法通常有兩種:通過串口或JTAG等接口進行編程的在系統編程(In System Programming,ISP)模式、在應用程序控制下的在應用編程(In Application Programming,IAP)模式。ISP模式由于其調試的方便性得到眾多廠家的支持。IAP模式是應用Flash程序存儲器的一種編程模式,該模式將Flash存儲區分為兩部分:一部分用于存放引導加載程序,即BootLoader程序;另一部分用于存放用戶應用程序,即APP程序[2]。APP程序通過GPRS或其他無線傳輸技術遠程傳輸到微處理器的外圍存儲設備中。BootLoader程序即引導程序,當處理器上電或復位后首先運行引導程序。BootLoader程序檢測終端是否需要升級,如果不需要升級程序,則直接跳轉運行原來的APP程序;如果需要升級,BootLoader程序首先通過Flash存儲器的擦除、讀、寫機制對APP程序區進行擦除并將要升級的程序從外圍存儲設備中寫入到APP程序區,然后跳轉執行新的APP程序。
系統結構如圖1所示,由遠程服務器和基于STM32微控制器的車載終端組成。當車載終端需要升級時,服務器通過GPRS網絡將數據遠程傳輸到終端,終端將收到的數據寫入到終端外圍存儲設備中,終端重新上電后將存儲設備中升級文件拷貝到STM32內部Flash,實現車載終端自動跳轉升級功能。

圖1 系統結構圖
為了達到準確升級的目的,首先要對升級代碼文件進行組包,給每組數據包加入包序號、起始標志、結束標志、校驗位。并且要保證數據包的長度不大于256個字節以適應GPRS通信方式對數據包長度的要求[3],避免出現頻繁掉線和發送不出去的情況。如果數據包和校驗碼字段中出現了和起始結束標志位相同的數據,則要進行轉義處理。校驗碼采用異或校驗,從升級數據包開始,同后一字節異或,直到校驗碼前一個字節。具體數據包格式如表1所示。

表1 數據包格式
服務器端程序流程圖如圖2所示:服務器端啟動套接字監聽連接,等待車載終端主動連接;車載終端連接服務端成功后,服務端首先下發升級指令,若收到終端升級準備就緒的應答,則服務端將要下發的升級文件按照表1所示的格式進行分組打包,通過GPRS網絡將數據包傳輸到車載終端,直到整個升級文件發送完為止。

圖2 服務端流程圖
將BootLoader引導程序和APP程序分別存放在STM32 Flash的不同地址范圍,低地址存放BootLoader引導程序,緊跟其后的是APP程序[4]。車載終端控制芯片是STM32F105RBT6,Flash大小為128 kB,APP和BootLoader程序在Flash中存儲位置如圖3所示。設計的BootLoader程序和APP程序功能獨立,兩個程序模塊互不干擾。相對于其他設計中所采用的通過標志位置位來實現兩個程序的相互跳轉來說,軟件設計更加簡潔、功能更穩定。

圖3 STM32 Flash存儲區劃分
3.3.1 BootLoader程序設計
BootLoader引導程序流程圖如圖4所示,終端上電后,首先運行BootLoader程序,檢測TF卡中是否有待升級的文件,如果有則將TF卡中升級文件復制到Flash中APP地址處替換掉原來的APP程序,然后再跳轉執行新的APP程序。

圖4 BootLoader引導程序流程圖
3.3.2 接收升級文件程序設計
APP程序除了執行車載終端設備功能外,還負責接收服務器端下發的升級文件,并將升級文件寫入到TF卡中,因此需要在APP程序中設計代碼接收程序。大多數設計將接收到的升級文件直接存放在控制器Flash中,這樣不僅要求控制芯片Flash容量要足夠大,也增加了軟件設計的難度。采用TF卡等外圍存儲設備接收升級文件不僅可以解決控制芯片Flash容量不足的問題,還可使軟件設計更加容易。代碼接收程序流程圖如圖5所示。

圖5 升級代碼接收程序流程圖
在升級文件遠程傳輸過程中,會面臨被截取、篡改等安全問題,通過加密技術能為數據安全提供很好的解決方法[5]。同時在升級過程中必須要保證升級數據的正確性和完整性,文中還采用斷線續傳等措施,保證了升級的可靠性和高效性。
在數據幀通過GPRS傳輸的過程中,可能會受到各種干擾,如數據被截斷、篡改等。針對上述可能出現的情況,作者對升級包進行了加密處理,實現了數據的安全傳輸。目前數據加密算法有很多種,主要分為對稱加密與非對稱加密兩種。對稱加密算法加密和解密用的密鑰相同,常用的對稱加密算法有DES(Data Encryption Standard)、AES(Advanced Encryption Standard)等。非對稱加密算法加密和解密的秘鑰是不同的,比如RSA(Rivest-Shamir-Adleman)算法。在資源有限、計算能力較差的嵌入式控制系統中,需要選取一種易于實現、占用資源少的加密算法[6-7]。文中采用TEA(Tiny Encryption Algorithm)加密算法,該算法是一種非常簡單高效的加密算法,以加密解密速度快、實現簡單著稱。相對于其他設計中采用DES或AES等算法來對數據進行加密,文中采用的輕量級TEA加密算法不僅能有效地保證數據傳輸的安全,而且占用資源少,更加適合用于電動車車載終端嵌入式軟件平臺。
在系統升級時,終端從服務器下載升級文件需要一段時間。終端下載升級文件的過程中,很可能會出現由于網絡傳輸質量差、地理因素而導致車載終端斷線問題。如果出現終端斷線就重新再傳,而不保存已傳部分并等終端下次上線時續傳,這必然會影響執行文件升級的效率,也會額外增加GPRS數據流量的通信費用。為了解決上述問題,在服務端程序中增加了一個具有斷線續發的軟件功能模塊。如果車載終端成功接收到服務端下發的數據幀,則需要向服務器發送應答幀,服務器收到應答幀后下發下一幀數據。如果車載終端回復接收失敗,則服務器重發該數據幀。若到達一定的次數服務端仍沒有收到應答,則認為車載終端已掉線。這時就需要在服務端程序中保存車載終端的最近一次通信狀態,為車載終端控制器下次上線續發提供所需信息。該軟件功能模塊流程圖如圖6所示。

圖6 斷線續傳流程圖
車載終端在進行遠程升級時,首先通過上位機登錄到服務器,將本地升級文件上傳到服務器,如圖7所示。車載終端上電運行,主動連接服務器,如圖8所示。當服務端和終端連接成功后,若服務端收到終端請求升級指令,則系統開始升級任務。文中對終端進行了50次升級實驗,分別在文件傳輸到一定長度時人為將車載終端和服務器連接中斷,分別測試出使用斷線續傳功能和未使用斷線續傳功能時整個升級過程需要花費的時間。最終計算出使用斷線續傳功能時系統平均升級時間為5.41 min,不使用該功能時需要7.67 min。實驗結果表明:文中設計的具有斷線續傳功能的升級系統不但可以完成升級任務,而且可以提高升級效率以及減少GPRS數據流量的消耗。

圖7 登錄到遠程服務器

圖8 車載終端上電連接服務器
詳細介紹了面向電動車車載終端遠程升級系統的軟件設計與實現。首先介紹了升級系統的整體架構及升級文件傳輸的數據格式,然后重點介紹服務端及車載終端IAP軟件的設計與實現,最后對升級系統的可靠性設計進行介紹。在設計過程中采用應答機制、斷線續傳、TEA加密解密等技術實現了車載終端嵌入式軟件的遠程在線升級功能,解決了車載終端升級困難不經濟等問題,節約了升級和維護的成本。最后通過大量測試證明:此系統不僅有較高的成功率而且升級效率有了較大的改善。該遠程升級技術也可用于其他控制系統,具有廣泛的應用前景。
參考文獻:
[1]張金鋒.車載終端執行文件遠程升級系統的設計與研究[D].南京:南京理工大學,2012.
[2]丁鵬飛,法林.STM32F205VB在遠程系統升級中的應用[J].自動化儀表,2014(5):80-83.
DING P F,FA L.Application of STM32F205VB in Remote System Upgrade[J].Process Automation Instrumentation,2014(5):80-83.
[3]吳瑞娜,張建奇,梁喜軍.基于STM32的GPRS遠程在線升級系統設計與實現[J].自動化技術與應用,2015,34(12):34-37.
WU R N,ZHANG J Q,LIANG X J.Design and Implementation of GPRS Remote Online Upgrade System Based on STM32[J].Techniques of Automation and Application,2015,34(12):34-37.
[4]YOU N,ZHOU W,ZHANG J L,et al.Vehicle Terminal Remote Upgrade Based on GPRS[J].Applied Mechanics & Materials,2013,278/279/280:1928-1932.
[5]李歌.FPGA系統遠程升級安全機制的研究[D].西安:西安電子科技大學,2014.
[6]謝林栩.基于TEA加密算法在網絡傳輸中保護文件數據安全的應用[J].廣西師范學院學報(自然科學版),2010,27(2):76-80.
XIE L X.The Application of TEA Encryption Algorithm to Protecting Data Security in the Network File Transfer[J].Journal of Guangxi Teachers Education University(Natural Science Edition),2010,27(2):76-80.
[7]楊釧釧,王加加,侯長博.基于STM32的加密錄音筆設計[J].電子科技,2014,27(6):58-61.
YANG C C,WANG J J,HOU C B.Design of Encrypted Recorder Based on STM32[J].Electronic Science and Technology,2014,27(6):58-61.