一个ISO 26262的工作流程使用MATLAB自动驾驶的应用:指南和最佳做法

作者:Lars Rosqvist,MathWorks

Simulink的使用金宝app®和Stateflow®ISO 26262软件开发已经在汽车电子控制单元中建立了良好的基础。使用MATLAB实现软件设计的趋势正在增长,尤其是在自动驾驶应用中®函数以及Simulink模块和状态流程图。金宝app本文提供了使用以MATLAB为中心的工作流来验证是否符合ISO 26262软件标准[1]的最佳实践。这些最佳实践对ISO 26262参考工作流使用基于模型的设计进行了补充IEC认证工具包

推荐的建模模式

在本文中,我们使用一种软件开发模式,其中Simulink模型包含一个MATLAB功能块(图1)。顶层Simulink模型包含代码生金宝app成的所有配置设置。MATLAB函数块调用外部MATLAB函数。

图1.使用外部MATLAB代码的建模模式。

这种建模模式利用了Simulink模型可用的所有验证和验证工具,同时支持使用MATLAB语言[2]实现功能。金宝app它还利用了MATLAB中可用的广泛功能。例如,ADAS开发通常使用MATLAB实现,因为复杂的数学功能可以用简洁、优雅的方式表达。

MATLAB ISO 26262参考工作流程:概述

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

图2。IEC认证套件中规定的验证和确认活动。

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

  • 需求编写和架构验证
  • 静态模型分析
  • MIL测试和SIL或PIL背对背测试
  • 静态代码分析
  • 文档

要求创作和架构验证

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

图3.需求的活动联系起来。

将需求链接到MATLAB代码

使用Simu金宝applink需求™, 可以将需求链接到MATLAB函数中的代码行,方法与将需求链接到Simulink块的方法相同。不同之处在于,现有的缺失需求检查并没有检查外部MATLAB代码。建议您实施ModelAdvisor检查,以查找未链接到需求的MATLAB容器。容器通常是外部MATLAB文件或MATLAB函数,具体取决于文件的大小。

最佳实践对于MATLAB工作流程

实现Model Advisor检查以搜索未链接到需求的MATLAB容器。

静态模型分析

必须检查实现模型中的每个组件的可读性、可理解性和可测试性(图4)。模拟链路检查™ 用于评估模型对ISO 26262和MathWorks的符合性金宝app高诚信准则。

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

语言子集

在MATLAB中编程可以涉及到使用几个不同工具箱中的函数。由于MATLAB是一种功能强大的语言,具有高度的抽象,您可以用几行代码开发复杂的功能。在某些情况下,一行MATLAB代码可能会导致多行C代码,使生成的代码难以完全验证。您需要知道您正在实现的功能是可测试的。ISO 26262规定根据所使用的函数类型使用语言子集(ISO 26262中的表1)。

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

  • 评估使用MATLAB的功能,以确保他们没有要求高验证工作。模型顾问检查可以补充的是检查的非推荐功能的使用。
  • 用更简单的实现替换不推荐的MATLAB函数。这些简单的函数将更易于跟踪和测试。

最佳实践对于MATLAB工作流程

在查看模型时,寻找生成大量C代码的MATLAB操作或函数。如果可能,用其他功能替换它们。添加一个Model Advisor检查,该检查在使用非推荐功能时发出警告。

如果功能无法替换,则需要分别进行测试。

  • 通过具有分开的单元测试覆盖率高验证的功能。当覆盖率已经达到了,通过引用外部单元测试证明了这些功能的使用。

最佳实践对于MATLAB工作流程

如果MATLAB操作或产生大量的C代码被识别并且不能被替换的功能,单元测试在外部测试功能。连接到其中使用并链接到其中的测试结果被存储的功能的写入的理由。

强数据类型

ISO 26262要求所有的变量是强类型。模型顾问检查SIMULINK的强类型的模块金宝app,包括界面到MATLAB功能块的机型,但它不检查外部MATLAB函数。为了克服这一障碍,写检查,以确认所有功能的MATLAB是强类型。检查数据类型和数据尺寸就显得尤为重要。

最佳实践对于MATLAB工作流程

添加Model Advisor检查以确保MATLAB代码中的所有变量都是强类型的。

MIL测试和SIL或PIL背对背测试

连续的(等价)测试使您可以证明,生成的代码的行为以同样的方式为模型,为软件部门核实推荐ISO 26262表7,方法。对于对象代码,使用处理器在环(PIL)试验和生成的C代码,使用软件在环(SIL)(图5)。测试用例应该是相同的模型在环(MIL)测试中。对于单位验证,使用SIL。对于集成测试,你必须使用PIL来验证整个开发工具链。

