基于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章节。