博客 知识分享

Embedded Coder/TargetLink AUTOSAR模型的静态分析介绍

AUTOSAR(AUTomotive Open System ARchitecture)是由电子、半导体和软件行业的汽车制造商、供应商和其他公司组成的全球开发合作伙伴关系。AUTOSAR 标准旨在实现软件标准化、可重用性和互操作性。AUTOSAR标准提供了支持当前和下一代汽车ECU的开发平台:AUTOSAR Classic Platform支持传统的内部应用,如动力总成、底盘  、车身和内饰电子设备。AUTOSAR Adaptive Platform支持新的基于服务的应用,例如自动驾驶、车联网、OTA等Adaptive 应用的部署支持 Classic AUTOSAR、Adaptive AUTOSAR和non-AUTOSAR  ECU 在单车中进行交互操作。

在过去的二十年中,AUTOSAR已成为汽车行业开发SWC的最重要标准之一, 因为它支持在各种ECU上分布式开发和部署SWC。同时,基于模型的开发方法(Model-based Design)已成为许多行业和组织的标准开发方法,当然也包括汽车行业。在这一点上,我们不得不提到汽车行业通用的主流建模框架如Simulink以及TargetLink和Embedded Coder等代码生成框架在Classic和Adaptive平台上都集成了对AUTOSAR的支持。与此同时,当我们考虑基于模型的软件开发或者通用的软件开发时,我们需要考虑全面的模型静态分析的方法,进而在模型和代码层面确保相关软件的质量。

另外,软件安全本身一方面是我们对汽车产品的基本要求,汽车软件的开发同样需要遵循安全标准的相关要求,例如安全相关的汽车软件开发必须符合 ISO26262的标准。模型软件的质量保障需要专业的质量保障工具,如行业中普遍应用的MES模赛思公司的 MES Model Examiner工具提供了综合全面的静态分析的质量保障。

MES模赛思的MES Model Examiner(MXAM)如何支持我们进行模型的静态分析?

首先我们先来简要概述一下MXAM的工作流。MXAM的工作流主要包括:新建或打开一个现有项目,选择模型和设置规则文档,运行分析,查看结果,修复批注,保存并导出合规性报告。其具体过程详见图 1。

MXAM支持多种模型类型的检查。这个模型可以是Simulink模型,也可以是dSPACE TargetLink模型,MXAM还支持ASCET模型的检查。新建或打开MXAM模型检查项目,可在GUI 下自动获取当前Simulink 中处于活动状态的模型,如图 2所示。当然在持续集成环境中,我们还可以通过编辑Windows 或MATLAB 脚本指定待测的模型工件。

图1. MAXM执行静态分析的工作流
图1. MAXM执行静态分析的工作流
图2. MXAM待分析工件选择
图2. MXAM待分析工件选择

加载模型工件后,考虑在静态模型分析方法中要验证哪些规则,MXAM 项目中的规则以规则文档的形式设置和管理。规则文档即源于行业企业标准的建模规范,例如在MES模赛思的规则库中,我们可以看到源于各主流行业企业的建模规范文档,MES质量工具为各指南专门开发了相应的规则检查例程。比如我们要进行功能安全项目的模型分析,那么我们可以选择与功能安全相关的MES功能安全规范。如果我们要验证我们的模型与MISRA规则的一致性,我们可以设置MISRA SLSF规范文档,或者如果我们使用 TargetLink 作为代码生成器,那我们需要选用 dSPACE TargetLink建模规范中的规则。 当然,除了MXAM提供的行业企业标准建模规范集,我们应根据项目实际要求合理选择设置或自定制企业或部门专用的规则文档,如图3所示。此外,关于如何选择或自定义规则方面,MXAM提供了快捷的辅助规则文档创建助手,帮助我们根据模型工作环境和项目需求快速创建专属的规则文档供企业部门管理引用,如图4所示。

运行分析前,如有必要我们还可作进一步的模型设置,如设置当前项目检查规则如图5所示。再如当模型的某些模型组件或模型要素与所分析的软件无关时,我们可以通过添加并设置忽略列表,选择性的忽略某些模型要素对某规则集的分析,如图6所示。

图3. 编辑设置自定义规则文档
图3. 编辑设置自定义规则文档
图4. 自定义规则文档创建助手
图4. 自定义规则文档创建助手
图5. 设置当前项目检查规则
图5. 设置当前项目检查规则
图6. 设置忽略列表
图6. 设置忽略列表