图5。IEC认证套件中规定的模型验证活动。

意想不到的功能的预防

为了证明在代码生成期间未添加任何意外功能,请在模型和代码测试期间测量测试覆盖率。测试覆盖率通常使用Simulink覆盖率的背靠背测试来完成™. 根据ISO 26262,覆盖率用于评估验证的完整性,并提供证据证明单元测试的目标已实现。金宝app

根据ISO 26262,缺少覆盖范围的代码需要审查和证明。使用Simulink块进行开发时,可以将验证连接到模型,这意味着在验证运行之间保留验证。此选项不适用于外部MATLAB函数。为了证明MATLAB函数缺少覆盖,请金宝app在代码中添加覆盖过滤器,然后将其连接到Simulink测试中的测试线束或测试文件™. 我们建议将覆盖率过滤器文件连接到测试文件(图6)。

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

最佳实践对于MATLAB工作流程

通过连接到测试文件的验证过滤器,跟踪外部MATLAB代码中缺失覆盖率的验证。

静态代码分析

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

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

MISRA - C合规

为了评估MISRA®C的遵从来自MATLAB生成的代码,使用一个静态代码分析器工具如Polyspace错误查找程序™检测非MISRA C兼容码和手动调查的结果。如果不符合要求的代码来自一个内置的MATLAB功能,你有两个选择:

  • 用重写功能替换内置的MATLAB函数
  • 写出MISRA C警告的理由

我们的建议是,以取代功能,如果可能的话。为了确保更换功能不使用其他开发人员,实现模型顾问检查非推荐功能。

最佳实践对于MATLAB工作流程

在查看静态代码分析报告时,检查MISRA警告是否来自内置的MATLAB函数。如果可以替换这些函数,则添加Model Advisor检查,在使用非推荐函数时发出警告。如果不是,请在静态代码分析报告中说明问题。

文档

在提供ISO 26262符合性证据的最终安全案例中,您需要记录验证过程中的每个步骤,从需求到验证。文件应包括功能的设计说明。图8突出显示了设计描述中必须包含的一些活动。

图8.活动以包括设计文档。

系统设计说明

金宝appSimulink报告生成器™ 包括预定义的系统设计报告模板。该模板通常适用于记录Simulink中开发的组件,但不适用于记录外部MATLAB函数,因为默认系统设计描述中不包含这些函数。因此,我们建议自定义模板以包含外部MATLAB代码。

最佳实践对于MATLAB工作流程

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

索蒂夫的考虑

在ADAS等复杂系统中,功能可能会按预期运行,但仍会导致危险行为。在ISO/PAS 21448预期功能安全(SOTIF)标准的指导下,您可以通过将其他验证和确认活动集成到基于模型的设计中来解决此问题。我们建议添加随机操作条件测试以扩展测试,并包括未知用例。这些随机测试应验证实现模型和集成目标代码的行为是否符合系统需求。

IEC认证工具包包括用于SOTIF支持。金宝app当谈到SOTIF,有Simulink和MATLAB的工作流之间没有大的区别。金宝app更新后的IEC认证工具包包括有关使用自动驾驶工具箱的系统测试信息。

概括

在iso兼容的软件开发中,完全基于Simulink的开发和更以MATLAB为中心的工作流之间的差异并不大。金宝app主要的区别是需要通过实现自定义Model Advisor检查来避免使用非推荐的函数。这些额外的检查,连同Simulink Check中现有的ISO 26262检查,确保MATLAB实现生成适合于高完整性应用程序的代码。金宝app使用以MATLAB为中心的ISO 26262工作流的其他挑战可以通过简单的变通方法来处理,比如使用校准过滤器或将需求连接到模型的多个级别。

本文的建议是基于MATLAB R2020a。如果您正在使用不同的版本,请联系您的MathWorks代表,了解其使用MATLAB和Simulink用于ISO 26262的功能。金宝app

[2]开发人员有时选择Matlab,因为他们认为Simulink不支持Diff和合并。金宝app金宝app如果您在Simulink中工作,您可以使用内金宝app置工具来处理差异和合并。如果您的团队使用像Git这样的分布式版本控制系统,则可以进行三方合并,如果发生冲突。

关于作者

拉尔斯Rosqvist是MathWorks公司的高级技术顾问。他支持金宝app使用基于模型的设计和MATLAB在不同行业的客户。他被认定为功能性安全专家通过TÜV南德意志集团,并支持符合ISO 26262认证的客户了好几年。金宝app在加入MathWorks公司,拉斯担任软件开发人员在汽车行业内,发展气候控制系统。拉斯获得了硕士学位,北京应用物理与电气工程技术,瑞典林雪平大学。

发布时间2020