蔡 營,王永峰,范志容,岳意娥,楊麗莎,蘇芮琦
(東風汽車公司技術中心,湖北 武漢 430058)
基于CAPL的CAN控制器Bootloader上位機系統設計
蔡 營,王永峰,范志容,岳意娥,楊麗莎,蘇芮琦
(東風汽車公司技術中心,湖北 武漢 430058)
為了減少因拆卸控制器而導致的維護成本增加,方便車載CAN控制器進行在線程序升級,在整車網絡設計時,要求所有的CAN控制器能夠支持Bootloader程序刷寫功能,通過診斷口即能完成程序刷寫;Bootloader上位機軟件能夠集成數據刷寫過程中的所有診斷服務請求,通過直接導入要刷寫到控制器內部的數據流文件,完成程序數據在線更新功能。通過CANoe軟件自帶的CAPL語言實現刷機刷寫上位機程序設計,提供簡單明了的用戶操作界面,能夠很好地完成控制器程序的刷寫任務。實際測試結果表明,應用CAN網絡測試工具及該上位機軟件,能夠成功刷寫程序,具有較高的有效性和可靠性。
CAPL語言;Bootloader;上位機;測試驗證
在車載CAN控制器開發的過程中,需要多次向ECU中燒錄更新程序。傳統軟件的更新方法是通過BDM調試接口進行程序下載,該方法的數據下載速度慢,并且在控制器已安裝到整車上后,拆解控制器非常不便利,增加了系統維護成本。為了更快、更便捷地完成各控制器的軟件升級,在整車網絡設計時,要求所有的控制器具備在線數據刷寫能力,在不需要拆解控制器的情況下,通過整車診斷口完成程序升級。Bootloader是在主程序運行前的一段小程序,主要完成應用數據下載和更新任務。Bootlaoder上位機程序為軟件升級提供一個簡單的操作窗,即數據監控窗口。本文根據控制器的Bootloader數據刷寫流程,利用CANoe帶CAPL編程語言,完成控制器Bootloader數據刷寫上位機程序,實現車載控制器軟件在線刷寫功能。
1.1 CANoe 軟件簡介
CANoe是由德國Vector Informatik公司推出的一款總線開發專業工具,在CAN總線系統的設計、建模、仿真、開發、測試及驗證當中有著廣泛應用,能夠為客戶提供強大且完整的CAN總線網絡開發仿真分析解決方案。目前,CANoe在全球各汽車整車廠及零部件廠中使用廣泛。CANoe具有開放式的架構,能解決復雜的任務,并適用于特殊的應用。它為整個分布式網絡的仿真和分析,提供了基于圖像和文本的建模和評估窗口(evaluation windows)。針對監控和控制任務,以及生產裝配過程,創建直觀的用戶控制平臺。同時,還集成了用于測試的“Test Feature Set”和用于診斷的“Diagnostic Feature Set”。CANoe提供針對生產周期中所有階段的專業功能,包括模型創建、仿真、功能測試、診斷和分析。
1.2 CAPL 簡介
CAPL全稱為Communication Access Program ming L anguage,即CAN總線訪問編程語言,是一種面向事件的編程語言,它的語法與C語言基本類似。在CANoe軟件中,集成了CAPL編程環境,通過CAPL編程能夠對系統環境進行仿真和添加模擬節點,實現模擬節點與實際節點間通信,測試新節點的功能性和可靠性;另一方面,通過CAPL對網絡上的數據通信進行分析優化,實現用1個網關程序來連接2種不同的總線,保證不同類型總線之間的數據通信。CAPL程序與數據庫結合起來,通過調用數據庫中的信號、消息、環境變量和實際測試環境聯系起來,從而能夠實時監測總線上的數據通信、接受總線上的控制信息,使得模擬面板上的控件進行動作;也能夠通過總線發出控制信息,控制外部環境動作,從而支持開發全仿真、半實物仿真、測試分析全實物系統3個仿真階段,對節點的仿真很重要之處就是準確地描述節點在總線上的動作。
CAPL是一種基于事件建模的語言,所支持的事件包括:總線事件、屬性事件和時間事件3大類。CAPL所支持的所有事件類型、程序執行條件、語法結構等,如表1所示。