再有通过恰当的参数设置,如图 7所示,我们可以更灵活地运用 MXAM 提供的自动化规则检查例程,满足特定项目的定制参数的模型检查需求。

完成规则集和相应参数设置后,通过MXAM工具界面的分析按钮或Simulink 窗口的菜单栏或模型上下文中的MXAM 命令,可进行界面可视化分析。在未启动MXAM 工具的情况下,我们还可以通过运行MATLAB 脚本或Windows批处理脚本进行批处理模式下的模型或工件的静态分析。MXAM 在GUI 和脚本命令行中高度智能化地集成在MATLAB中,如图8所示,从而实现MXAM 与MATLAB 的快捷互操作。

图7. MXAM 的可定制参数设置
图7. MXAM 的可定制参数设置
图8. MXAM 在MATLAB中的智能集成
图8. MXAM 在MATLAB中的智能集成

分析结束后得到分析报告,分析报告为我们提供了总体分析的概述以及展现各部分内容细节的详细描述,包含MXAM项目中所分析模型对相应设置的规则集的所有一致性结果及其完整信息。对于报告中的违规项,我们可以使用 MXAM 自动修复功能自动地批量修复更正模型,确保我们所建立的模型符合规则集和自定义参数设定的要求,如图9所示。

此外,MXAM提供的注释功能与标准评审流程无缝集成,支持项目中模型的评审和偏差接受机制,如图 10所示。

然后,我们保存导出报告或重新运行分析,直至最后我们得到完善的模型并能根据不同需求导出对应格式的报告,如图 11所示。

图9. 互动式报告与自动修复
图9. 互动式报告与自动修复
图10. MXAM注释与评审机制
图10. MXAM注释与评审机制
图11. 灵活的报告输出
图11. 灵活的报告输出

按照上述的工作流程,MXAM可为AUTOSAR模型审查和优化提供高效支持,尤其对于大型的复杂的Simulink/TargetLink AUTOSAR模型系统。那么当我们使用Embedded Coder或TargetLink 作为我们的代码生成器时,MXAM是如何支持我们进行AUTOSAR软件模型开发过程的呢?

首先, SWC和Runnable是使用子系统建立AUTOSAR模型的基础,SWC/runnable在Simulink中建模为子系统。例如如果我们使用TargetLink建立AUTOSAR 的模型,图 12示例给出TargetLink模型中的部分内容,一个AUTOSAR SWC包括若干子系统和一些接口设置,在子系统中定义Runnable算法并添加TargetLink Function模块将子系统设置为 AUTOSAR Runnable,这就是TargetLink 创建AUTOSAR Runnable的方式。另一方面,对于Embedded Coder,我们通常使用原子系统或Function调用子系统来进行周期性或非周期性的AUTOSAR Runnable建模。 这里我们主要关注由子系统对AUTOSAR Runnable进行建模的用例。

AUTOSAR 字典给出模型与 AUTOSAR设置之间的关联。 对于 TargetLink ,AUTOSAR 设置包含在标准的 TargetLink 数据字典中,Simulink支持专用的AUTOSAR字典,通过  AUTOSAR 字典, 我们可以设置和分解SWC或Runnable项以及接口设置、应用或实现数据类型的设置。

两种代码生成器都支持往返机制,即如果在模型中导入AUTOSAR描述文件也就是ARXML,例如SWC描述,则可以生成框架模型或更新当前模型。相反,一个SWC Runnable的模型更改后可以更新对应SWC的描述。

大多数情况下框架模型中的所有要素围绕Runnable建模, SWC之外的所有其他模块仅用于仿真目的且与代码生成无关。 图 13展示的用例用来分析Runnable。为此,使用MXAM 的工件设置功能面板,只需添加定义待分析的Runnable工件即可。

通过MXAM GUI进行设置的过程可以在项目视图完成。如果我们希望在工件设置和SWC模型之间建立固定链接,那么我们可以使用显示在项目工件视图右下角的工件定义功能,将工件设置为工件文件,并将其添加到特定的MXAM项目,如图 13左手边所示。

