账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
如何透过Simulink进行ISO 26262专案
 

【作者: Tom Erkkinen】2018年09月17日 星期一

浏览人次:【15855】


不论是传统或自主车辆,负责与安全相关嵌入式系统的汽车工程师都正在寻找有效率的方法以达成适用于座乘用车开发功能安全标准ISO 26262 [1]所规范的严格流程。


当几乎所有媒体都聚焦自主车辆,看起来在建议并不缺乏。不过这些建议通常着重于最新的程式码编写方法或摧毁程式臭虫的工具。如同产业专家长期以来意识到的,安全性其实更贴近于让系统以及其需求正确运作,而不仅仅是关注软体的运行和如何编程[2]。


透过Simulink进行的模型化基础设计(Model-Based Design)以连续和离散时间的模拟为骨干,让你可以在实际在试验场或执行车队测试之前,先在种类广泛的驾驶条件与过失驾驶情境下设计和测试完整的系统。它还支援ISO 26262规范的流程活动,包含工具的资格认证。 IEC安全验证套装组(IEC Certification Kit)详细说明这项支援,并提供国际认证机构TUV SUD的工具认证和报告。


本文将说明如何透过TUV SUD认可的Simulink工作流程来进行ISO 26262专案计画。文中首先介绍ISO 26262与模型化基础设计,并接着涵盖下列几项任务:


* 需求开发


* 建立设计模型


* 产生程式码


* 设计验证


* 程式码验证


* 工具资格认证


ISO 26262与模型化基础设计

ISO 26262除了涵盖手动设计及编写程式码的指南之外,也包含模型化基础设计。它认可使用模型化基础设计所带来的几项好处[3]:


无缝地利用模型,可带来相当一致且有效率的开发。


这项标准提及「广泛使用」数学模型,并注记建模工具利用了「半正式图解方法(semi-formal graphical methods)」来进行软体开发。它说明到,建模不仅是捕捉(嵌入式软体)将要实现的功能,也协助了真正的实体系统(车辆模型与环境模型)模拟,以创造一个完整的系统模型:


如此一来,就有可能建立出具备高度细节、非常复杂的车辆系统模型,以可接受的运算速度来模拟接近现实的行为。当车辆/环境模型逐渐在开发过程中被真实系统与其真实的环境取代,功能模型可以在程式码生成时作为嵌入式软体在控制单元上实现的蓝图。 [3]


图1为一个典型的Simulink闭回系统模型。它由一个控制器与受控体、加上讯号处理器组合而成。在ISO 26262,系统设计规格是一项软体开发的输入值,但其实不仅于此,因为安全性是一个根本的系统议题[2]。



图1 : Simulink系统设计模型。
图1 : Simulink系统设计模型。

你的系统设计接着会继续精进,直到变成具备充分细节,让你可以产生产品程式码的软体蓝图。 ISO 26262以「模型演化(model evolution)」描述了这个模型的精进过程[2]:


在实务上,功能模型[有一个]从早期规格模型,经过设计模型,再到实现模型,最后自动转换为程式码的演变(模型演化)。


ISO 26262针对多种依据汽车安全完整度等级(Automotive Safety Integrity Levels,ASILs)的活动各提出方法建议。你可以利用这些指南,依照你的使用情况,来建立一个适当的工作流程。图2提供一个ISO 26262流程总览。色块箭头代表了开发活动,而线段的虚线箭头代表验证与有效性检测活动。参照自ISO 26262的「模型演化」则以圆点(…)虚线箭头表示。



图2 : 使用Simulink进行ISO 26262软体开发与验证的流程。
图2 : 使用Simulink进行ISO 26262软体开发与验证的流程。

需求开发

你可以透过编写功能和安全需求来展开安全相关的开发流程。 ISO 26262建议可以利用「在软体架构设计和软体安全性需求之间的双向可追踪性」来验证软体架构设计。为了达成这项任务,你可以使用Simulink需求管理工具(Simulink Requirements)来编写需求,并在模型、测试、及程式码追踪需求的符合情况。 Simulink需求管理工具支援其他工具的双向追踪,包含MicrosoftR WordR、Microsoft ExcelR、以及IBMR RationalR DOORSR。在Simulink需求管理工具里面可以进行需求的实现和验证状态的监控与管理。需求连结也会在接下来产生的程式码出现(图3)。



图3 : Simulink内的需求规格。
图3 : Simulink内的需求规格。

建立设计模型

如同在「ISO 26262与模型化基础设计」段落所提,ISO 26262描述了功能模型从高阶可执行规格到准备拿来产生产品程式码的细节设计之间的演化。传统的修改和精炼包含了:


* 利用Simulink控制模块组(Simulink Control Design)的离散化工具,将模块从连续时间(S domain)转换为离散时间(Z domain)。


* 利用定点设计工具箱(Fixed-Point Designer),将资料从双重精确度转换为单精确度或定点资料。


* 利用事件导向系统模拟软体(StateflowR),加上诊断、模式逻辑、状态机、以及排程。


