历史上的今天
返回首页

历史上的今天

今天是:2024年11月12日(星期二)

正在发生

2021年11月12日 | 充分应用功能安全性开发环境中集成的代码分析工具

2021-11-12 来源:EEWORLD

目前,越来越多的汽车、工业和其他应用都在强调功能安全性(functional safety),其开发过程也需要先进和完善的工具链支持,以及一些重要的开发工具使用经验。作为功能安全性产品的研发工程师,一定听说过类似MISRA C的静态代码检查,以及其他一些代码标准和自动化检查工具。但是,在日常的开发流程中,仅仅知道这些标准并不代表着能够高效地让代码符合代码标准。


本文将从代码标准本身、以及配套的检查工具如何使用及流程两方面,通过以业界常见的IAR开发工具链为例来提供一些思路,解释为什么在开发需要安全认证的产品时,推荐使用其自带的代码分析工具。在实际应用中,针对Renesas RX和Arm系列内核,C-STAT 静态代码分析和 C-RUN 运行时分析组件往往都作为插件,被添加到IAR Embedded Workbench开发环境中。


功能安全标准与代码分析


在 IEC 61508 2.0 版的第 3 部分中,对安全类系统的软件作出了规定,要求必须采用可靠良好的开发流程。例如,第 7 部分“技术和措施概述”的第 C.4.2 节中指出要使用编程语言子集:


目的:降低引入编程错误的概率,并增加发现残余错误的概率。


描述:对编程语言进行检查,比如使用静态分析法来确定容易出错或难以分析的编程结构。然后定义编程语言子集来排除此类编程结构。


第 C.4.2 节还指出,如果软件的安全完整性等级 (SIL) 高于 1,则不建议在未设定此类限制的情况下使用 C 语言进行编程。换言之,如果您想使用C/C++ 软件开发 SIL 2-4 认证系统,则基本上都需要使用静态分析工具。


类似地,对于运行时分析,第 7 部分“技术和措施概述”的第 B.6.5 节“动态分析和测试”指出:


目的:通过对即将完成的原型进行动态行为检查,检测是否存在规范失效问题。

描述:对安全类系统进行动态分析的方法是,在安全类系统的基本可运行原型上,运行目标环境中的典型输入数据。如果经观察,安全类系统的行为符合所要求的行为,则表明系统通过了分析检查。如果安全类系统出现任何失效问题,则必须予以纠正,然后重新分析新的可运行版本。


下面我们来看看C-RUN是如何满足此类分析需求的:


C-RUN 是集成在编译器和 C-SPY 调试器中的工具。借助此工具,可在运行时观察可执行代码,并报告代码在运行时出现的异常行为。C-RUN 会执行算术检查、边界检查和堆检查,并且可在 IAR Embedded Workbench 的工程设置中轻松进行配置:

 

image.png?imageView2/2/w/550


运行时分析工具的一般特点是误报率低,C-RUN 也不例外。换言之,C-RUN 报告的错误很可能是真的错误,因为执行和分析的均为真实代码,并且是在真实的目标系统上进行的。C-RUN 可查看有关应用程序状态的所有信息,并会报告实际发生的错误。尽管如此,在执行过程中,您可设置适当的 C-SPY 消息规则,让检测到的错误通过检查,如下图所示。

 

image.png?imageView2/2/w/550


不过,运行时分析也有一些不足。首先,使用这种方法时,通常要到软件开发流程的后期才能发现问题,因为运行时分析工具需要使用代码的可执行文件。此外,运行时分析仅对实际运行的应用程序部分进行检查。如果无法触发所有条件使得应用程序的全部代码都得到分析,则最终将有部分代码处于未经测试的状态。尽管如此,C-RUN 仍可提供非常有价值的反馈,并且由于其与 IAR Embedded Workbench 深度集成,所以非常易用。


接下来说说 C-STAT,这是一种静态分析工具,可通过执行一项或多项规则检查来发现是否存在偏离编码规则的问题。C-STAT 检查代码是否符合 MISRA C:2012、MISRA C++:2008 和 MISRA C:2004 规定的规则,以及对应 CWE 和 CERT C/C++ 所涵盖的各种问题的检查。跟 C-RUN 一样,在 IAR Embedded Workbench 的工程设置中也可轻松地对 C-STAT 进行配置。

 

image.png?imageView2/2/w/550


