研究传统汽车和自动驾驶汽车嵌入式安全系统领域的汽车工程师正在寻找有效方式满足 ISO 26262[1] 严苛的流程标准:乘用车研发领域的功能安全标准。
自动驾驶汽车是所有媒体关注的焦点,有关其功能安全方面的建议层出不穷。虽然如此,这些建议主要集中于最新的编码方式或消除错误的工具。行业专家很早便认识到,保证安全主要是确保系统及其相关要求正确和适当,而软件及编码方式[2]次之。
以连续时间和离散时间仿真为基础的 Simulink 可实现基于模型的设计, 该工具不仅能够用于辅助设计车辆,还能在车辆进入道路测试或车队测试之前,提前在各种驾驶条件下对整个系统进行测试,并仿真各种故障情况。此外,该工具还支持 ISO 26262 规定的流程活动,包括工具认证。IEC Certification Kit 对该工具支持的功能进行了详细说明,还包括了国际认证机构 TÜV SÜD 提供的证书和报告。
本文将介绍经 TÜV SÜD 认证、将 Simulink 应用于 ISO 26262 项目的工作流程,还将介绍 ISO 26262 以及基于模型的设计,并对下列任务进行说明:
需求开发
设计建模
代码生成
设计验证
代码验证
工具认证
ISO 26262 和基于模型的设计
ISO 26262 包含用于人工设计编码和基于模型的设计的规范。此外,ISO 26262 还认可一些采用基于模型设计[3]的优势:
模型的无缝使用能够有效保证一致性,提高研发效率。
该标准提及“广泛使用”数学模型,同时指出利用建模工具将“半形式化的图形方法”应用于软件开发。该标准还指出建模不仅可获取要实现的功能(嵌入式软件),还可通过真实的物理系统(车辆模型和环境模型)的仿真来创建整个系统模型:
由此,便能够以可接受的计算速度构建高保真度、高复杂度的车辆系统以仿真接近于实际的行为。在开发过程中,车辆/环境模型将逐渐被实际系统及其环境替换,而功能模型将作为设计基准,通过生成代码将嵌入式软件应用于控制单元。[3]
图 1 为典型 Simulink 闭环系统模型。它由控制器、被控对象以及信号处理器组成。在 ISO 26262 中,系统设计规范不仅是软件开发的输入,更是保证系统安全的基础[2]。
图 1:Simulink系统设计模型
随后进行系统详细设计,直至其成为包含足够细节的、可用于产品级代码生成的软件设计基准。ISO 26262 将这个模型的详细设计流程描述为“模型进化”[2]:
在实践中,[存在]功能模型的进化:从早期规范模型(设计模型)到可实施模型,最终自动转换为代码。
ISO 26262 推荐了各种基于汽车安全完整性等级(ASILs)的活动的实施方法。您可以根据您的应用场景,利用该规范建立适当的工作流程。图 2 所示为 ISO 26262 流程概览。实心箭头所示为开发活动,虚线箭头所示为验证和确认活动。ISO 26262 中提及的“模型进化”以省略号(…)表示。
图 2:使用 Simulink 实施 ISO 26262 软件开发和验证的流程
需求开发
在实施安全相关开发流程时,应首先制定功能及安全需求。ISO 26262 建议您利用“软件架构设计和软件安全需求之间的双向可追溯性”对软件架构的设计进行验证。为此,您可以利用 Simulink Requirements 制定并追踪需求到模型、测试及代码。Simulink Requirements 支持对其他工具的双向追溯,包括 Microsoft Word、Microsoft Excel 以及 IBM Rational DOORS。需求的实现和验证状态可在 Simulink Requirements 中监测和管理,需求链接可显示在生成的代码中(图 3)。
图 3:Simulink 中的需求规格
设计建模
正如“ISO 2626262 和基于模型设计”章节所述,ISO 26262 说明了功能模型从高层可执行规范进化为可用于产品级代码生成的详细设计的整个流程。典型修改和完善包括:
使用 Simulink Control Design 离散化工具将模块从连续时间(S 域)转换为离散时间(Z 域)
使用 Fixed-Point Designer 将数据从双精度转换至单精度或定点
使用 Stateflow 添加诊断、模式逻辑、状态机以及调度算法
对于 ASIL B 至 D,ISO 26262 强烈建议使用建模规范。此外,还可使用 MAAB 规范[4],以及 Simulink 提供的用于 ISO 26262 的高完整性规范。Simulink Check 可自动检查该两种规范。Simulink Check 可在编辑时显示问题,例如不合规模块的插入等。此外,还可加入自定义规范和检查。
代码生成
ISO 26262 声明“软件单元的实施包括生成源代码以及转换为目标代码”。为此,您可以利用EmbeddedCoder 生成 Simulink 模型的 C、C++ 以及 AUTOSAR 代码。该代码符合 MISRAC:2012 自动代码规范[5]要求。ISO 26262 指出基于模型设计的代码规范和手工代码规范存在差异,并以 MISRA 为例进行说明。
IEC Certification Kit 可为用于 C、C++ 以及 AUTOSAR 的 Embedded Coder(包括 ASIL A-D)提供工具认证支持。其 TÜV SÜD 证书报告做出了如下声明:
Embedded Coder 满足 ISO 26262 中关于工具支持及自动化的要求。
Embedded Coder 通常用于以下三种使用案例之一:
用于产品级代码生成的模型的 C 代码生成
用于产品级代码生成的模型的 C++ 代码生成
用于产品级代码生成的模型的 AUTOSAR应用软件组件的AUTOSAR代码和描述文件生成
Embedded Coder 提供了优化代码存储和速度的选项。此外,您还可以生成处理器专用优化代码,从而有效利用硬件加速器,例如用于 ARM 和 Intel的SIMD。您可以通过 ISO 26262 中所述的模型至代码、处理器在环来测试验证优化代码是否与规定公差内的仿真结果匹配。
可执行目标代码使用编译器和链接器从生成的源代码中产生,IEC Certification Kit 中的工作流程允许代码生成器、编译器和处理器的优化,这对于大批量生产的 ECU 非常关键,而处理器在环测试可用于验证可执行的目标代码。
设计验证
ISO 26262 推荐了一些用于验证软件设计和实施的静态方法和动态方法,包括单元级和集成级活动。关于基于模型的设计,ISO 26262 指出“测试对象可以是源于模型的代码或模型自身,具体取决于软件开发流程”。
Simulink Test 提供在 Simulink 中进行 ISO 26262 验证和确认活动使用的框架。您可以将其用于制定、管理以及执行针对模型和模型生成代码的系统化仿真测试。图 4 为测试序列和评估模块的示例。
图 4:Simulink 测试序列和评估模块用于建模和编制复杂的测试场景
IEC Certification Kit(适用于 ISO 26262)中的 TÜV SÜD 报告明确了自动验证和确认期间 SimulinkTest 的作用:
[Simulink Test]可自动对 Simulink 模型和生成的代码执行核心认证和确认活动。根据功能安全标准 ISO 26262,以下使用案例反应了软件开发期间需要完成的活动:
开发和执行 Simulink 模型测试
开发和执行模型与代码之间的背对背测试
评估测试结果
生成测试报告
识别需求和测试用例之间的可追溯性
ISO 26262 建议通过结构覆盖率分析确定测试的完整性,识别非预期功能。此外,ISO 26262 还列出提高安全度的三种方法,并强烈建议将最后两种方法用于 ASIL-D:
语句覆盖
分支覆盖
MC/DC 覆盖
关于基于模型的设计,该标准指出:“可在模型级下使用类似结构覆盖率度量方法,对模型进行结构覆盖率分析”。对于结构覆盖率不足的情况,该标准指出:“应指定附加测试用例或提供合理性说明”。
Simulink Coverage 针对模型和生成的代码提供结构覆盖度量功能,使用 Simulink Test 执行测试可轻松启用该功能。若模型覆盖率不足,您可以使用 Simulink Design Verifier 自动生成其他测试用例以达到所需覆盖率,包括 MC/DC。此外,Simulink Check 还能够识别重复模块以降低复杂度。它也包括度量仪表板以评估项目质量,满足 ISO 26262 要求:“使用低复杂度、限制大小的软件组件和接口“(图 5)。
图 5:度量仪表板展示了模型规范的符合程度
IEC Certification Kit 提供工具认证支持,以及针对 Simulink Check、Simulink Coverage(包括模型和代码覆盖率)、Simulink Design Verifier 以及 Simulink Test 的 TÜV SÜD 证书和报告。
代码验证
ISO 26262 提供了一些用于验证软件设计和实施情况的方法。IEC Certification Kit 中介绍了一种用于检测已生成代码中非预期功能(例如,无法追踪至模块或信号的代码)的追溯审查方法。该套件可自动生成所需追溯矩阵。或者,在进行软件在环(SIL)测试期间,您可以使用 Simulink Coverage 将模型覆盖率与代码覆盖率进行比较,或直接使用 Simulink Code Inspector。
最后,您可以使用 Polyspace Bug Finder 检查是否符合 MISRA 要求。如果您的项目中含有自动和手工的混合代码,采用 MISRA 检查和代码覆盖分析方法非常有帮助。若对安全性要求较高,您可以使用 Polyspace Code Prover 以证明不存在运行时错误,例如除零错误。
IEC Certification Kit 提供用于 Polyspace 产品的工具认证支持以及 TÜV SÜD 证书和报告。
在编译和生成可执行代码后,您可以利用 PIL 测试(图 6)重用模型测试以验证目标处理器上执行的代码(图 6)。
图 6:嵌入式处理器PIL的示例
ISO 26262 强烈推荐对 ASIL C 和 D 执行背对背测试。此外,ISO 26262 还指出在目标硬件环境的替代环境下测试的重要性,并强调需要了解测试环境和硬件环境之间的差异。
源代码或目标代码不同,例如处理器数据和地址的不同字长,可能导致测试环境和目标环境之间出现差异。
但正如每位计算机科学家都应了解的事实[6]——跨平台存在许多潜在的数值误差,特别是浮点数据。某些数值误差起初很小随后逐渐累积和增大,这种情况在反馈控制系统中特别明显。因此,ISO 26262 列出了各种适用于背对背测试的在环测试方法:
可在不同环境下执行软件单元测试,例如:
模型在环测试
软件在环测试
处理器在环测试
硬件在环测试
Simulink Test 可以自动执行在环测试,包括使用 Embedded Coder 执行 SIL 和 PIL,使用 SimulinkReal-Time 执行 HIL,通过 Simulink Coverage 中的覆盖率度量功能提供通过/失败报告。
工具认证
ISO 26262-8 还对其他流程进行介绍,包括版本控制、配置管理以及文档编制。同时,这些流程分别由 Simulink Project,Simulink 模型差异识别和合并(功能),以及 Simulink Report Generator 提供支持。
此外,该标准还提供工具认证指南。该标准不允许工具供应商认证自身工具,而要求用户对于特定项目认证工具。IEC Certification Kit 通过提供典型使用案例、参考工作流程、工具分类分析、软件工具文档、工具认证报告和确认测试,从而对工具进行有效的预认证。
TÜV SÜD 审查及审核 MathWorks 工具的开发和质量流程、错误报告功能,以及认证每次产品发布的结果。IEC Certification Kit 包含这些 TÜV SÜD 证书和报告,可用于遵守适当的验证和确认工作流程的需要。该套件提供基于典型工具使用案例(例如本文中突出显示的)的参考工作流程。
此外,该套件还提供一些更为详细的信息,包括将 ISO 26262 目标映射至 Simulink 的支持功能(图7)。
图 7:摘自 IEC Certification Kit 中 ISO 26262 至 Simulink 的映射
注意,需要考虑使用已认证的工具并不一定能保证软件或系统的安全性。
ISO 26262是乘用车的国际功能安全标准[1]。它明确了与安全相关的电子/电气(E/E)系统在出现故障时可能导致的危险。ISO 26262 按照风险类别将汽车安全完整级别(ASIL)分为四级:从 A 至 D,ASIL D 为最高完整级。该标准有九个标准章节,而第十章为指南。每个章节均以独立文件呈现。ISO 26262 在本质上是目标导向而非规范指南,但 ISO 26262 中包含有数百页指南内容。第 4、6 和 8 章节分别介绍系统 [ISO 26262-4]、软件 [ISO26262-6] 和工认证具 [ISO 26262-8]。ISO 26262 第一版于 2011 年发布。第二版预计于 2018 年发布 (ISO26262:2018)。第二版将涉及其他类型车辆标准,例如摩托车、卡车和公交车。此外,第二版还包含有关于半导体(器件)的全新指南。
References:
1. ISO 26262 Road vehicles — Functional safety
2. Nancy G. Leveson, Engineering a Safer World, Systems Thinking Applied to Safety
3. ISO 26262-6 — Part 6: Product development at the software level
4. MAAB Style Guidelines
5. MISRA C:2012
6. David Goldberg, What Every Computer Scientist Should know about Floating-Point Arithmetic
全部0条评论
快来发表一下你的评论吧 !