2014年11月19日 诊断

在IEC61508安全关键系统中使用模拟和仿真——与Andreas Buchwieser的访谈

由雅各布Engblom

jakob-engblom-intro-picture

在风河公司,我们经常与客户打交道,他们使用各种形式的安全关键系统。当今世界上许多最重要的系统都由风河操作系统提供动力,并使用风河工具开发。因此,我们在如何开发安全关键系统方面建立了相当多的专业知识。在这篇博文中,我采访了Andreas Buchwieser,他与我们的运输、工业自动化、过程控制、汽车和医疗系统的安全关键操作系统平台合作。我们将探索如何模拟和西米奇可用于为这些区域开发系统。重要的是要注意,航空航天是一个不同的市场,具有不同的要求,流程和标准,从这里讨论的不同 - 而且SIMICS在该市场上看到了很多使用,如以前讨论过

Jakob Engblom (JE):请介绍一下你自己!

Andreas Buchwieser (AB)

andreas-buchwieser-small

我是Andreas Buchwierser,产品管理总监,管理工业,医疗,汽车和运输市场的安全组合和认证。在2006年加入Wind River之前,自2003年以来,我一直担任国防和汽车行业安全相关系统的建筑顾问。随着Wind River,我一直负责开发工业设备的各种项目(IEC61508,IEC60880),运输系统(EN50128,IEC 62279)和医疗设备(IEC62304)。代表Wind River,我也与TÜV南德,德里莱茵兰德(TÜV莱茵)和德里·诺德等认证机构密切合作,以及LLOYDS登记轨道。

JE:那么你对在安全关键系统的开发中使用模拟有什么想法?

阿瑟:仿真、建模和原型设计是安全关键系统开发的组成部分:它们用于补充验证过程,验证软件体系结构设计,用于实现功能的概念捕获(开/闭环控制,监控),以及用于模拟真实的物理系统行为。

像IEC 61508, EN 50128和ISO 26262这样的标准强烈推荐模拟技术。我一直在与各种认证机构讨论模拟,并且对经过认证的系统使用模拟非常感兴趣。

我看到三个主要领域在认证项目期间可以成为一个伟大的资产 - 这个名单可能并非详尽无遗。一个是在诊断软件测试期间使用故障注入。另一种是早期验证要求,在他们成为真正的问题或错误之前找到问题。第三个是在模块测试期间增加覆盖度量。

ab-pullout

JE:我碰巧喜欢错误注入,所以让我们从这个主题开始。您对故障注入和安全标准有什么看法?

阿瑟:与安全相关的设备必须实现内置功能,以控制运行中的故障。这些故障通常是随机的硬件故障。为了控制随机硬件故障,必须实施一些措施——即所谓的“诊断”。这些诊断是经过认证的软件的一部分,必须经过与计算出的安全完整性级别(SIL)相对应的严格验证。事实上,验证诊断软件是安全或认证项目中最困难的部分之一。这类软件用于诊断硬件的问题,检测问题,阻止问题扩散,并将整个系统带到安全状态。这是很难测试的。

安全标准中高度推荐的验证技术之一是故障注入。

JE:在没有模拟器的情况下如何测试验证软件?

阿瑟:你如何让硬件以一种可控的方式失效,以你希望它失效的方式失效,你如何重复它?今天,您通常使用调试器。当使用调试器验证诊断时,有两个问题:

  • 调试模式下的可执行文件与发布版本不一样
  • 识别地址和符号很麻烦
  • 程序执行必须暂停
  • 没有寄存器和操作码的可追溯性

使用Simics,您可以模拟处理器和目标环境,并使用软件发布版本将故障引入系统。

JE:你自己用过Simics进行故障注入吗?

阿瑟:现在我作为一个功能安全经理开发VxWorks 7安全配置文件。为了保持VxWorks 7安全配置文件的模块化和可伸缩,我们只认证内核。风河还将提供内核的补充部分:支持一些架构,如PPC-, Intel-和ARM处理器。该体系结构支持将具有集成的处理器诊断,这对我们的客户具有很高的价值。我们正在研究如何将Simics确定为一种适合用于验证这些集成处理器诊断的工具,这是我前面提到的三个领域之一。

JE:关于用模拟器进行故障注入和诊断测试的标准有什么规定?

阿瑟:安全标准强烈推荐模拟作为安全验证的一种技术。看看IEC 61508-7, C.5.19节如何描述仿真如下:

“创建一个系统,仅用于测试目的,它模仿控制下的设备(EUC)的行为。

模拟可能只是软件,也可能是软件和硬件的组合。应当

  • 提供所有被测试系统的输入,这些输入将在系统安装时存在,
  • 以忠实地代表受控设备的方式响应系统的输出,
  • 准备好操作输入,以提供被测系统需要应对的任何扰动。

当软件被测试时,模拟可能是目标硬件及其输入和输出的模拟。”

正在用Simics方法测试的软件是诊断,“受控设备”是所用的处理器。使用Simics有助于在正常操作、预期发生的情况和需要系统操作的不希望的情况下执行验证。Simics很适合这种工作方式。