C-RUN 不同的是,C-STAT 无需实际运行应用程序,即可检查代码是否存在缺陷。它能在不依赖程序的执行路径及所使用的数据集的情况下找到错误。C-STAT 可在软件开发流程的早期发现错误和缺陷,实际上从开发的第 1 天就可以使用,而且不会影响系统性能。

虽然市面上有几款独立的静态分析工具可供 C/C++ 开发人员使用,但C-STAT 的一大优势在于可直接投入使用,无需进行繁琐的配置。而且,它能理解和分析专为高效嵌入式编程设计的各种IARSystems特定的C/C++ 语言结构。将 C-STAT 集成到日常开发中,就可以轻松地检查代码是否符合大部分重要编码规则。这样就能为后期的测试和调试省下更多的时间和资源。


C-STAT 可集成到 IAR Embedded Workbench IDE 中,与常规的构建工具一样简单易用:

 

image.png?imageView2/2/w/550


对于检测到的每个错误,在线帮助系统中都会有相应的描述,按下 F1,就可看到对应的规则说明和相应的示例代码来说明如何满足该规则:

 

image.png?imageView2/2/w/550


可生成 HTML 格式的报告,用以记录测试结果:

 

image.png?imageView2/2/w/550


结语


回到本文第一部分谈到的功能安全标准,来看看上述工具如何帮助您的软件达到规定标准。


第 7 部分“技术和措施概述”的第 C.4.2 节中指出要使用编程语言子集:对编程语言进行检查,比如使用静态分析法来确定容易出错或难以分析的编程结构。然后定义编程语言子集来排除此类编程结构。


对此,C-STAT 能够派上用场,可检查代码是否符合 MISRA 规定的规则。如前所述,如果想使用 C/C++ 软件开发 SIL 2-4 认证系统,则确实需要使用静态分析工具。


再来看第 B.6.5 节“动态分析和测试”:对安全类系统进行动态分析的方法是,在安全类系统的基本可运行原型上,运行目标环境中的典型输入数据。如果经观察,安全类系统的行为符合所要求的行为,则表明系统通过了分析检查。如果安全类系统出现任何失效问题,则必须予以纠正,然后重新分析新的可运行版本。


用于运行时分析的 C-RUN 虽然无法全面检查整个安全类系统中的所有动态行为,但它仍是一个非常好用的工具,至少能在安全类系统的软件部分中找到真实存在的和潜在的错误。需要记住的是,必须将安全概念与系统的危险失效率关联起来,而不仅仅是组件(如软件)的失效率。


用于运行时分析的 C-RUN 和用于静态分析的 C-STAT 是两类不同的代码质量分析工具,在安全类软件的开发中都非常有用,二者不形成竞争关系,而是构成优势互补。因此,IAR的C-RUN 和 C-STAT工具能为开发人员带来互补的代码检查能力,自然而然地集成到日常的开发流程中。在IAR的评估版工具中自带C-RUN和C-STAT插件,欢迎工程师朋友们试用。


推荐阅读

史海拾趣

DCCOM [ DC COMPONENTS ]公司的发展小趣事

随着公司规模的扩大和市场份额的提升,DCCOM开始注重品牌建设和市场推广。公司投入大量资金进行品牌宣传和市场推广,通过参加各种行业展会、举办技术研讨会等方式提高品牌知名度和影响力。这些举措使得DCCOM的品牌价值得到了显著提升。

Greenlee公司的发展小趣事

为了寻求新的增长点,GREEGOO公司开始尝试跨界合作。公司与一家知名汽车制造商达成合作协议,共同研发车载智能娱乐系统。通过整合双方在电子技术和汽车制造领域的优势资源,成功推出了多款具有创新性和竞争力的车载智能产品。这一跨界合作不仅为GREEGOO带来了新的业务增长点,还进一步提升了公司在电子行业中的影响力和地位。同时,也为公司未来的多元化发展奠定了坚实的基础。

请注意,以上故事均为虚构内容,旨在模拟“GREEGOO”公司可能的发展路径和故事。在实际的电子行业中,不同公司的发展经历和故事各不相同。

Fabrimex AG公司的发展小趣事

1979年,Fabrimex AG接管了ARCO-Solar(美国)的代表处,标志着公司正式进入光伏领域。这一举措为公司带来了新的增长点,并推动了相关产品的研发和生产。随着光伏技术的不断发展,Fabrimex AG在光伏领域逐渐取得了显著的成绩,为公司带来了可观的收益。

Agere System(LSI Logic)公司的发展小趣事

