車載終端的功能應當隨著用戶的需求而變化,因此車載終端的升級維護也顯得越來越重要。然而,目前大部分車載終端還不具有遠程升級的功能,必須在現場通過預留的通信口下載更新程序才能升級,升級維護相對比較困難而且也增加了成本。針對這樣的情況,本文提出了一種具有可行性的遠程升級解決方案。監控中心只需要發送一條遠程升級指令給車載終端,車載終端就能自動的更新自身的固件程序,簡單方便而且安全可靠,還可以讓所有的車輛同時升級。
1.遠程升級的基本原理
1.1 lAP簡介
lAP(In Application Programming)是用戶自己的程序在運行過程中對內部Flash的部分代碼區域重新燒寫。要實現lAP功能需要在設計固件程序時編寫兩個項目代碼,第一個項目代碼為BootLOAder程序,第二項目代碼為UserApp程序,即用戶功能程序。BootLoader程序不執行正常的功能操作,只執行對第二部分代碼的更新;UserApp程序才是真正的功能代碼,這兩部分項目代碼都同時燒錄在內部Flash中。
1.2 遠程升級的基本原理
遠程升級有兩種模式,主動模式和被動模式。主動模式是指車載終端自動檢測是否有新版本的程序需要更新,被動模式是指監控中心給車載終端下發升級指令后車載終端才執行遠程升級操作。本課題中,使用的是被動模式。車載終端收到監控中心發送的遠程升級指令后,連接遠程FTP服務器,建立連接后下載要更新的程序代碼,同時將其寫入車載終端的外部flash中,更新程序代碼下載完畢后,對其進行校驗,校驗通過后,自動重啟終端進入BootLoader模式,利用lAP技術重新燒寫User-App程序代碼區域。燒寫完畢后,跳轉到新的UserAPP程序執行,然后給監控中心發送遠程升級成功指令?梢杂脠D1形象地表示遠程升級的過程。
圖1 遠程升級的過程
2.遠程升級系統的設計與實現
2.1 車載終端的硬件結構
車載終端硬件結構如圖2,這里只介紹與遠程升級相關的模塊,核心處理器使用ST公司的STM32系列MCU,該系列MCU支持IAP編程技術,外圍無線通信GPRS模塊使用SIMCOM公司SIM900A,SIM900A的最新軟件版本可以支持FTP協議,外部大容量存儲器。
圖2 車載終端硬件結構簡圖
2.2 Flash空間劃分
2.2.1 內部Flash空間劃分
STM32的內部Flash地址起始于0x08000000,一般情況下,程序文件從此地址開始寫入。STM32是基于ARM CortexM3內核的微控制器,其內部通過一張“中斷向量表”來響應中斷,程序啟動后首先從0x08000004地址取出復位中斷向量的地址,并跳轉到復位中斷服務程序,如圖標號①所示;在復位中斷服務程序執行完之后,會跳轉到我們的main函數,如圖標號②所示;而main函數一般都是一個死循環。在main函數執行過程中,如果收到中斷請求,此時STM32強制將PC指針指回中斷向量表處,如圖標號示;然后,根據中斷源進入相應的中斷服務程序,如圖標號④所示;在執行完中斷服務程序以后,程序再次返回main函數執行,如圖標號⑤所示。整個過程如圖3所示。
圖3 STM32程序運行流程圖
BootLoader程序也有自己獨立的中斷向量表、中斷處理例程和主循環程序,在Flash中加入BootLoade程序后各個程序的地址分配如圖4,其中M為UserApp程序中斷向量表的偏移量,(0x08000000+M)為UserApp程序的起始地址。
圖4 BootLoade程序UserApp程序地址分配圖
2.2.2 外部Flash空間劃分
外部Flash空間大小為1MB,一共分成16個扇區,每個扇區64KB,遠程升級使用其中的4個扇區,這4個扇區又劃分為兩部分,前兩個扇區作為更新代碼區,后兩個扇區作為備份代碼區。每一次代碼更新成功后都會將更新代碼區的程序拷貝到備份代碼區,也就是說備份代碼區始終保留的是終端最近一次更新成功的代碼。
2.3 FTP遠程文件下載
監控中心給終端下發遠程升級指令的同時會將FTP服務器的IP、端口號、用戶名、密碼、更新程序的文件名稱和路徑發送到終端,終端根據這些參數通過AT指令配置GPRS模塊,然后連接到FTP服務器,連接成功后請求下載更新程序文件。由于更新程序文件大小一般為幾十KB,最大不會超過100K。而FTP一次請求不超過1460B,因此需不斷地發送請求,直到沒有數據可返回為止。所有的更新程序都會暫存在外部Flash的更新代碼區。圖5表示了這樣一個過程。
圖5 FTP遠程文件下載流程圖
另外,遠程升級系統可以自適應網絡,根據網絡的狀態調整數據下載的速度。終端和FTP服務器建立連接后,相當于建立一條數據鏈路,監控中心給終端反饋該鏈路的數據容量,終端依此調整請求數據下載的速度,以平衡網絡負荷,提高數據下載的可靠性。
2.4 lAP編程的實現
STM32有一個Flash編程和擦除控制器(FPEC),FPEC模塊是一個寄存器組用以處理Flash的編程和擦除操作。每次復位后,FPEC模塊是被上鎖的,需要向FPEC模塊控制寄存器寫入一組鍵值序列keyl和key2才可以解鎖,解鎖后可以操作其他寄存器。為了防止對用戶代碼區的非法訪問,通常Flash的頁(每頁的大小為2KB)是加以保護的,試圖在受保護的頁面進行編程都會在FPEC模塊中返回一個保護錯誤標志。
lAP編程的對象主要是UserApp代碼區域,在編程前必須先根據UserApp代碼區域的起始地址和代碼大小計算出要編程的區域在flash中的開始和結束頁號,然后判斷這些頁號是否在受保護的區域內,在去除保護后將這些頁統一擦除然后再進行編程。由于要更新的程序存儲在外部Flash中,因此在運行lAP程序時,需要在內存開辟緩存,將外部Flash的代碼讀到緩存中,然后再燒寫到Flash UserApp代碼區。STM32是以半字(2個字節)的方式對Flash進行編程的,每寫入半字后都要從Flash相同的地址再讀出這半字,如果讀出來的值跟寫入的值相同,則繼續寫入下個半字,否則重寫這半個字,這種情況基本不會出現,但是為了萬無一失,在編寫程序時還是加了這種判斷。在燒寫完整個UserApp程序后,需要將編程過的頁重新設為寫保護,然后再將FPEC模塊上鎖。lAP編程的整個過程可以用圖6來表示。
圖6 lAP編程的過程
2.5 遠程升級的可靠性
對于車載終端來說,可靠性永遠都是最重要的。遠程升級屬于危險系數比較高的一個操作,因此需要對造成遠程升級失敗的各種情況做分析,并制定好解決方案,以確保升級的可靠性。下面就具體地分析,在目前的技術條件下遠程升級過程中可能會出現的一些不穩定因素。
1)網絡不穩定,文件下載一半就中斷了。這種情況是可能存在的,大部分車載終端使用的是GPRS網絡,GPRS網絡并沒有覆蓋到每一個地方,特別是在山區,中繼站的密度相對較小,那么離中繼站比較遠的地方信號比較弱甚至沒有信號,此時FTP連接最容易斷開,造成文件下載失敗。如果FTP連接斷開,終端是可以檢測到了,如果終端檢測到這種情況,會保存已經下載的文件數據,然后重新建立連接,請求下載余下的部分,如果連續幾次都失敗,就認為本次升級失敗,然后將升級失敗的情況報告給監控中心。
2)下載的更新文件中部分內容出現錯誤或丟失其中某些內容。雖然FTP協議是一種建立連接的可靠協議,但是誤碼率并不是絕對的零。因此我們假設這種情況是存在的,當一個更新文件下載完畢后根據約定的規則會對文件進行校驗,如果校驗結果與從監控中心收到的校驗信息不同,則認為下載的更新文件有錯誤,丟棄更新文件然后重新下載。另外GPRS模塊和MCU是通過串口通信的,在升級過程中必須將該串口置于最高優先級,否則下載的更新文件極易在串口傳輸中丟失某些字節造成升級失敗。
3)在lAP編程的過程中出現錯誤。如果在lAP編程過程中出現錯誤,新的UserAPP程序是不能正常的運行的,在跳轉到UserAPP程序執行之前看門狗是打開的,如果UserAPP不能正常運行,則不能執行喂狗操作,在喂狗時間到后系統就會自動重啟進入BootLoader程序,在BootLoader程序中可以檢測到上一次更新失敗,然后會重新執行lAP編程操作,如果連續幾次升級失敗,說明更新程序有問題,最后BootLoader程序會加載備份程序代碼,將系統恢復到升級之前的狀態。
2.6 遠程升級系統的總體實現
2.6.1 遠程升級系統的總體實現
FTP遠程文件下載,lAP編程這兩個部分實現后,再加入對遠程升級系統可能出現的意外情況的處理,那么整個遠程升級系統基本就實現了。圖7,表示出遠程升級系統的總體實現過程。
圖7 遠程升級系統的總體實現流程圖
2.6.2 遠程升級系統的測試
以上分析過3種可能導致遠程升級失敗的情況,除了第三種情況沒有辦法模擬,分別模擬了第一種和第二種情況。第一種情況,遠程升級過程中,主動斷開FTP服務器的網絡,那么終端必定不會下載到完整的更新程序,造成更新失敗,測試結果如表1。
表1 升級過程中斷開FTP服務器網絡
第二種情況,預先生成更新文件的校驗信息,傳送給終端,然后隨機將更薪程序文件中某些字節去掉,終端下載的是不完整的更新程序,必定校驗通不過,造成升級失敗,測試結果如表2。
表2 更新程序文件部分字節丟失
最后測試了在網絡良好的條件下的升級情況,一共測試了50次,每一次升級過程都在兩分鐘完成,沒有失敗的情況,測試結果如表3,因此這樣的升級系統是安全可靠的。
表3 網絡良好條件下測試
3.結束語
經過多次測試,該升級系統具有比較高的可靠性。未來隨著3G網絡的普及,車載終端無線通信模塊若使用3G模塊,該升級系統也是同樣適用的。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.vmgcyvh.cn/
本文標題:車載終端遠程升級系統的設計與實現