软件的功能安全由IEC 61508第3部分涵盖。通常,在uC,uP和DSP上运行的软件是由购买我们芯片的应用程序人员编写的。但是,在集成电路上运行并由ADI公司等IC供应商提供的软件呢?
首先,什么是软件,我在下面展示了一些定义,我认为无论您将其称为软件,固件还是嵌入式软件,都适用相同的规则并不重要,这些规则通常来自IEC 61508-3。
在“安全关键系统的嵌入式软件开发”一书中找到了更好的软件定义,其中指出“问软件是什么似乎很奇怪 - 直觉上人们觉得他们可以区分软件和硬件。如果你把它放在脚上时很痛,那就是硬件”。
由您的 IC 供应商提供的与集成电路相关的软件类型包括:
引导加载程序/引导ROM软件
使用片上uC或DSP而不是固定功能逻辑实现的“逻辑块”
软件测试库
协议堆栈或驱动程序库
用于演示IC如何工作的示例代码
对于IEC 61508-3范围以上的所有软件类型,似乎清楚地表明IEC 61508-3适用,但让我们更详细地讨论它们;与功能安全一样,总是有“如果”和“但是”,答案很少是/否。
引导加载程序:
引导加载程序是当uC或DSP上电并配置IC时运行的软件的一个名称,可能通过更改RAM大小,将校准系数从闪存移动到RAM,并可能实施协议以允许通过串行端口对闪存进行编程。
IEC 61508-3显然适用于此类规范,但可以提出论据来减轻合规负担。此类参数可能包括:
代码简单,决策点少,其正确性可以通过100%测试来验证,而无需了解所使用的开发过程
代码在应用程序代码之前运行,并且应用程序代码无法跳回到代码中,因此不会干扰应用程序代码
但无论哪种方式,这仍然意味着IEC 61508-3适用,并且应记录您的功能安全论据,以证明为开发该代码而降低SIL或没有SIL。
软件测试库:
STL(软件测试库)是一段代码,可能由IC供应商或第三方提供,用于对其运行的uC / DSP进行诊断覆盖。您可以尝试争辩说,由于STL的故障不会直接导致安全功能的故障,因此此类软件的SIL可以为0或至少小于使用运行STL的IC的安全功能的SIL。然而,作者认为,很难说STL独立于它正在检查的硬件,并且独立于uC中运行的任何其他安全相关软件。因此,STL可能需要开发为与依赖它的安全功能相同的SIL。但是,总是有可能提出相反的论点。
使用片上uC或DSP实现的逻辑块:
如果包含该代码的IC是安全相关系统的一部分,则需要根据IEC 61508-3开发代码,除非对原因提出接受且有效的论据。无论代码存储在闪存,OTP,ROM还是RAM中,它仍然是安全系统中的软件。可能降低合规性要求的参数包括
一些外部安全监视器不依赖于确保安全的软件
通过单独测试来验证代码的可能性(如果是简单的代码)
在系统级使用分集来降低任何片上代码的SIL。
协议栈和库:
此处的假设是最终用户无法使用源代码。在这种情况下,由于软件在安全系统中运行,因此通常需要将其开发为与应用软件相同的SIL。此处的例外情况可能是,如果协议是网络协议堆栈并且是黑色通道的一部分,在这种情况下,不需要将其开发为 SIL。然而,将堆栈实施到其系统中的人员必须确保堆栈与其系统中的任何其他安全相关软件(包括SCL(安全通信层))或所有软件之间具有更高的SIL之间足够的独立性。
用于演示IC如何编程或工作的示例代码:
这里的假设是此类代码以源代码格式提供。因此,IC开发人员无需按照IEC 61508-3开发此类代码。将IC设计到其系统中的人员应将IEC 61508-3应用于代码本身。
总之,安全相关系统中的软件,无论是由IC供应商还是IC用户开发,都需要按照IEC 61508-3进行开发,或者关于IEC 61508为什么不适用或为什么可以根据有效的记录安全论据进行定制。特别是,使用相同的冗余不会减少此类软件所需的 SIL。
审核编辑:郭婷
-
dsp
+关注
关注
553文章
7984浏览量
348709 -
源代码
+关注
关注
96文章
2945浏览量
66725 -
IEC
+关注
关注
2文章
200浏览量
28881
发布评论请先 登录
相关推荐
评论