如何使用MISRA改进嵌入式编程

创提信息
2022/07/27

分享到

嵌入式编程主要用于驱动安装在大型设备(如汽车、飞机或医疗设备)旨在执行特定的专用功能的系统。
 
每个专用功能都是通过嵌入式编程实现的。这些代码必须是可靠且无误的,因为任何漏洞都可能对嵌入式系统的安全造成毁灭性的后果。因此,应用像MISRA这样的编码规范来确保代码的可靠性和高质量是非常必要的。
 
在这里,我们将阐释如何使用MISRA改进嵌入式编程。


本文将包含如下几个部分:
 
     • 为什么可靠的代码对嵌入式编程至关重要
 
     • 2种适用于嵌入式编程和系统的关键编程语言
 
     • 如何使用MISRA改进嵌入式编程
 
     • 如何使用MISRA实现嵌入式编程合规


为什么可靠的代码对嵌入式编程至关重要
 
世界上最重要的系统都使用嵌入式软件来实现功能。
 
嵌入式软件用于:
 
    • 人们每天驾驶的汽车。
 
    • 维持生命的心脏监护器(和其他医疗设备)。
 
    • 环球飞行的飞机。
 
编码错误不容妥协。
 
这就是嵌入式编程需要遵循指南的原因。这确保了代码是安全、可靠的。但是,这些指南可能会因所使用的编程语言而有所不同。


2种适用于嵌入式编程和系统的关键编程语言
 
大多数嵌入式系统是使用C和C++语言编写程序的。
 
这是因为C和C++支持对硬件进行低级别控制。C和C++支持嵌入式软件的复杂性。同时,使用C和C++语言可以生成高效的代码。
 
另外,从事C/C++研发的程序员人数众多。他们能够维护最佳的性能——这是嵌入式系统的关键。


如何使用MISRA改进嵌入式编程
 
许多嵌入式行业都有严格的安全合规标准。这些标准通常需要使用编码规范。
 
嵌入式软件有几种可用于C和C++的不同的编码规范。但MISRA®是最值得信赖的编码规范之一。MISRA规则可以确保代码符合行业标准,帮助您减少圈复杂度,并提高代码的质量。
 
下面是不同行业的开发人员如何使用MISRA提高代码质量的三个示例。


1. 使用MISRA提供更好的嵌入式汽车代码
 
汽车开发人员信赖MISRA以开发出更好的代码。这是因为MISRA是汽车行业的质量与合规基准。
 
“MISRA被公认为事实上的基准,并已被日本整个汽车行业采用,横跨从主机厂(OEM)到芯片的整个供应链。”— Socionext


ISO 26262合规
 
汽车行业需要遵循ISO 26262功能安全标准。
 
ISO 26262有严格的汽车安全完整性等级(Automotive Safety Integrity Levels, 简称ASIL)要求——包括四个级别,即 A-D。ISO 26262建议使用编码规范来确保符合ASIL,并重点强调了MISRA编码规范。
 
Protean Electric使用Helix QAC应用MISRA C规则。这有助于他们遵循ISO 26262。另外,Helix QAC还能发现其他工具忽略的问题。所以,Protean不必担心漏报。


一致的代码质量
 
Delphi Automotive也使用Helix QAC应用MISRA C规则。这有助于开发人员采用最佳编码实践,确保所有开发人员的代码质量保持一致性——而不管个人的经验如何。


2. 使用MISRA提供更好的嵌入式轨道交通代码
 
轨道交通系统开发人员也相信MISRA能提供更好的代码。
 
“MISRA显然是最合适的选择。MISRA最初由汽车行业创立,是创立时间最长、最著名的规则之一,而且已在多个安全相关市场得到了广泛的采用。”— Viveris Technologies


EN 50128合规
 
轨道交通行业需要遵循EN 50128功能安全标准。
 
EN 50128软件安全完整性等级(Software Safety Integrity Levels, 简称SSIL)包括五个级别,即SSIL0-SSIL4。若要符合所有的SSIL,建议使用编码规范——但要符合SSIL3和SSIL4,则必须使用编码规范。
 
编码规范必须能够:
 
    • 防止使用未定义或未指明的行为。
 
    • 防止程序员犯常见的错误。
 
    • 限制某些架构的使用。
 
    • 消除潜在的歧义。
 
    • 限制库的使用。
 
MISRA能满足这些需求,并帮助确保软件的质量。
 
Viveris Technologies使用Helix QAC应用MISRA规则并满足EN 50128的合规要求。这确保了其无人驾驶列车——Lyon Metro——是安全、可靠的。


准确的诊断
 
对于Viveris来说,准确的代码诊断与合规一样重要。
 
通过使用Helix QAC,Viveris获得了比使用其他工具更好的MISRA C规则覆盖率。真正的问题得以确定并修复了,误报也更少了。
 
因此,Viveris的代码质量更好,开发效率更高。


3. 使用MISRA开发更好的嵌入式航空航天代码
 
航空航天开发人员也信赖MISRA以开发更好的代码。
 
MISRA规则集是由一批全球顶级编码专家制定的,适用于(并广泛应用于)任务关键型和安全关键型行业,包括航空航天。


DO-178C合规
 
航空航天行业需要遵循DO-178C功能安全标准。
 
DO-178C包括五个安全级别——A-E。符合这些安全级别需要遵循一定的编码规范,比如MISRA。
 
Selex ES使用MISRA C++作为编码规范,并使用Helix QAC来确保符合MSIRA。


质量—甚至在自动生成的代码中
 
Selex ES还使用Helix QAC和MISRA C、C++规则,以确保其嵌入式编程的质量。Selex ES甚至在自动生成的代码中使用Helix QAC和MISRA C、C++规则。这意味着他们可以确保嵌入式软件的质量并加快开发的速度。


如何使用MISRA实现嵌入式编程合规
 
为了符合MISRA编码规范,您需要应用MISRA规则。这可以在代码审查期间人工完成,也可以使用静态代码分析工具自动完成。
 
然而,静态代码分析工具却不尽相同。对于MISRA,一些工具比其他工具更准确。而Helix QAC是适用于MISRA C和C++的最准确的静态代码分析工具。
 
若您想深入了解适用于MISRA的Helix QAC,立刻注册申请免费试用吧。