对于大型的复杂项目,我们通常不用MXAM的GUI,而是使用集成的工作台对SWC进行静态分析。 为此我们只需要通过m-script设置批处理分析的执行选项,作为MXAM的输入,以提供不同的Runnable子系统。在批处理分析中,如果我们查看MXAM安装目录,我们会发现安装目录下已经存在一个预设置的工作台脚本。我们需要完成的工作基本上就是设置执行选项。这样我们将分析对象限制在这四个Runnable的子系统,如图 14左手边所示。

图9. 互动式报告与自动修复
图9. 互动式报告与自动修复
图10. MXAM注释与评审机制
图10. MXAM注释与评审机制
图11. 灵活的报告输出
图11. 灵活的报告输出

以上的设置方法属于静态的设置,我们完全可以采取动态的方法来搜索相关工件对象并运行分析。为此,我们需要确定一些常见的标识符表征的链接。这也相当容易,因为我们只需搜索Runnable的Function模块,如使用Simulink API,然后我们可以自动找到与我们的分析相关的子系统,只需分析模型中实际对应于Runnable子系统的那些要素即可。

上面我们谈到的示例内容是关于MXAM如何支持TargetLink的AUTOSAR建模。接下来,让我们具体看看MXAM如何支持我们在Embedded Coder的帮助下开发SWC模型。

在Embedded Coder中,系统目标文件设置为autosar.tlc或autosar_adaptive.tlc,为AUTOSAR用例启用代码生成,作为Embedded Coder提供的标准ERT系统目标文件的扩展设置,如图 15所示。这里我们看到两个在生成SWC ARXML描述文件方面影响AUTOSAR代码生成的选项,启用AUTOSAR编译器抽象宏,使生成的代码以独立于平台的方式抽象16位平台的编译器指令,最后一个选项确定软件是否通过将矩阵实现为一维数组来支持根级的矩阵输入输出。

通常在项目中,我们希望保持对这些代码生成选项的统一设置。当然,这些统一性设置也适用于AUTOSAR代码生成选项。 MXAM怎样支持我们呢?MXAM通过提供检查例程mes_cgec_9004检查代码生成选项中相关设置的一致性。其检查的原理是通过附带的一个专用的自动检查例程查看excel 列表中的所有代码生成选项的预设值,特别是对于AUTOSAR相关设置项,并将模型的值与此excel工作表中的给定值进行比较,对违反一致性的设置项给出警示并可实现自动设置修正。相关选项的预设属性值可以根据我们的需求进行设置。

我们需要了解的重要信息是MXAM支持AUTOSAR模块用于应用软件模型到代码生成的过程,特别是对于 AUTOSAR库例程中的查表库,进一步查看Simulink自带的AUTOSAR模块库,如图 16所示,这些用于AUTOSAR额外封装的查表例程模块主要包括曲线查表,曲线预查表,映射查表,映射预查表等。代码生成时,AUTOSAR 例程将替换这些库模块。

模块的属性设置会对AUTOSAR代码产生直接的影响,如果我们查看这些模块的相应属性,如图 17所示,那我们会发现这些不过是查表模块库中带封装和对话框的标准模块,并且封装与模块参数之间数据类型得以同步,MXAM支持正确地读取相应模块属性, 因此可完全支持Simulink的AUTOSAR查表库例程模块集的代码生成过程。

图15. Embedded Coder AUTOSAR 代码生成设置
图15. Embedded Coder AUTOSAR 代码生成设置
图16. AUTOSAR Blockset中的模块
图16. AUTOSAR Blockset中的模块
图17. AUTOSAR模块集的查表模块属性
图17. AUTOSAR模块集的查表模块属性

在Embedded Coder的情况下,Simulink使用右侧描述的数据类型,与AUTOSAR平台类型之间存在固定映射关系。如表1所示。

表1. Simulink模型数据类型和AUTOSAR平台类型之间的映射
表1. Simulink模型数据类型和AUTOSAR平台类型之间的映射

因此在Embedded Coder的代码生成框架下MXAM并不需要区分AUTOSAR和non-AUTOSAR模型,这对于数据类型一致性的检查等实施场景非常重要,比如对于MAB规则检查 check na_0002,布尔量信号的端口只能用布尔量信号而不是数值信号来馈送。 现在,这条规则在MXAM中已经集成为标准库的规则,MXAM完全支持Embedded Coder中AUTOSAR代码生成过程中的数据类型映射机制,其描述如图 18所示。