表1 CAPL 所支持的事件類型
2.1 BootLoader數據刷寫定義
Bootloader為引導加載程序,是嵌入式系統在上電后運行的第1段代碼[1]。當CAN 控制器進行上電復位后,會立刻執行Bootloader代碼,完成CPU硬件設備的初始化以及系統所需的環境變量設置,啟動控制器內核。上位機Bootloader主要用于為CAN控制器讀取并下載升級程序代碼,該代碼一般以hex或S19文件格式存儲。上位機Bootloader數據刷寫的前提是控制器已實現下位機在線數據刷寫功能。
2.2 CAN 控制器Bootloader 數據刷寫流程
在整車網絡開發過程中,為了方便控制器在線更新程序,減少人工維護成本,要求所有CAN控制器必須支持Bootloader數據刷寫功能。在ISO15765-3標準中,已對Bootloader數據刷寫流程進行規范化要求,在此基礎上對流程進一步進行細化,對所支持的診斷服務、診斷先后順序進行了規定。Bootloader數據刷寫詳細流程及涉及的診斷服務,如圖1所示。
流程中所涉及的診斷服務依次如下。
1)0x10 DiagnosticSessionControl(診斷模式控制):客戶端通過該診斷服務切換CAN控制器的診斷會話模式,控制器一般支持的診斷會話模式包括默認模式、編程模式、擴展模式和下線檢測模式。
2)0x85 ControlDTCSeting(控制DTC設置):客戶端通過該服務來開啟或關閉CAN控制器故障碼記錄功能。
3)0x28 CommunicationControl(通信控制):客戶端通過該服務來開啟或者關閉CAN控制器報文發送、停發功能。
4)0x27 SecurityAccess(安全訪問):通過該服務,獲取CAN控制器的訪問權利;只有通過安全訪問后,才能對控制器進行數據寫入等操作。
5)0x31 RoutineControl(例程控制):客戶端通過該服務控制CAN控制器的例程、啟動例程、停止例程以及請求例程結果。
6)0x34 RequestDownload(請求下載):客戶端使用該服務初始化從客戶端到CAN控制器的數據發送,接收到請求后,控制器會有數據接收的響應。
7)0x35 RequesUpload(請求上傳):客戶端使用該診斷服務初始化從CAN控制器到客戶端的數據發送,接收到該診斷服務后,CAN控制器有數據上傳的響應。
8)0x36 TransferData(數據傳輸):客戶端使用該診斷服務來請求CAN控制器上傳/下載數據。
9)0x37 RequestTransferExit(請求退出傳輸):客戶端通過該診斷服務停止與CAN控制器之間的數據傳輸。
上位機的Bootloader程序主要用于CAN控制器讀取并下載用于控制器數據更新代碼的S19文件。本文中設計的CAN控制器Bootloader上位機系統采用CAPL語言,使用Vector的CANcardXL(045128)和CANcab251 opto作為CAN硬件接口,用于與下位機CAN控制器進行握手、應答、數據等[2]。
3.1 S19文件
S-record格式文件是Freescale CodeWarrior編譯器生成的后綴名為.S19的程序文件,是一段直接燒寫進MCU的ASCII碼,英文全稱為Motorola format for EEPROM progra m ming。S-record每行最大是78個字節,156個字符,包括數據、地址、計數、類型及校驗和等信息[3]。
3.2 CAN控制器Bootloader上位機系統功能及軟件實現
本文中所設計的CAN控制器Bootloader上位機系統采用CAPL語言開發,提供S19文件讀取控制界面,S19文件解析和CAN 通信功能。
1) S19文件讀取控制界面:通過該界面,選擇CAN控制器升級程序的S19文件,其代碼設計如下。
//程序執行時,彈出S19文件讀取圖形界面



圖1 CAN 控制器Bootloader數據刷寫流程及診斷服務

上位機讀取S19文件的圖形界面,如圖2所示。

