技术文章和通讯

自动驾驶的ISO 26262的工作流应用程序使用MATLAB:指南和最佳实践

Lars Rosqvist MathWorks


仿真软件的使用万博1manbetx®和Stateflow®对ISO 26262的软件开发建立了汽车ecu。有一个日益增长的趋势,尤其是在自动驾驶的应用程序,使用MATLAB实现软件设计®功能仿真软件模块以及Stateflow图表万博1manbetx。本文提供了最佳实践使用MATLAB软件为中心的工作流来验证符合ISO 26262标准[1]。这些最佳实践补充ISO 26262参考工作流中使用基于模型的设计说明IEC认证工具包

推荐建模模式

在本文中,我们使用一个软件开发模式,结合了MATLAB仿真软件模型功能块(图1)。顶层仿真软件模型代码生成的所有配置设置。万博1manbetxMATLAB函数块调用外部MATLAB函数。

图1所示。使用外部MATLAB代码建模模式。

图1所示。使用外部MATLAB代码建模模式。

这个建模模式利用所有可用于仿真软件验证和确认工具的模型,使功能使用MATLAB语言实现[2]。万博1manbetx它还利用了MATLAB的广泛的功能可用。例如,ADAS开发通常是使用MATLAB实现,因为复杂的数学功能可以表达简洁、优雅的方式。

MATLAB ISO 26262参考工作流:概述

如前所述,在本文中描述的工作流程是基于ISO 26262参考工作流IEC认证工具包(图2)。

图2。验证和确认活动中指定IEC认证工具包。

图2。验证和确认活动中指定IEC认证工具包。

基于MATLAB的工作流包括额外的建议下面的验证和确认活动:

  • 需求编写和架构验证
  • 静态模型分析
  • MIL测试和硅或公益诉讼连续测试
  • 静态代码分析
  • 文档

需求编写和架构验证

ISO 26262要求的证据表明,所有的需求已经实现和测试。在ISO 26262参考工作流体系结构验证和需求创作活动突出显示在图3中提供这些证据。

图3。要求连接活动。

图3。要求连接活动。

需求与MATLAB代码

使用工具箱™需求,您可以链接要求行代码在MATLAB函数以同样的方式,你需求链接到模型块。万博1manbetx所不同的是,现有的检查失踪的需求不会检查外部MATLAB代码。建议是你实现一个模型顾问检查寻找MATLAB容器不与要求。一个容器通常是外部MATLAB文件或一个MATLAB函数,根据文件的大小。

最佳实践对MATLAB工作流

为MATLAB实现模型顾问检查搜索容器不能与需求。

静态模型分析

必须检查每个组件的实现模型的可读性,可理解性和可测试性(图4)。仿真软件检查™是用来评估模型的符合ISO 26262和MathWorks万博1manbetx高度集成的指导方针。

图4。静态模型分析活动中指定IEC认证工具包。

图4。静态模型分析活动中指定IEC认证工具包。

语言子集

在MATLAB编程可以包括从几个不同的工具箱的使用功能。由于MATLAB是一个功能强大的语言的高度抽象,可以用几行代码开发复杂的功能。在某些情况下,一行的MATLAB代码会导致许多的C代码,使得生成的代码难以验证完全覆盖。你需要知道的功能实现是可测试的。ISO 26262规定的使用语言子集在ISO 26262(表1)基于功能您正在使用的类型。

我们建议您采取以下步骤来满足要求:语言子集

  • 评估使用MATLAB函数来确保没有人要求高的验证工作。顾问可以添加检查检查模型的使用non-recommended功能。
  • 用更简单的实现代替non-recommended MATLAB函数。这些简单的功能更容易跟踪和测试。

最佳实践对MATLAB工作流

当评估模型,寻找MATLAB操作或功能,生成大量的C代码。如果可能的话,用其他的功能。添加一个模型使用顾问检查警告说如果non-recommended函数。

如果函数不能被取代,他们需要单独测试。

  • 验证函数通过单独的单元测试覆盖率高。当覆盖率已经达到,证明这些函数的使用通过引用外部的单元测试。

最佳实践对MATLAB工作流

如果MATLAB操作或功能,生成大量的C代码标识,不能更换,测试与单元测试外部作用。写的理由与使用功能和链接到测试结果存储的地方。

强数据类型

ISO 26262要求所有变量是强类型的。强类型的块模型仿真软件Advisor检查模万博1manbetx型,包括MATLAB功能块的接口,但它不检查外部MATLAB函数。为了克服这个障碍,写一个检查确认所有MATLAB函数是强类型的。特别重要的检查数据类型和数据维度。

最佳实践对MATLAB工作流

添加一个模型顾问检查以确保所有变量在MATLAB代码中是强类型的。

MIL测试和硅或公益诉讼连续测试

连续的(等价)测试使您能够以同样的方式证明生成的代码的行为模型,如表7,ISO 26262推荐的软件单元验证的方法。对于对象的代码,使用processor-in-the-loop(公益诉讼)测试和生成的C代码,使用software-in-the-loop (SIL)(图5),测试用例应该使用的相同model-in-the-loop (MIL)测试。对于单位验证,使用硅。集成测试,您必须使用公益诉讼来验证整个开发工具链。