在TargetLink模型框架下,TargetLink AUTOSAR模块库用于AUTOSAR代码生成。TargetLink AUTOSAR模块库(图 19)中我们可以看到通用的接口,输入输出端口和总线、TargetLink数据存储模块,TargetLink runnable模块,SWC接收方端口和发送方端口模块等。此外,还有接收方和发送方 comSpeck 模块,用来与 RTE 进行仿真交互。 MXAM支持TargetLink AUTOSAR模块库中的模块用于Classic 和Adaptive平台的应用开发。

图18. Embedded Coder平台AUTOSAR/non-AUTOSAR模型代码生成数据类型映射
图18. Embedded Coder平台AUTOSAR/non-AUTOSAR模型代码生成数据类型映射
图19. TargetLink AUTOSAR模块库
图19. TargetLink AUTOSAR模块库

TargetLink的AUTOSAR用例方法与Embedded Coder略有不同,TargetLink允许从同一个模型为AUTOSAR和non-AUTOSAR用例生成代码。 我们可以理解为TargetLink AUTOSAR库中所有相关模块接口设置包含两个层面的设置,如输入输出端口模块和数据存储模块的接口设置中包含标准的输出端口的接口设置和AUTOSAR接口设置,我们还可以看到这些模块中的数据设置也有所不同。例如图 20中的AUTOSAR模块设置,开发人员已经选择了使用平台数据类型如int16,以及固定的LSB,而同时如图 21中non-AUTOSAR  设置标签下,设置了不同的数据类型和缩放比例。 总而言之,在TargetLink AUTOSAR和non-AUTOSAR情形下可以并行指定数据,当然,这些指定的数据可能不同。

图20. AUTOSAR模块设置
图20. AUTOSAR模块设置
图21. 标准模块设置
图21. 标准模块设置

对于静态分析工具的MXAM如何处理这些AUTOSAR模块? 事实上MXAM会自动区分AUTOSAR和non-AUTOSAR用例,并且MXAM分析模块数据设置或用于静态分析的决策基于AUTOSAR代码生成模式和所分析的模块的 AUTOSAR 设置。如图 22所示的 TargetLink 主对话框中设置的代码生成模式设置为Classic AUTOSAR,如图 23中所示的相应模块的 AUTOSAR模式设置,这两处设置都必须针对 AUTOSAR 进行,以便 MXAM 可采用相应的 AUTOSAR 设置。其他情况下,我们希望尽量保持与标准代码生成的一致性,或者说对于标准用例,MXAM自动采用输出端口设置的模块数据。

图22. TargetLink 主对话框中代码生成模式设置
图22. TargetLink 主对话框中代码生成模式设置
图23. 模块的 AUTOSAR模式设置
图23. 模块的 AUTOSAR模式设置

这里我们介绍一个简单的样例设置分析。对于MXAM 规则库中的 na_0002 规则,规则要求逻辑信号不得连接到对数值信号操作的模块。例如关注图 24 中的Product模块,按照规则要求,该模块的第一端口应满足端口信号须为数值信号,而由于在源信号的设置中总线输入模块的设置成了布尔信号(如图 24)。MXAM 中进行静态分析获得的结果会有所不同,具体取决于我们在模型中设置的代码生成模式类型。

图24. Product 模块关于MAB na_0002 规则的一致性
图24. Product 模块关于MAB na_0002 规则的一致性
图25. Product模块输入源信号的输出端口类型设置
图25. Product模块输入源信号的输出端口类型设置
图26. 输入源信号的AUTOSAR  端口设置
图26. 输入源信号的AUTOSAR 端口设置

让我们再深入检查一下相关设置。我们在这里有uint16定义。

如果设置为标准模式,同时相应信号提供端口设置为布尔类型时,就会出现违反na_0002规则要求的情况,如图 29所示。 通过静态分析工具MXAM 的检查,报告中得到违规项结果如图,描述为端口应由数值信号输入,实际设置为布尔值。

然而,在TargetLink 主对话窗口设置为AUTOSAR模式的情况下,如图 27所示,这是没问题的,结果如图 28所示。

