賀濤 王定濤 柴介雄



摘要:針對機車上設備的現場應用與軟件升級,本文借助VxWorks系統平臺,運用網絡通信技術實現網絡一鍵更換所有插件應用程序的方法,為現場提供了快捷簡便地更換應用程序解決方案。
關鍵詞:更換應用程序;網絡通信技術;VxWorks系統;現場應用
文獻標識碼:A
機車上設備大部分是基于組匣的設計模式,內部由各個插件拼組而成,而各個插件的通信連接都掛載在以太網交換機中。每個插件都接入組匣的卡槽中,在組匣后背端按照某種通信介質連接起來,形成一個整體(設備)。
每個插件都有自己的CPU處理器和操作系統,為了簡化系統的復雜性,每個插件都采用相同的CPU架構,本文采用的CPU為飛思卡爾公司提供的MPC5125處理器,它提供豐富的外設資源,如10路串口、2路CAN以及兩路FEC網絡控制器等。它片內只有32KRAM資源,沒有片內FLASH,因此每個插件都擴展了FLASH和RAM內存,其FLASH容量為16M,RAM為128M。采用VxWorks操作系統,系統在上電復位后,利用Bootloader程序,把FLASH中的應用執行程序拷貝到RAM運行,在啟動應用程序執行。
在應用程序啟動前,首先需要通過下載工具把程序固化到FLASH中。目前,FLASH燒寫方式主要分為兩種,一種是借助下載工具(風河仿真器),直接下載到板級FLASH中,這種為編程器燒寫方式,這種方式適用于開發員進行仿真調試和下載程序;另外,風河公司的仿真工具價格昂貴,大量采用仿真工具更換應用程序使得費用成本增高;且不適用于組匣現場更換應用程序。另一種方式為是適用于現場特定環境燒寫方式,運用板子上自帶的通信媒介直接更換應用程序。本文采用第二種方式,運用無線網絡技術和VxWorks系統網絡通信,實現無線遠程應用程序下載和升級。
1 系統平臺
本設計的機車設備采用組匣機箱,其硬件結構如圖1所示。本組匣有五個插件,四個應用插件,一個交換機插件。其中應用插件處理不同的應用功能,它的每個網絡口都連接在交換插件上。交換機對外網提供一個公共網絡接口,該接口可以連接無線網絡路由器,PC機間接地與組匣進行連接。
2 軟件設計
實現網絡更換程序,需要實現三部分,分別分為應用程序加載模塊、Vxworks網絡通信模塊、PC機側應用模塊。PC機側應用程序這部分提供人機交互界面,可以是通過WEB網頁,也可以窗口界面進行程序下載操作,本設計采用窗口界面進行開發。Vxworks網絡通信模塊,實現數據交互,按照設定的協議進行網絡通信,保證下載程序的完整性和保密性。Vxworks提供的TCP/IP協議、Socket套接字模式,方便網絡程序應用開發。應用程序加載模塊提供程序加載方式,包括校驗程序數據,提供指定入口加載。其中后面兩個模塊為插件的軟件設計。
2.1 應用程序加載模塊
插件程序在啟動時,加載FLASH Boot啟動代碼,完成CPU相關初始化和內存配置等等,然后拷貝應用程序到RAM區運行。為了把應用程序和維護代碼隔離開來,需要對FLASH進行合理劃分,這也是程序下載的關鍵部分,其應用程序加載過程如圖2所示。從圖中把FLASH劃分了四個部分,兩個相同的應用程序加載部分,一個文件區和系統配置部分。
插件在硬件設計時,設定在FLASH啟動。Flash劃分為兩個相同的應用程序部分,分別為A和B。其中應用程序A部分提供系統維護功能、應用程序B部分提供應用程序功能。當檢測到0xFC400000位置應用程序不存在或者系統崩潰,則拷貝應用程序A到RAM區間,然后啟動應用程序A部分維護代碼。這兩個應用程序在下載時,存在文件區,等完成所有文件下載并校驗成功后,文件區自動把兩個應用程序拷貝B區,然后重新啟動系統。這樣備份了應用程序,不容易丟失。
2.2 Vxworks網絡通信模塊
Vxworks網絡通信模塊完成PC與插件之間的通信協議,是網絡下載的關鍵部分。它們之間采用UDP協議,采用SOCKET編程,主要由VXWORKS提供,這里主要實現應用協議層,它主要實現五個功能,分別是建立連接、驗證與認可、數據傳輸,數據校驗及程序燒寫,其通信過程如圖3所示。
2.2.1 建立連接
在沒有進行通訊前,并不知道對方設備是否存在,也不知道對方是什么插件設備,因此需要建立查詢機制,首先PC網絡端發送廣播幀,給各個設備,等待設備應答。當檢測到設備應答后,將周期性發送檢測信息,查詢設備是否一直存在,當周期通信5次沒有收到應答信息,建立連接自動斷開,并提示無設備連接。
2.2.2 驗證與認可
更換程序時,由于沒有驗證過程,因此技術人員可以隨意進行更換,這樣將不能把控程序更換的版本與正確性。因此在程序進行下載時,需要驗證與認可,密鑰由管理人員分配,發送密文后,插件驗證密文的正確性,當驗證密文正確后,才可以進行程序下載,這樣保證程序更換不能擅自下載。
2.2.3 數據傳輸
由于網絡一包最大傳輸不超過1K字節,而通常一個系統代碼遠遠大于包數,因此需要進行分包傳輸。然而數據傳輸在沒有通信機制下,是無法保證數據的完整性,本設計在進行數據傳輸時,每一個包都進行CRC校驗,并附加包序號信息。當接收端接收數據后,解析包序號,當出現不連續的包序號,接收端把丟包的數據包序號加載到請求幀里,發送端檢測接收端的請求后重傳丟包數據,實現數據包完整傳輸。
2.2.4 數據校驗與程序燒寫
發送端在進行發送拆包時,先對整個文件加入校驗信息和配置信息。當接收端獲取到完整的數據包后,數據存放在RAM區,先對這個接收的數據解析校驗,并讀取配置信息是否與本插件的參數一樣。若數據匹配,進行下一步程序燒寫,按照應用程序加載過程,程序會保存在文件當中,并更改啟動信息。當斷電重啟后,系統自動加載應用程序,完成程序燒寫。
2.3 PC機端應用程序
PC機端程序采用面向對象設計,主要有以下幾類組成,包括文件格式轉換類、密文驗證類、網絡通信類、數據傳輸類、文件數據分包類以及用戶界面類等。其類關系圖如圖4所示。
網絡通信類采用Socket通信,創建兩個網絡線程,一個發送網絡線程和一個接收網絡線程。這個線程管理網絡接收和發送 ,當用戶需要發送數據時,先把數據放入數據傳輸緩沖區,網絡發送線程檢測緩沖區有數據,啟動網絡發送,直到緩沖區為空,網絡接收過程同理。 文件格式轉換類實現燒寫數據格式轉換,轉換格式對象是HEX文件,由于Vxworks開發工具編譯后生成HEX文件格式,因此把HEX文件轉換為BIN文件,并在BIN文件里加載校驗信息,形成新的BIN燒寫文件。密文驗證完成與插件驗證認可,包括密文生成、校驗密文操作。文件數據分包和數據傳輸類,實現與Vxworks網絡模塊通信,文件數據分包類分解BIN文件,把BIN文件拆分許多幀網絡數據包,并在網絡數據包加載校驗數據和包序號。在經過數據傳輸類,運用重傳機制和校驗回執等方法,保證程序文件可靠傳輸。
3 結語
本設計為了簡化對機車上設備的現場應用與軟件升級,設計了一種遠程更換程序的設計方案,通過該軟件替換使用仿真工具更換應用程序的方法,特別是在組匣箱里避免了拆卸機箱更換程序。用戶只要操作該軟件,一次性更換組匣箱內的所有程序,提高了現場人員的工作效率。本軟件可以推廣到類似工程現場較復雜的系統中,具有較強延伸性和實用性。
參考文獻:
[1]周平,張楊.VxWorks下設備驅動程序及BSP開發指南[M].北京:中國電力出版社, 2004.
[2]孔祥營,張寶山.VxWorks驅動及分布式編程[M].北京:中國電力出版社, 2007.
[3]胡鳴.Windows 網絡編程技術[M].北京:科學出版社,2008.
[4]劉芳,臧威.TMS320C672x DSP 引導加載系統的設計與實現[J].微電子學與計算機,2013,30(10).
[5]肖磊.VxWorks下基于Socket的網絡通信設計[J].計算機與網絡,2013,24(12): 666.