图5。模型验证活动中指定IEC认证工具包。

图5。模型验证活动中指定IEC认证工具包。

预防意想不到的功能

证明没有添加在代码生成意想不到的功能,测量模型和代码测试期间测试覆盖率。测试覆盖率通常是使用连续的测试与仿真软件覆盖™。万博1manbetx报道,根据ISO 26262,评估的完整性验证,并提供证据表明,单元测试的目标是实现。

根据ISO 26262,代码与失踪的报道需要审核和合理的。当使用仿真软件模块开发,理由可以连接到模型中万博1manbetx,这意味着之间的理由保持验证运行。该选项不可用外部MATLAB函数。为MATLAB函数证明失踪的报道,报道过滤器添加到代码,然后将它连接到测试工具或测试文件在仿真软件测试™。万博1manbetx我们的建议是将覆盖过滤器文件连接到测试文件(图6)。

图6。覆盖过滤器连接到测试文件。

图6。覆盖过滤器连接到测试文件。

最佳实践对MATLAB工作流

跟踪理由失踪的报道在外部MATLAB代码通过一个理由过滤器连接到测试文件。

静态代码分析

如上所述的ISO 26262标准,静态分析包括的活动,如搜索模式匹配的源代码文本或模型已知的故障或符合建模或编码规则。静态代码分析执行生成的代码(图7)。

图7。静态代码分析活动中指定IEC认证工具包。

图7。静态代码分析活动中指定IEC认证工具包。

MISRA - C合规

评估MISRA®C合规从MATLAB生成的代码,使用静态代码分析工具如Polyspace错误发现者™检测non-MISRA C兼容的代码手动和调查结果。如果不合规的代码来自一个内置的MATLAB函数,你有两个选择:

  • 用一个重写函数取代内置的MATLAB函数
  • 编写一个理由MISRA - C的警告

我们的推荐是替换函数,如果可能的话。以确保替换函数不是由其他开发人员使用,实现一个模型顾问检查non-recommended功能。

最佳实践对MATLAB工作流

当回顾静态代码分析报告,检查是否MISRA警告来自内置的MATLAB函数。如果这些函数可以更换,然后添加一个模型顾问检查警告当non-recommended功能使用。如果没有,证明这个问题的静态代码分析报告。

文档

在最后的安全情况下提供ISO 26262一致性的证据,你需要文档验证过程中的每个步骤,从需求到验证。文档应该包括设计描述的功能。图8突出的一些活动必须包括在设计描述。

图8。活动包括在设计文档。

图8。活动包括在设计文档。

系统设计描述

万博1manbetx仿真软件报告生成器™包括一个预定义的系统设计报告模板。这个模板通常是适合记录仿真软件开发的一个组件,而不是记录外部MATLAB函数,因为他们并不包含在默认的系统设计描述。万博1manbetx因此我们建议定制模板,包括外部MATLAB代码。

最佳实践对MATLAB工作流

定制系统设计描述模板,包括外部MATLAB代码。

SOTIF注意事项

ADAS等复杂的系统,一个函数像预想的一样,但仍可能导致有害的行为。指导下的ISO / PAS 21448安全目标功能(SOTIF)标准,你可以解决这个问题,将额外的验证和确认活动集成到基于模型的设计。我们建议增加随机测试扩大测试和操作条件包括未知的用例。这些随机测试应该验证实现模型和集成对象代码的行为与系统需求。

包括支持SOTIF IEC认证工具包。万博1manbetxSOTIF时,没有仿真软件和MATLAB工作流之间的主要差异。万博1manbetx更新的IEC认证组件包括使用信息系统测试的自动驾驶的工具箱。

总结

在ISO-compliant软件开发中,完整的基于模型的开发和之间的差异更以MATLAB为中心的工作流并不大。万博1manbetx主要的区别是需要避免使用non-recommended函数实现自定义模型顾问检查。这些额外的检查,结合现有的ISO 26262在模型检查检查,确保MATLAB实现生成代码适合高度集成的应用程序。万博1manbetx使用MATLAB为中心的工作流的其他挑战ISO 26262可以使用理由过滤器由简单的工作区或连接需求的多层次模型。

[1]本文中的建议是基于MATLAB R2020a。如果您正在使用一个不同的版本,请联系您的MathWorks代表了解它的功能,使用MATLAB和Simulink对ISO 26262。万博1manbetx

[2]开发人员有时候选择他们认为仿真软件MATLAB / Simulink仿真,因为不支万博1manbetx持diff和合并。万博1manbetx如果你工作在仿真软件中,您可以使用内置的工具万博1manbetx来处理diff和合并。如果你的团队使用分布式版本控制系统(比如Git,你可以做一个三方合并,应该发生的冲突。

关于作者

佬司Rosqvist MathWorks高级技术顾问。他支持万博1manbetx使用基于模型的设计和MATLAB的客户在不同的行业。他作为一个功能安全认证的专业技术人员和支持客户提供ISO 26262认证好几年了。万博1manbetx加入MathWorks之前,佬司担任软件开发人员在汽车行业内,气候控制系统开发。佬司收到了他的应用物理学硕士学位和林雪平大学的电子工程技术,瑞典。

2020年出版的