基於CANoe和Visual Studio實現Classic 和Adaptive AUTOSAR應用層調試

創提科技
2023/02/20

分享到

“轉載自維克多汽車技術(上海)有限公司,作者Vector China”


伴隨“軟體化”和“敏捷化”的推進,從基於域(Domain)架構到基於區域(Zonal)架構的發展,亦或OEM成立軟體中心參與軟體發展與集成,均面臨複雜控制器軟體的整合。傳統開發大多採用Lauterbach或iSYSTEM等與CANoe結合實現在真實控制器上的調試工作;如今域控器、區網域控制站和車載“電腦”中軟體將由多方獨立並行開發集成,故在開發階段大部分時間內將面臨:無硬體或因耦合軟體由協力廠商開發而無法實現傳統調試或測試工作。在面對複雜控制器軟體系統時,CANoe可在虛擬環境實現軟體系統的調試和測試工作,Visual Studio(簡稱VS)或許是虛擬環境下進行Classic AUTOSAR和Adaptive AUTOSAR中C/C++軟體系統調試與編譯的“利器”。


基于CANoe和Visual Studio实现Classic 和Adaptive AUTOSAR应用层调试-1 小.jpg

 
圖1:分散式軟體調試與測試工具鏈

 
在軟體系統開發過程中,因軟體系統虛擬運行環境部署困難,內部變數調試成了測試、修正語法錯誤和邏輯錯誤阻礙了開發測試效率。過往大多汽車工程師將CANoe僅當做匯流排工具或HiL平臺,隨著Vector的CANoe4SW被整合進CANoe後,CANoe/CANoe4SW可實現C、C++和Python軟體系統的測試,同時結合針對AUTOSAR軟體虛擬化工具vVIRTUALtarget配合Visual Studio,從開發早期可介入車載軟體系統運行的調試,並使得後期持續有品質的“虛擬”黑盒交樣成為了可能。本文就CANoe耦合VS在單機環境下實現AUTOSAR應用層調試做簡要說明,相關工具見下表。


基于CANoe和Visual Studio实现Classic 和Adaptive AUTOSAR应用层调试-2 小.png


調試Classic AUTOSAR SWCs中的C程式碼
 
得益於vVIRTUALtarget對於Classic AUTOSAR的BSW Emulation功能,開發人員可在單個SWC開發完成之後對其進行調試,隨著開發的進度進行,更多的SWCs可以被整合虛擬化並統一驗證。在創建Classic SWCs虛擬化軟體系統的過程中,與之相匹配的Visual Studio工程也會被同步生成,用作在CANoe中調試軟體系統的工程項目。
 

基于CANoe和Visual Studio实现Classic 和Adaptive AUTOSAR应用层调试-3 小.jpg


圖2 | vVIRTUALtarget支持Classic AUTOSAR的BSW Emulation


在調試之前只需要在CANoe中載入Classic SWCs虛擬軟體系統並在Visual Studio中把調試器載入到特定的進程,在CANoe中啟動measurement即可開始調試軟體系統。


基于CANoe和Visual Studio实现Classic 和Adaptive AUTOSAR应用层调试-4 小.jpg


圖3 | 在Visual Studio中把調試器載入到被測系統進程中


CANoe與Visual Studio配合調試可以快速訪問ECU中的內部參數,利用Visual Studio豐富的調試功能大大縮短了調試時間。特別是對於複雜的 ECU 或分散式功能,通過調試功能訪問 ECU 中的內部資訊為軟體系統或 ECU 堆疊開闢了新的、全面的開發及測試選項。特別是 AUTOSAR ECU,由於其結構化佈局由基本軟體 (BSW)、運行時環境 (RTE) 和軟體元件 (SWC) 組成,不需要通過介面,直接可以訪問用於測量和類比測試的參數變數。


基于CANoe和Visual Studio实现Classic 和Adaptive AUTOSAR应用层调试-5 小.jpg

 
圖4 | 使用Visual Studio調試Classic AUTOSAR SWCs


CANoe中工程師除了可以對SWC的介面進行激勵和監控,也可以通過在Classic SWCs虛擬軟體系統中添加自訂變數,更靈活地虛擬軟體中添加變數用來控制一些本來不具有交互能力的臨時變數以及函數。自訂變數只需要以固定格式“VARIABLE_UINT32("CustomNamespace", MyVariable, 0)”描述在標頭檔“Vtt_CustomVars_Cfg.h”中,vVIRTUALtarget即可自動識別並把相應的系統變數創建在介面描述檔中,從而實現在CANoe中對中間變數的持續觀測。


調試Adaptive AUTOSAR APPs中的C++程式碼


基于CANoe和Visual Studio实现Classic 和Adaptive AUTOSAR应用层调试-6 小.jpg

 
圖5 | 利用Visual Studio配合CANoe/CANoe4SW對軟體系統進行調試


伴隨Vector發佈的CANoe4SW和CANoe的整合,開發人員可以根據C、C++和Python工程的環境配置編譯運行在不同的系統平臺和硬體環境,無論將Adaptive AUTOSAR APPs部署在Windows或Linux 虛擬環境中,CANoe/CANoe4SW都可以根據預先定義好的介面結構以及類型自動生成與之相匹配的SiL Adapter作為Adaptive APPs的一部分進行編譯,編譯後的可執行程式即使運行在遠端的PC主機上,只要一根網線即可與CANoe/CANoe4SW互通,使CANoe/CANoe4SW能對於預先定義的介面進行觀測及激勵等調試行為。


基于CANoe和Visual Studio实现Classic 和Adaptive AUTOSAR应用层调试-7 小.jpg

 
圖6 | 在Adaptive AUTOSAR APPs中添加中斷點並設置為自動繼續模式


在調試Adaptive AUTOSAR APPs的過程中,開發人員更多會關注於某些內部變數和臨時變數的即時變化的調試和分析,從CANoe/CANoe4SW 15 SP3提供了免費的支援Visual Studio Code和Visual Studio的外掛程式:Distributed Software Debugging Plug-Ins,通過該外掛程式,開發人員可以在Visual Studio工程中的Adaptive AUTOSAR APPs中C++原始程式碼的任意函數中加入中斷點,而這個中斷點中所有的變數就可以同步被顯示在CANoe/CANoe4SW的Trace視窗中。


基于CANoe和Visual Studio实现Classic 和Adaptive AUTOSAR应用层调试-8 小.jpg

 
圖7 | CANoe中同步顯示C++原始程式碼中斷點函數中的變數


Distributed Software Debugging Plug-ins在Visual Studio中提供了豐富的配置項以更好地配合CANoe/CANoe4SW聯調使用。通過配置,在不操作CANoe/CANoe4SW的情況下,一旦在Visual Studio中開啟了調試,CANoe/CANoe4SW中的measurement會自動開啟,立即進行資料收發及監控,即使是初始化值也不會錯漏。除此之外,Visual Studio中原始程式碼的區域變數的類型也可以在CANoe/CANoe4SW中設置成各種類型的顯示方式,以便在監控變數的時候更加直觀便捷。外掛程式位於CANoe/CANoe4SW安裝路徑下的Installer Additional Components\DistributedDebugging資料夾中,按兩下外掛程式即可自動安裝,更多細節說明和配置詳見CANoe/CANoe4SW的Help手冊中Distributed Software Debugging章節。