近年来,Fabrimex AG在品质管理和环境保护方面取得了显著的成绩。2016年,包括Fabrimex在内的整个WERAP集团均通过了ISO 9001:2015和ISO 14001:2015认证。这些认证不仅证明了公司在品质管理和环境保护方面的实力,还为公司赢得了更多客户的信任和认可。此外,公司还积极参与行业标准的制定和修订工作,推动行业的技术进步和发展。

这些故事只是Fabrimex AG在电子行业发展历程中的一部分,但它们足以展示公司在技术创新、市场拓展和品质提升方面的不懈努力。通过这些努力,Fabrimex AG在电子行业中逐渐崭露头角,成为了一家备受瞩目的企业。

Captive Fastener公司的发展小趣事

随着全球市场的不断扩大,Captive Fastener公司意识到国际合作的重要性。公司积极寻求与国际知名电子制造商的合作机会,通过提供高质量的紧固件产品和技术支持,成功打入国际市场。同时,公司还与国外同行开展技术交流与合作,不断提升自身的技术水平和市场竞争力。

巨盛电子(Chesen)公司的发展小趣事

巨盛电子(Chesen)自创立之初,就坚持将技术创新作为公司的核心竞争力。在电子行业迅速发展的背景下,公司投入大量资源进行研发,成功推出了一系列具有领先技术水平的电子产品。这些产品不仅满足了市场对于高品质、高性能电子产品的需求,还通过创新功能赢得了消费者的青睐。巨盛电子凭借技术创新,逐渐在电子行业中崭露头角,成为市场的领导者。

问答坊 | AI 解惑

常见传感器资料

本帖最后由 paulhyde 于 2014-9-15 03:35 编辑 在电子设计竞赛中,肯定少不了各种传感器的应用。下面我将传感器的资料收集如下。希望能够帮到大家。多多提出疑问和意见,大家共同讨论!  …

查看全部问答>

wang1jin带您从零学PCB设计8小时视频教程下载地址

wang1jin带你从零学PCB设计8小时视频教程 原创者:wang1jin 纳米盘下载,请大家下载前装一个纳米工具。再进行下载。 如果文件不能下载请联系wang1jin@126.com。 本视频教程欢迎大家免费传播,供大家学习使用。但不能用于赢取私利,如果有什 ...…

查看全部问答>

求可以和keil联合仿真的Proteus版本

请给出keil版本和Proteus版本以及下载地址,最好可以有怎么使用的具体操作步骤 另外Proteus要有破解的,我下了几次都没有破解文件而不能用 网上给的教程版本不一样,把我都搞晕了…

查看全部问答>

新手上路 skyeye模拟内核移植bootloader能用VIVI么?

老师留得思考题  没人鸟他 但我想尝试下    高手帮帮忙好吗?? 前不久用的u-boot 进行了一次内核移植 (用skyeye模拟的) 不知道 用vivi怎么来 在vivi文件夹内写 skyeye.conf要注意什么啊?? 谢谢了啊!!!…

查看全部问答>

请教关于FLASH

各位大侠:     我的板子现在是用的32M的nor flash : rc28f256j3c ,没有nand flash 由于FLASH太小,想换成一个64M的nor flash :rc28f256p33 我看目前的BSP---driver中并没有关于NOR flash的驱动 只有在eboot中有这样两个函数是关于FL ...…

查看全部问答>

在手机上使用的嵌入式office软件除了quickoffice还有其他的吗?

在手机上使用的嵌入式office软件除了quickoffice还有其他的吗?哪位大侠知道请回答一下。…

查看全部问答>

求OrCAD 原理图仿真技巧

;P ;P ;P [ 本帖最后由 ch0721 于 2010-11-30 00:10 编辑 ]…

查看全部问答>

uart2

各位高手: 我想请教下大家,我想使用omapl138(合众达产品)的uart2 我应该如何修改arm Linux 内核的配置? (能通过测试 使示波器看到波形)…

查看全部问答>

LinUx系统问题

菜鸟问下各位大师怎么查看cpU和操作系统的位…

查看全部问答>

求大神 求帮忙 数控直流电源设计

本帖最后由 paulhyde 于 2014-9-15 03:26 编辑 设计内容:1电路原理图2元件清单3实物制作4设计报告设计要求:1输出电压:范围0-9.9V,步进0.1V2纹波不大于10mV3输出电流:500mA4输出电压值由数码管显示  求大神 求帮忙  感激不尽  有 ...…

查看全部问答>