图27. TargetLink 主对话窗代码生成模式设置为Standard
图27. TargetLink 主对话窗代码生成模式设置为Standard
图28. TargetLink 主对话窗代码生成模式设置Standard时MXAM 规则na_0002的检查结果
图28. TargetLink 主对话窗代码生成模式设置Standard时MXAM 规则na_0002的检查结果
图29. TargetLink 主对话窗代码生成模式设置为AUTOSAR
图29. TargetLink 主对话窗代码生成模式设置为AUTOSAR
图30. TargetLink 主对话窗口设置为AUTOSAR模式时MXAM 规则na_0002的检查结果
图30. TargetLink 主对话窗口设置为AUTOSAR模式时MXAM 规则na_0002的检查结果

如果还记得有关Embedded Coder代码生成选项的设置内容,那么对于TargetLink的设置也是类似的。 如图 31中所示我们看到的是Classic AUTOSAR平台的 TargetLink 代码生成选项的相关设置会影响 RTE API 调用方式。所以在 TargetLink 代码生成之前对相关Runnable进行接口设置的检查显得尤其重要。

此外,我们的实际项目中可能具有对代码生成设置项的特定设置要求,自动检查例程可通过MXAM库中规则mes_cgtl_9002检查所需的预设值,相关设置项的自定义设置参看规则中描述的excel参数表附件如图 32所示。当然,对于Simulink/Embedded Coder,我们会看到类似的参数表。

图31. Classic AUTOSAR代码生成模式下的严格接口检查设置
图31. Classic AUTOSAR代码生成模式下的严格接口检查设置
图32. TargetLink 参数设置检查表
图32. TargetLink 参数设置检查表

对于AUTOSAR 模型的静态分析的问题我们在此做个小结。首先,通过模型静态分析工具如MXAM的应用可高效地支持Adaptive和Classic AUTOSAR模型的快速分析。其次,无论是TargetLink AUOTSAR模型还是Embedded Coder AUTOSAR模型,MXAM 都能支持AUTOSAR模型到代码的静态分析过程。特别对于TargetLink存在不同的设置区分AUTOSAR和non-AUTOSAR的情况,不同模块的适用数据直接基于AUTOSAR设置。 如果我们已经为AUTOSAR代码生成设置了模型 ,则MXAM采用AUTOSAR设置,如果没有进行相应的代码生成设置,模型默认采用标准设置。最后我们可以通过设置MXAM 自带的工具配置参数表,进行项目代码生成选项设置的自动化检查与设置修正。

最后,在模型开发早期通过引入MXAM 工具,可以帮助我们的模型开发过程中及早发现模型的错误并加以修正,对于需要特殊配置的AUTOSAR 模型,及早发现模型中的配置错误并自动修正, 可以极大地提高模型开发的效率,保障模型到生成的代码质量,以及符合ISO26262 功能安全标准的一致性要求。

► 点击此处了解更多关于MXAM的详细信息

关于MES模赛思: 软件质量尽在控制之中

模赛思软件技术有限公司(Model Engineering Solutions,简称MES)是一家高科技软件公司,专为软件项目的质量保证提供解决方案。MES为客户基于模型的软件开发提供技术支持,使其符合IEC 61508、ISO 26262或ASPICE等行业标准。

MES模赛思成立于2006年,总部位于德国柏林。管理层由Sophia Kohle和Hartmut Pohlheim博士组成。Sophia Kohle近年来显著推动了MES Model Examiner®(MXAM)的发展,Hartmut Pohlheim博士是基于模型开发领域最杰出的专家之一。MES的主要客户包括整车厂如戴姆勒、大众、丰田和吉利等以及博世、西门子和三星等行业供应商。在汽车行业中,除少数几家公司外,全球数十家顶尖制造商及供应商均在他们的开发环境中使用MES的解决方案。为支持其全球客户,MES已在美国和中国建立了子公司,并与全球分销商网络紧密合作。

MES的产品包括4种质量工具软件:MES Model Examiner®MES Test Manager®MES Model & Refactor®MES Quality Commander®,它们共同构成了一个工具链,全面保障基于模型的软件开发过程中所有阶段的质量。通过MES Jenkins Plugin,该工具链也可以在持续集成环境中使用。工具链主要应用平台为MATLAB®Simulink®。除了MES质量工具外,MES测试中心MES学院的专家们还为全球客户提供关于质量保证和开发流程优化的定制咨询服务及培训课程。

MES是dSPACE 公司的战略合作伙伴和MathWorks及ETAS的产品合作伙伴。MES学院与SAE International有合作关系。

相关视频

Go back