广告

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

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

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

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

功能安全标准与代码分析

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

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

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

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

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

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

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

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

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

Pxoednc

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

Pxoednc

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

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

Pxoednc

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

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

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

Pxoednc

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

Pxoednc

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

Pxoednc

结语

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

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

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

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

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

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

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

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • 使用BLDC电机助力机械扫描激光雷达实现360度视场 激光雷达系统的视场 (FOV) 决定了激光雷达能够捕捉到的图像的宽度,因此该视场对于自动驾驶决策算法十分重要。扩大FOV的方法有很多种,其中之一就是利用机械扫描,使用电机帮助实现360度FOV。无刷直流 (BLDC) 电机可以实现此目标,且高效低噪,因此广受欢迎。
  • 如何设计小型USB-C PD和PPS适配器 为了实现先进的USB电源协议,除了反激式控制器外,设计工程师还需要使用专用的USB控制器或微控制器。这两个IC之间还需要低时延通信,确保整个解决方案符合USB协议。
  • 英特尔、AMD、Arm等九大企业宣布UCIe开放标准,推动Chip 英特尔、AMD、Arm 和所有领先的代工厂商齐聚一堂,包括高通、三星、台积电、日月光,以及Google Cloud、Meta、微软,宣布他们正在为小芯片互连制定一个新的开放标准Universal Chiplet Interconnect Express (UCIe),希望以UCIe 1.0规范建立芯片互连、兼容运作,让更多业者能依照此标准打造新款处理器,并且能配合不同微芯片建构差异化设计。
  • 如何使用LTspice仿真来解释电压依赖性影响 问题:如何在电路仿真中考虑多层陶瓷电容器(MLCC)的直流偏置影响?答案:使用LTspice的非线性电容功能和合理的模型。
  • 自耦变压器和风扇 由于我的SPICE版本中并不包括自耦变压器,因此必须设计一个使用两个1:1匝数比变压器的模型...
  • “中国IC设计成就奖”提名产品简介:R5总线隔离收发芯片 R5总线隔离收发芯片是金升阳为通信等领域量身打造的产品,该系列产品的开发攻克了很多行业难题,从R1至R5系列,性能与体积不断优化,已经实现了产品性能及封装工艺的同步提升,在产品体积、成本上的优化技术已经做到了国内领先水平产,极大的节约了客户占板空间,更加契合用户的实际使用场景和产业技术发展趋势。在原来的性能优势上,实现更高效率及更优越的保护性能。R5系列产品的核心技术确实在行业内有独创性,极大推动了通信行业等对体积、成本要求很高的行业发展。
  • “中国IC设计成就奖”提名产品简介:新能源汽车用功率器 比亚迪半导体BF1181是一款电隔离单通道栅级驱动芯片,可兼容并驱动1200V IGBT&SiC功率器件。其互补的输入信号满足5V的信号输入,可直接与微控制器相连。其输出驱动峰值电流高达±8A,满足4500Vus 60s脉冲绝缘要求,适应-40℃~125℃环境运行温度范围。BF1181同时具有优异的动态性能和工作稳定性,并集成了多种功能,如故障报警、源密勒钳位、去饱和保护、主次级欠压保护等,同时集成模拟电平检测功能,可用于实现温度或电压的检测,并提高芯片的通用性,进一步简化系统设计并确保系统更安全,可应用于EV/HEV电源模块、工业电机控制驱动、工业电源、太阳能逆变器等领域。
  • 研发转至FAE(现场应用工程师),是否远离技术了?有前途吗? 前几日,EDN小编在浏览知乎的时候,发现了一个有趣的话题《FAE有什么发展前景吗?》,被浏览次数接近九万次。小编总结了一下题主的提问:FAE是否远离技术了?未来是否有发展前景?
  • “中国IC设计成就奖”提名产品简介:3.8V~40V输入,3.5A SCT243x系列产品:SCT2430,SCT2431,SCT2432,主要针对工业和车载应用中的三种不同需求组合(外置补偿可设置,缓启动时间可设置,频率可设置)所开发的系列产品。目前该系列产品累计出货量超千万片以上,目前客户端回诉的质量DPPM为0ppm。
  • “中国IC设计成就奖”提名产品简介:AC-DC电源管理芯片S SP2738CF是无锡硅动力微电子股份有限公司自主架构的一款性能优异的原边反馈AC/DC控制电路,采用了多项自研技术,已申请并通过了发明专利、实用新型专利技术包括国际PCT专利共9项。产品适用于高功率密度、小体积AC/DC 充电器与适配器,无需光耦和TL431。芯片可以工作在CCM/QR工作模式,可以在十分精简的外围条件下高精度地实现恒流和恒压控制,可以轻松实现6级能效要求。
  • “中国IC设计成就奖”提名产品简介:电量计芯片CW2217B CW2217B是一款用于系统侧的单节锂电池电量计芯片,其通过内部高精度模拟前端(AFE)采集电池的实时电压、电流和温度,结合内置电池模型,可精准计算的电池剩余电量(SOC)。芯片还能记录电池的充放电循环数(Cycle),追踪电池内阻的变化,计算电池的健康程度(SOH),可使用户更了解电池状态,最终提升用户体验。可广泛用于智能手机、平板电脑、智能POS机等移动便携终端,也可用于智能穿戴设备和使用锂电池的IoT设备。
  • “中国IC设计成就奖”提名产品简介:Type-C全接口综合保 传统上,需要采用多个OVP保护芯片与TVS等器件,为Type-C接口提供可靠的保护。维安采用”All-IN-One”的技术方案,在单芯片上实现了4个通道的短路与热插拔,和8个通道的系统级静电综合防护。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了