杰:你会具体采用故障注射模拟?

阿瑟:让我们使用一个简单的例子:IEC 61508要求检测由CPU寄存器和/或内部RAM中的软错误引起的信息变化,以声明中等诊断覆盖率。现在您需要验证所实现的诊断是否正确工作。使用Simics,您只需修改寄存器中的信息,并检查诊断程序是否检测到此“故障”并启动指定的系统反应。

JE:那么需求验证呢?

阿瑟:这与原型开发有关。大多数问题或bug都来自于没有很好地指定需求这一事实。您可以通过开发原型并使用原型来早期验证需求来解决这个问题。使用能够模拟整个系统的系统模拟器,对于这样的早期原型非常有用。通过使用虚拟硬件,您可以深入了解软件和硬件,以及依赖和交互是如何工作的。在IEC 61508标准中,使用仿真的原型被称为一种用软件环境测试软件并更好地理解需求的方法:

原型可以用于任何阶段,以引出需求,或获得需求及其结果的更详细视图。

IEC 61 508:验证和验证工具,如模拟器。

软件应模拟:

1)正常运行时出现的输入信号;

2)预期的出现;

3)要求系统动作的不期望条件;

功能和黑盒测试:原型动画。”

JE:当IEC 61508提到原型设计时,它以什么方式与认证相关?

阿瑟:安全标准要求通过功能测试和黑盒测试来验证软件体系结构,其中包括与底层硬件的交互。对于开发人员来说,在项目的早期阶段了解资源需求是至关重要的;可靠的估计可以通过原型得到。一个可靠的Simics模型有助于检查针对任何给定约束实现系统的可行性。

JE:听起来像是在早期阶段就完成了原型设计?

阿瑟:是的。这在设计流程的早期就开始了。让我们举一个简单的例子:假设您已经选择了一个处理器和一定数量的RAM,并且您必须定期检查RAM是否出错。通常,您会在过程的后期进行此操作。但是,如果系统一直忙于RAM检查怎么办?使用模拟器,您可以看到RAM检查在早期阶段是否完全可行。你需要改变到一个更快的处理器或改变到ECC RAM,以消除对RAM检查的需要。

这与错误注入不同,后者是在项目结束时验证所实现的内容是否真正有效时出现的。

JE:您在我们开始讨论时提到的最后一个问题是覆盖率指标的增加。这是什么意思?

阿瑟:安全标准强烈推荐所谓的“基于结构的测试”来测试软件模块。目标是练习很大比例的程序代码。代码覆盖率的百分比是不同的,取决于所需的严格程度,但对于高关键的软件,以下需求通常适用:

  • 结构测试覆盖率(语句)100%
  • 结构测试覆盖率(分支)100%
  • 结构测试覆盖率(条件,MC/DC) 100%

软件在某些点上与硬件通信,并对硬件事件作出反应。这使得达到安全标准的覆盖要求非常麻烦,如果不是不可能的话。测试人员不能轻易触发导致软件执行程序代码的特定部分的特定硬件事件。请记住,大部分模块测试仅在主机环境上完成,而不是在真正的硬件上。结果是覆盖率不能满足100%的需求,测试人员需要通过添加论证语句来解决这个问题。这承担了一些认证风险,因为它可能不会被评审人员接受。Simics将极大地帮助增加结果覆盖率,因为它可以模拟导致某些程序代码被执行的特定硬件事件。

JE:有意义,我们已经看到许多用户使用Simics来强制稀有事件或极端条件发生,以测试这些事件触发的代码。

尽管如此,人们仍然担心人们是如何知道你与素质的观察到的方式与现实世界有关。您对此问题的看法是什么?

阿瑟:我们认为Simics是一个T2工具,它支持设计或可执行代码的测试或验证,其中工具中的错误可能无法揭示缺陷,但不能直接在可执行软件中产生错误。在IEC 61508的第3部分中有一个章节,7.4.4,它提供了如何执行工具确认的指导。Simics的设置必须符合安全标准要求,这将由风河公司和用户共同完成。

JE:这听起来像是标准所采用的一种实用和务实的方法。这似乎意味着可以选择Simics作为IEC 61508标准下软件开发活动的连贯部分。还需要其他什么东西来启用它吗?

阿瑟:我们已经与认证机构就如何使用Simics并将其作为T2工具进行了几次讨论。验证该模型的一种方法是在真实的处理器上执行英特尔等供应商的现有处理器测试列表,并将结果与在Simics模型上执行的相同测试进行比较。当然,这种方法必须与认证机构达成一致。由于安全项目通常使用已建立的可访问处理器(而不是全新的处理器),因此可以与真实的硬件进行比较,这有利于这种方法。

JE:谢谢,这非常有趣,我确实学到了一些关于安全关键系统的新知识,以及Simics如何应用于他们的开发和测试。

更多相关话题的阅读,请参阅之前的一些博客文章:

以前的数据是物联网的比特币
下一个小鬼自由贸易区