针对ASIL B到D,ISO 26262强烈建议使用模型化准则,于此,你可以使用Simulink提供的MAAB Style Guidelines [4]和High Integrity Guidelines for ISO 26262。这两种准则都可以透过Simulink验证标准检测工具(Simulink Check)自动检查。它可以在特定议题加上旗帜标示,例如插入的模块尚未完成、编辑中等等。你也可以加入自己的准则和检查。


产生程式码

ISO 26262指明「软体单元的实现包含开源程式码的产生以及目标程式码的编译」。为了达到这个目的,你可以使用嵌入式程式码转码器(Embedded CoderR)来产生C、C++程式码,并从Simulink模型产生你的AUTOSAR程式码。这些程式码遵从MISRA CR:2012自动程式码准则[5]。 ISO 26262提到,模型化基础设计和手动编写程式码的程式码准则可能不同,并以MISRAR作为范例。


IEC安全验证套装组提供嵌入式程式码转码器在C、C++、和AUTOSAR的工具资格认证支援(包含ASIL A-D)。其TUV SUD报告声明:


嵌入式程式码转码器符合ISO 26262于工具支援和自动化之需求。


嵌入式程式码转码器通常适用于以下三种情况之其中一种:


1.为用于产生产品程式码之模型产生C程式码


2.为用于产生产品程式码之模型之AUTOSAR应用软体元件产生C程式码与描述文件


3.为用于产生产品程式码之模型产生C++程式码


嵌入式程式码转码器提供选项,以进行程式码在记忆体和速度上面的优化。除此之外,你可以产生利用硬体加速器,例如ARM和Intel的SIMD的处理器专用的优化方式。你也可以利用ISO 26262描述的模型到程式码(model-to-code)、处理器回圈(processor-in-the-loop,PIL)测试验证,经过优化的程式码是否符合模拟结果的规定误差范围。


可执行目标程式码会以你的编译器和连结器从开源程式码产生。 IEC安全验证套装组内的工作流程,支援转码器、编译器、以及处理器的优化。只要是PIL测试会被用来验证可执行目标程式码,这项支援对于大量生产的ECUs非常重要。


设计验证

ISO 26262建议了几种静态和动态方法来验证软体设计与实现,包括单元及整合层级的活动。针对模型化基础设计,它提到「依据软体开发流程,测试目标可以是由模型导出的程式码或者模型本身」。


Simulink测试工具箱(Simulink Test)在Simulink环境为ISO 26262的验证和有效性检测活动提供了一个架构。你可以使用它来为模型和从模型产生程式码来编写、管理、以及执行系统的、以模拟为基础的测试。图4为一个测试序列和估测模块的范例。



图4 : 建模与编写复杂测试情境的Simulink测试序列和估测模块。
图4 : 建模与编写复杂测试情境的Simulink测试序列和估测模块。

IEC Certification Kit (for ISO 26262)的TUV SUD报告书厘清了Simulink测试工具箱的角色,在于帮助验证和有效性检测的自动化:


[Simulink测试工具箱]


让Simulink模型与产生的程式码的核心验证与有效性检测活动得以自动化。接下来的事件反映出依据功能安全标准ISO 26262在软体开发流程的必要活动:


* Simulink模型的测试开发与执行


* 模型与程式码之间背向(back-to-back)测试的测试开发与执行


* 测试结果估测


* 产生测试报告


* 需求与测试案例之间的可追踪性鉴定


ISO 26262建议以结构覆盖度分析来判断测试完整性及鉴定不在计画中的功能性。它列出三种方法来增加严谨程度,后面两种方法非常建议ASIL-D等级使用。


* 陈述覆盖度


* 分支覆盖度


* MC/DC覆盖度


标准中提到模型化基础设计,「可以在模型层级以类似的结构覆盖度量来执行模型的覆盖分析」。它继续指出,如果结构覆盖度不足,「应再增加制定其他测试案例或提出理由」。


Simulink程式码覆盖度测试工具(Simulink Coverage)为模型和产生的程式码提供了结构覆盖,而且可以很容易地利用Simulink测试工具箱执行测试。如果你的模型覆盖不足,则可以使用Simulink设计验证工具(Simulink Design Verifier)来自动产生另外的测试案例以达到要求的覆盖程度。它内含一个度量仪表板来衡量专案的品质,并满足ISO 26262在「复杂性低且软体元件与介面规模有限的执行」要求(图5)。



图5 : 度量仪表板显示了模型指南的遵照程度。
图5 : 度量仪表板显示了模型指南的遵照程度。

IEC安全验证套装组提供工具资格认证支援,包含Simulink验证标准检测工具、Simulink程式码覆盖度测试工具(包含模型与程式码的覆盖度)、Simulink设计验证工具、Simulink测试工具箱的TUV SUD认证与报告。


程式码验证

