博客
希望我們能(néng)與您分享和探讨成(chéng)長(cháng)中的點點滴滴
基于CANoe和Visual Studio實現Classic 和Adaptive AUTOSAR應用層調試
分享到
“轉載自維克多汽車技術(上海)有限公司,作者Vector China”
伴随“軟件化”和“敏捷化”的推進(jìn),從基于域(Domain)架構到基于區域(Zonal)架構的發(fā)展,亦或OEM成(chéng)立軟件中心參與軟件開(kāi)發(fā)與集成(chéng),均面(miàn)臨複雜控制器軟件的整合。傳統開(kāi)發(fā)大多采用Lauterbach或iSYSTEM等與CANoe結合實現在真實控制器上的調試工作;如今域控器、區域控制器和車載“電腦”中軟件將(jiāng)由多方獨立并行開(kāi)發(fā)集成(chéng),故在開(kāi)發(fā)階段大部分時(shí)間内將(jiāng)面(miàn)臨:無硬件或因耦合軟件由第三方開(kāi)發(fā)而無法實現傳統調試或測試工作。在面(miàn)對(duì)複雜控制器軟件系統時(shí),CANoe可在虛拟環境實現軟件系統的調試和測試工作,Visual Studio(簡稱VS)或許是虛拟環境下進(jìn)行Classic AUTOSAR和Adaptive AUTOSAR中C/C++軟件系統調試與編譯的“利器”。
圖1:分布式軟件調試與測試工具鏈
在軟件系統開(kāi)發(fā)過(guò)程中,因軟件系統虛拟運行環境部署困難,内部變量調試成(chéng)了測試、修正語法錯誤和邏輯錯誤阻礙了開(kāi)發(fā)測試效率。過(guò)往大多汽車工程師將(jiāng)CANoe僅當做總線工具或HiL平台,随著(zhe)Vector的CANoe4SW被(bèi)整合進(jìn)CANoe後(hòu),CANoe/CANoe4SW可實現C、C++和Python軟件系統的測試,同時(shí)結合針對(duì)AUTOSAR軟件虛拟化工具vVIRTUALtarget配合Visual Studio,從開(kāi)發(fā)早期可介入車載軟件系統運行的調試,并使得後(hòu)期持續有質量的“虛拟”黑盒交樣(yàng)成(chéng)爲了可能(néng)。本文就(jiù)CANoe耦合VS在單機環境下實現AUTOSAR應用層調試做簡要說(shuō)明,相關工具見下表。
調試Classic AUTOSAR SWCs中的C代碼
得益于vVIRTUALtarget對(duì)于Classic AUTOSAR的BSW Emulation功能(néng),開(kāi)發(fā)人員可在單個SWC開(kāi)發(fā)完成(chéng)之後(hòu)對(duì)其進(jìn)行調試,随著(zhe)開(kāi)發(fā)的進(jìn)度進(jìn)行,更多的SWCs可以被(bèi)整合虛拟化并統一驗證。在創建Classic SWCs虛拟化軟件系統的過(guò)程中,與之相匹配的Visual Studio工程也會(huì)被(bèi)同步生成(chéng),用作在CANoe中調試軟件系統的工程項目。
圖2 | vVIRTUALtarget支持Classic AUTOSAR的BSW Emulation
在調試之前隻需要在CANoe中加載Classic SWCs虛拟軟件系統并在Visual Studio中把調試器加載到特定的進(jìn)程,在CANoe中啓動measurement即可開(kāi)始調試軟件系統。
圖3 | 在Visual Studio中把調試器加載到被(bèi)測系統進(jìn)程中
CANoe與Visual Studio配合調試可以快速訪問ECU中的内部參數,利用Visual Studio豐富的調試功能(néng)大大縮短了調試時(shí)間。特别是對(duì)于複雜的 ECU 或分布式功能(néng),通過(guò)調試功能(néng)訪問 ECU 中的内部信息爲軟件系統或 ECU 堆棧開(kāi)辟了新的、全面(miàn)的開(kāi)發(fā)及測試選項。特别是 AUTOSAR ECU,由于其結構化布局由基本軟件 (BSW)、運行時(shí)環境 (RTE) 和軟件組件 (SWC) 組成(chéng),不需要通過(guò)接口,直接可以訪問用于測量和模拟測試的參數變量。
圖4 | 使用Visual Studio調試Classic AUTOSAR SWCs
在CANoe中工程師除了可以對(duì)SWC的接口進(jìn)行激勵和監控,也可以通過(guò)在Classic SWCs虛拟軟件系統中添加自定義變量,更靈活地虛拟軟件中添加變量用來控制一些本來不具有交互能(néng)力的臨時(shí)變量以及函數。自定義變量隻需要以固定格式“VARIABLE_UINT32("CustomNamespace", MyVariable, 0)”描述在頭文件“Vtt_CustomVars_Cfg.h”中,vVIRTUALtarget即可自動識别并把相應的系統變量創建在接口描述文件中,從而實現在CANoe中對(duì)中間變量的持續觀測。
調試Adaptive AUTOSAR APPs中的C++代碼
圖5 | 利用Visual Studio配合CANoe/CANoe4SW對(duì)軟件系統進(jìn)行調試
伴随Vector發(fā)布的CANoe4SW和CANoe的整合,開(kāi)發(fā)人員可以根據C、C++和Python工程的環境配置編譯運行在不同的系統平台和硬件環境,無論將(jiāng)Adaptive AUTOSAR APPs部署在Windows或Linux 虛拟環境中,CANoe/CANoe4SW都(dōu)可以根據預先定義好(hǎo)的接口結構以及類型自動生成(chéng)與之相匹配的SiL Adapter作爲Adaptive APPs的一部分進(jìn)行編譯,編譯後(hòu)的可執行程序即使運行在遠程的PC主機上,隻要一根網線即可與CANoe/CANoe4SW互通,使CANoe/CANoe4SW能(néng)對(duì)于預先定義的接口進(jìn)行觀測及激勵等調試行爲。
圖6 | 在Adaptive AUTOSAR APPs中添加斷點并設置爲自動繼續模式
在調試Adaptive AUTOSAR APPs的過(guò)程中,開(kāi)發(fā)人員更多會(huì)關注于某些内部變量和臨時(shí)變量的實時(shí)變化的調試和分析,從CANoe/CANoe4SW 15 SP3提供了免費的支持Visual Studio Code和Visual Studio的插件:Distributed Software Debugging Plug-Ins,通過(guò)該插件,開(kāi)發(fā)人員可以在Visual Studio工程中的Adaptive AUTOSAR APPs中C++源代碼的任意函數中加入斷點,而這(zhè)個斷點中所有的變量就(jiù)可以同步被(bèi)顯示在CANoe/CANoe4SW的Trace窗口中。
圖7 | CANoe中同步顯示C++源代碼斷點函數中的變量
Distributed Software Debugging Plug-ins在Visual Studio中提供了豐富的配置項以更好(hǎo)地配合CANoe/CANoe4SW聯調使用。通過(guò)配置,在不操作CANoe/CANoe4SW的情況下,一旦在Visual Studio中開(kāi)啓了調試,CANoe/CANoe4SW中的measurement會(huì)自動開(kāi)啓,立即進(jìn)行數據收發(fā)及監控,即使是初始化值也不會(huì)錯漏。除此之外,Visual Studio中源代碼的局部變量的類型也可以在CANoe/CANoe4SW中設置成(chéng)各種(zhǒng)類型的顯示方式,以便在監控變量的時(shí)候更加直觀便捷。插件位于CANoe/CANoe4SW安裝路徑下的Installer Additional Components\DistributedDebugging文件夾中,雙擊插件即可自動安裝,更多細節說(shuō)明和配置詳見CANoe/CANoe4SW的Help手冊中Distributed Software Debugging章節。