圖2 Bootloader上位機軟件讀取S19文件圖形界面
2)S19文件解析功能:CAN控制器Bootloader上位機S19文件解析模塊,包含了S19文件讀取、文件內容解析、報文發送和 通信程序。


3)CAN通信:上位機的Bootloader程序加載S19數據文件,并通過CANcard和CANcab251作為硬件接口和傳輸介質,通過整車診斷口與下位機的CAN控制器建立通信連接,完成刷寫數據傳輸、校驗以及模式控制等功能。整個通信過程應該遵守控制器在線數據刷寫流程。部分實行代碼如下所示。

為了驗證CAN控制器Bootloader上位機系統的可靠性,本文將設計好的程序以及用于更新程序的S19文件,在整車上通過診斷口對控制器進行在線程序升級及測試驗證。測試設備包括:帶CANoe軟件計算機,整車診斷口連接線束,CANoe工具(CANCase、CANCard)??刂破鰾ootloader程序刷寫測試電路圖,如圖3所示。

圖3 CAN控制器Bootloader程序刷寫測試電路圖
測試方法及步驟如下:①將電腦通過CANcard和CANcab 線連接到整車的診斷接口(OBD);②整車上電到ON擋,啟動CANoe ,調用CAN控制器Bootloader刷寫程序;③通過面板打開S19文件讀取界面,選擇要升級的S19文件,點擊“Start”按鈕,開始升級程序;④記錄整個刷寫過程中的CAN數據文件,用于數據回放及測試問題分析;⑤整車下電到OFF擋后,重新上電到ON擋,進行ECU升級后的版本確認和性能核查。
測試結果表明,基于CAPL實現的CAN控制器Bootloader上位機系統在控制器在線升級測試過程中,操作簡便、高效,能很好地滿足控制器在線程序刷寫需求。
CAN控制器Bootloader在線程序刷寫功能,能夠有效降低因控制器軟件維護、更新所帶來的拆解成本,完成實時在線程序升級。本文設計的基于CAPL編程的CAN控制器Bootloader刷寫程序,能夠很好地完成該項功能,但限于CAPL語言在圖形界面上的短板,整個上位機軟件系統界面不夠美觀。如果能夠利用C++或C#語言對CANoe接口的支持,采用多線程編程方式,可以對界面進一步優化和美觀,開發更多過程監控窗口以及故障在線分析功能,將會進一步提高該Bootloader上位機軟件的實用性,這將努力在下一版軟件中實現。
[1]羅勝耘,陸安江. 串行Flash啟動Bootloader的設計與實現[J].化工自動化及儀表,2010,37(8):90-93.
[2]鄒東升,余龍華.一種基于CAN總線程序調試技術研究[J].電子技術應用,2008,34(5):116-117.
[3]樂志國,金啟前.電動汽車整車控制器Bootloader功能開發[J].佳木斯大學學報(自然科學版),2014,32(2)237-241.
(編輯 凌 波)
The Design of CAN Controller's Bootloader PC System Based on CAPL
CAI Ying,WANG Yong-feng,FAN Zhi-rong,YUE Yi-e,YANG Li-sha,SU Rui-qi
(Dongfeng Motor Corporation Technical Centre,Wuhan 430058,China)
In order to reduce the extra maintenance costs due to the controller removal,and provide convenience for online program upgrade on-board of CAN controllers,it is required that all the CAN controller should support Bootloader flashing function,which could finish flash through the diagnostic port. Bootloader host computer software is capable of integrating all diagnostic data flashing process service requests,which can complete the online data update through direct importing controllers’data streams file. Through the design of host computer data update using CAPL programming language from CANoe,it provides a simple user interface and does well in CAN controller data writing task. Test results show that,the CAN Bootloader system can update data frame successfully with high validity and reliability.
CAPL language; Bootloader; host computer; test verification
U463.6
A
1003-8639(2017)03-0068-05
2016-09-07
蔡營(1987-),男,湖北黃岡人,工程師,碩士,主要研究方向為整車CAN網絡架構設計及測試。