ISO 26262为软体设计和实现的验证提供了几种选择。在IEC安全验证套装组描述的第一种方法能够允许有限的追踪检查,来侦测生成的程式码中不在预期内的功能,像是程式码并未追踪至模块或讯号。这个套装组为了这个目的自动产生一个追踪矩阵。或者,也可以在软体回圈(software-in-the-loop,SIL)测试阶段利用Simulink程式码覆盖度测试工具比较模型覆盖与程式码覆盖,或使用Simulink程式码检查器(Simulink Code Inspector?)。


最后,可以透过Polyspace查错器(Polyspace Bug Finder)检查是否遵照了MISRA。使用MISRA检查与程式码覆盖分析对混合了自动产生程式码和手写程式码软体的专案特别有帮助。再更严谨一点,还可以使用Polyspace程式码验证器(Polyspace Code Prover)来证实,程式码不会出现像是除以零这种执行阶段错误(run-time errors)。


IEC安全验证套装组提供工具认证支援,Polyspace产品有TUV SUD的认证和报告。


在编译及产生可执行程式码之后,在目标处理器上执行程式码时,可以利用PIL测试来重复利用模型测试(图6)。



图6 : 嵌入式处理器的PIL范例
图6 : 嵌入式处理器的PIL范例

ISO 26262强烈建议ASILs C与D采用背向测试。它指出在一个具代表性的目标硬体环境测试的重要性,并强调察觉测试环境与硬体环境之间差异的重要性:


测试环境及目标环境的差异可能在开源程式码与目标程式码出现,比如,资料文字与处理器显示文字的位元宽度不同。


不过每一位电脑工程师都应该要知道[6],在平台之间存在许多潜在的数值差异,特别是浮点资料。有的差异在开始时十分细微,但却会累积、增长,尤其是在回馈控制系统。因此ISO 26262列出几种背向测试的回圈方法:


软体单元测试可以在不同环境执行,例如:


—模型回圈测试


—软体回圈测试


—处理器回圈测试


—硬体回圈测试


Simulink测试工具箱可以将回圈测试自动化,包含透过嵌入式程式码转码器进行SIL与PIL,以及透过Simulink即时控制工具(Simulink Real-Time)进行HIL,并经由Simulink程式码覆盖度测试工具,提供包含覆盖度量的pass/fail报告。


工具资格认证

ISO 26262-8描述了其它的过程,包含版本控管、结构管理、以及文件。这些过程可分别由Simulink Projects、Simulink模型差分化与合并、以及Simulink报告产生器支援。


这项标准也提供了工具资格认证指南。它不允许工具供应商认证自己的工具,而是要使用者为特定的专案进行工具认证。 IEC安全验证套装组可以藉由提供典型的使用案例、参考工作流程、产品分级分析、软体工具文件、工具认证报告、以及有效性检测报告来有效地预先验证工具。


TUV SUD审核并稽查MathWorks工具开发与品质流程,以及错误回报能力,并且认证了每个产品版本的结果。 IEC安全验证套装组包含这些在遵循适当验证与有效性检测工作流程时所需要的TUV SUD认证和报告。这一个套装组如同文章稍早所提,依据典型的工具使用案例提供了参考工作流程。


IEC安全验证套装组提供更多细节资讯,包含映射ISO 26262目标于Simulink所支援的能力(图7)。



图7 : 节录自IEC安全验证套装组的ISO 26262-to-Simulink映射
图7 : 节录自IEC安全验证套装组的ISO 26262-to-Simulink映射

请注意使用经过认证的工具并不保证在考量中的软体或系统的安全性。


(本文由钛思科技提供;作者Tom Erkkinen任职于MathWorks公司)


参考文献

[1] ISO 26262道路车辆 - 功能安全


[2] Nancy G. Leveson, Engineering a Safer World, Systems Thinking Applied to Safety


[3] ISO 26262-6 - 第6部分:软件级别的产品开发


[4] MAAB Style Guidelines


[5] MISRA C:2012


[6] David Goldberg, What Every Computer Scientist Should know about Floating-Point Arithmetic


[7] ISO 26262道路车辆 - 功能安全


[8] Nancy G. Leveson, Engineering a Safer World, Systems Thinking Applied to Safety


[9] ISO 26262-6 - 第6部分:软件级别的产品开发


[10] MAAB Style Guidelines


[11] MISRA C:2012


[12] David Goldberg, What Every Computer Scientist Should know about Floating-Point Arithmetic


相关文章
智慧家居大步走 Matter实现更好体验与可靠连结
车载软体数量剧增 SDV硬体平台方兴未艾
采用DSC和MCU确保嵌入式系统安全
低功耗MCU释放物联网潜力 加速智慧家庭成形
AI赋能智慧边缘 行动运算处理器的时代革命
comments powered by Disqus
相关讨论
  相关新闻
» 工研院推升全球AIoT产业链结 携手Arm创建世界级系统验证中心
» 英特尔携手合作夥伴 助力AI PC创作新世代
» Arm发布车用技术及运算子系统路径图 将加速AI车辆上市时程
» Ceva加入Arm Total Design 加速开发无线基础设施的端到端5G SoC
» Intel成立独立FPGA公司Altera


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK83T8FGQHSSTACUK4
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw