广告

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

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

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

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

功能安全标准与代码分析

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

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

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

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

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

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

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

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

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

T4mednc

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

T4mednc

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

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

T4mednc

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

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

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

T4mednc

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

T4mednc

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

T4mednc

结语

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

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

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

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

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

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

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

  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • 英特尔展示下一代半导体器件技术,计划2030年实现万亿级 日前,英特尔在IEDM上展示多项与半导体制造技术相关的研究成果:3D封装技术的新进展,可将密度再提升10倍;超越RibbonFET,用于2D晶体管微缩的新材料,包括仅三个原子厚的超薄材料;能效和存储的新可能,以实现更高性能的计算;量子计算的新进展。此外,英特尔表示,目标是在2030年实现在单个封装中集成一万亿个晶体管。
  • 通过GaN电机系统提高机器人的效率和功率密度 机器人应用成功的关键因素之一是确保最佳的电机驱动器设计。
  • 湖南大学:基于2D的范德华异质结构,可用于晶体管及存储器 电子工程研究的一个关键目标是开发高性能和高能效的计算设备,这意味着它们可以快速计算信息,同时消耗很少的能量。一种可能的方法是将执行逻辑操作的单元和存储组件组合到一个设备中。
  • Microchip在RISC-V峰会上展示基于RISC-V的FPGA和空间 领先的PolarFire®器件可提供两倍能效、军用级安全和最高可靠性,PolarFire 2 FPGA路线图将进一步扩大其领先优势 
  • 聚焦“新基建”|汽车电子行业电源应用解析 目前,常规车型的汽车电子占整车成本的15-30%,而高端车型则更高,车载汽车电子系统主要包括车载供电系统、启动系统、发动机管理系统等。针对这些系统,金升阳提供一站式电源应用方案,简化客户设计,增加系统的可靠性。
  • IAR Systems更新Visual Studio Code扩展 用于代码构建和调试的IAR Visual Studio Code扩展备受市场喜爱,其最新 1.20 版进一步简化了嵌入式开发工作流程
  • SCT52240Q栅极驱动器 SCT52240Q是一款宽供电电压、双通道、高速、低测栅极驱动器,可驱动功率MOSFET,IGBT。单个通道能够提供高达4A拉电流和4A灌电流的轨到轨驱动能力,并实现轨到轨输出。高达24V宽电压范围提高功率器件开关瞬间栅极驱动的振铃幅值裕度。SCT52240输入具有宽迟滞电压,可以兼容TTL输入逻辑。 低至-5V负压输入能力,增强SCT51240对输入噪音的抗扰度。
  • Buck电路传导EMI的抑制 电磁干扰模型可以等效为3个部分:干扰源,传导路径,和接收端。传导电磁干扰测试时接受端为LISN。芯洲主要从干扰源和传导路径两个角度进行传导电磁干扰的预防和优化。
  • 异步Buck升级为同步Buck注意点总结 目前,市场上存在很多异步Buck电源管理芯片使用的场景,针对这些应用,采用同步Buck电源管理芯片进行升级,可以增加集成度,提升电源效率。然而在升级替换的过程中,需要注意PCB的布局。如果需要不更改PCB布局直接升级替换,需要在元器件选择上有所注意。本文首先对同步Buck,异步Buck进行介绍,给出同步Buck的PCB布局注意事项,然后结合实例给出替换中可以采取的保证电源正常工作的方法,供工程师参考。
  • 意法半导体发布车规音频功放芯片,为紧急救援、远程信 FDA803S和FDA903S是意法半导体FDA(纯数字放大器)系列中最新的单通道全差分10W D类音频功率放大器。目标应用包括紧急道路救援、远程信息处理等需要音频通道产生最高10W标准输出功率的语音、音乐或提示消息的任何汽车系统。
  • 在美国企业抵制之下,美国将放宽联邦机构及承包商使用中 这议案被视为美国《国防授权法案》(NDAA)的一项修正案,遭到美国商会和其他贸易组织的抵制。这些组织在上个月的一封信中称,企业要确定大量电子产品中的芯片是否是中国企业制造的,成本将很高,难度也很大。
  • 台积电1nm制程工艺已实现技术突破,正谋划建1nm工艺工厂 近日有报道称台积电正积极推进1nm制程工艺,并们已在谋划1nm制程工艺工厂的建设事宜,以便按计划量产。早前EDN美国版曾报道台积电1nm制程工艺已实现技术突破,且逐渐成形。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了