广告

充分应用功能安全性开发环境中集成的代码分析工具

2021-11-12 15:12:13 IAR 阅读:
本文将从代码标准本身、以及配套的检查工具如何使用及流程两方面,通过以业界常见的IAR开发工具链为例来提供一些思路,解释为什么在开发需要安全认证的产品时,推荐使用其自带的代码分析工具。

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

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

功能安全标准与代码分析

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

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

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

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

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

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

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

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

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

AR6ednc

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

AR6ednc

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

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

AR6ednc

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

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

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

AR6ednc

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

AR6ednc

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

AR6ednc

结语

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

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

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

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

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

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

(参考原文:Integrated code analysis in functional safety toolsAR6ednc

  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • 商务部暂停天然砂对台湾地区出口,台积电难受了 据EDN电子技术设计了解,商务部网站8月3日早晨8点发布最新消息,表示将从即日起暂停天然砂对台湾地区出口。不少网友认为暂停天然砂对台湾地区的出口,此举将严重影响台湾的建筑业,实则影响不仅仅如此。台湾地区天然砂进口量的90%以上来自大陆,而台湾芯片占台湾2021年出口额的34.8%。网友称商务部暂停天然砂对台湾地区出口是捏到了台湾半导体制造业的七寸。
  • 美国参议院批准价值2460亿美元的芯片法案 美国参议院周三通过立法,以超过 750 亿美元支持国内半导体产业。GlobalFoundries、英特尔、三星代工厂、德州仪器、台积电和其他在美国建立半导体制造设施的公司或将受益。
  • 空调也“怕热”?空调工作临界点到底是什么? 深圳最高气温突破40℃!很多网友戏称:这条命是空调给的,不敢走出空调房。但同时,这两天明显感觉空调动力不足了,以为家里的空调坏了。与此同时,关于格力空调“怕热”遭遇“空调工作临界点”罢工的成了网友关注的热点。
  • 林志颖驾特斯拉出车祸:特斯拉回应起火原因不明,网友质疑 据EDN电子技术设计了解,7月22日上午10时50分左右,林志颖驾驶特斯拉Model X,在路口处掉头后加速向前行驶,但在前方道路分叉口处,因不明原因突然偏离车道自撞指示杆,整辆车陷入火海。此事引起网友关注热议,特斯拉客服表示,暂不清楚起火原因,但车身没有特别容易起火的材质。但有台媒指出,林志颖最爱特斯拉的自动驾驶功能,这也引起了网友对事故是否与自动驾驶有关的猜测。
  • 售价将超50万美元,乔布斯的Apple-1原型机电路板长什么 这块在 1976 年由史蒂夫-沃兹尼亚克手工焊接的 Apple Computer A 印刷电路板被史蒂夫-乔布斯用来向保罗-特雷尔演示 Apple-1 电脑,后者是加州山景城 The Byte Shop 的老板。这台原型机在“苹果车库”里保存了很多年,然后在大约 30 年前由史蒂夫-乔布斯交给了它现在的主人。当时,乔布斯已被苹果公司赶走。乔布斯当时认为这个原型不是要供奉的东西,而是要被重新利用的东西。
  • 利用反极性MOSFET帮助555振荡器忽略电源和温度变化 恒定频率振荡器是555定时器的经典应用之一。然而,由于所用二极管的特性不理想,占空比的间隔会随着温度和V+电源的变化而变化。本设计实例给出了一种解决方法:利用反极性P沟道MOSFET引导电容的充电电流而不产生任何明显压降。
  • 高通发布4nm骁龙W5+骁龙W5芯片,专为可穿戴设计 据EDN电子技术设计报道,高通7月20日正式发布了全新4nm制程的骁龙可穿戴平台W5 Gen1和骁龙W5+ Gen。与两年前的上一代产品骁龙wear 4100相比,骁龙W5与W5+采用了全新的命名方式,整体功耗降低超50%。SoC工艺从12nm提升到4nm,协处理器使用22nm制程工艺。
  • M2 Pro 和 M2 Max 或是苹果首款采用台积电3nm 工艺的 M1 Pro 和 M1 Max 最多可配置 10 核 CPU 和 32 核 GPU。借助 M2 Pro 和 M2 Max,Apple 有望突破这一门槛,为这两个领域带来更多的核心数量。目前M2 Pro相关的爆料很少,但据称M2 Max 有12 核 GPU 和 38 核 GPU。12 核 CPU 将包括 10 个性能核心和两个能效核心。
  • 华为鸿蒙3.0即将发布,首款新品是一款11英寸高端旗舰平 据EDN电子技术设计报道,终端官方微博昨天正式宣布,将于7月27日正式发布Harmony OS 3.0手机操作系统,新系统重点升级了流畅度、万物互联,以及鸿蒙车机等功能。此外,还将带来的首款新品:华为MatePad Pro 11,从宣传海报来看这是一款11英寸高端旗舰平板.
  • 中信拆了辆特斯拉Model 3,发现多个领域技术引领行业 EDN电子技术设计在6月底报道了海通国际手动拆解十万元的比亚迪“元”的详细拆解图,如今不到一个月的时间,中信证券微信公众号发表了一篇《从拆解Model 3看智能电动汽车发展趋势》的文章,文中称对特斯拉Model 3的E/E架构、三电、热管理、车身等进行了详细深入地分析,并坚定看好中国智能电动化发展趋势,引起了广泛关注。
  • 经典电子小制作项目:DS18B20制作的测温系统原程序原理 下面介绍的这款DS18B20制作的测温系统,测量的温度精度达到0.1度,测量的温度的范围在-20度到+50度之间,用4位数码管显示出来。DS18B20的外型与常用的三极管一模一样,用导线将JK—DS的DA端连到P3.1上。连接好DS18B20注意极性不要弄反,否则可能烧坏。
  • OPPO被曝测试240W快充,但实际速度不及vivo的200W 爆料称OPPO正在试产24V10A的240W充电器。对于采用双电芯三电荷泵设计的电池而言,其理论峰值功率可以达到300W,但目前的USB Type-C接口规范的最高功率为240W,OPPO这次一下子将C口快充做到了“天花板”级别。不过,OPPO和vivo不太一样,虽然前者测试的是240W快充,但充电策略偏向保守,实际速度可能不如vivo的200W。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了