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

发布者:EE小广播最新更新时间: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


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

 

image.png


不过,运行时分析也有一些不足。首先,使用这种方法时,通常要到软件开发流程的后期才能发现问题,因为运行时分析工具需要使用代码的可执行文件。此外,运行时分析仅对实际运行的应用程序部分进行检查。如果无法触发所有条件使得应用程序的全部代码都得到分析,则最终将有部分代码处于未经测试的状态。尽管如此,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


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

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


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

 

image.png


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

 

image.png


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

 

image.png


结语


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


第 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插件,欢迎工程师朋友们试用。


关键字:编程语言  安全性  开发环境  代码  工具 引用地址:充分应用功能安全性开发环境中集成的代码分析工具

上一篇:Socionext为下一代云标签开发LSI加速物流数字化转型
下一篇:IARSystems率先支持集成AI技术的Arm Cortex-M55内核

推荐阅读最新更新时间:2024-11-04 12:04

国产手术机器人研发意义重大 可提高手术效率及安全性
“当时选机器人手术,就是看中了创伤小恢复快。”23岁的小李(化名)是国产手术机器人的受益者之一。她因患多发胆囊结石,近日在中南大学湘雅三医院通过国产手术机器人顺利取出了体内结石。 机器人手术被称为第三代外科手术革命,它是临床医学诊疗的皇冠明珠,过去受限于技术创新能力不强,产学研用结合不紧密,创新链和产业链不完整等因素,我国手术机器人高端诊疗装备的技术竞争力薄弱,主要依赖进口,核心技术和产品主要掌握在外国人手中。 11月26日,中南大学举行国产手术机器人临床试验启动会,由天津大学、中南大学、威高集团共同研发,湘雅三医院负责的国产手术机器人临床多中心研究正式进入临床试验阶段,标志着国产手术机器人离进入市场仅“一步之遥”。
[机器人]
莱迪思嵌入式视觉开发工具包瞄准边缘应用
莱迪思半导体(Lattice)近日宣布推出全新的嵌入式视觉开发工具包,专为行动装置相关系统设计进行 优化的开发工具包,且此类系统需要弹性、低成本、低功耗图像处理架构。 此款解决方案于单一且 模块化平台架构下,采用莱迪思 FPGA、ASSP 以及可编程 ASSP(pASSP)组件,能够为工业、汽车以 及消费性电子市场上的各类嵌入式视觉应用,提供灵活性与低功耗两者间的最佳平衡。 莱迪思半导体产品营销总监 Deepak Boppana 表示,随着智能边际应用不断增长,越来越多的应用 将需要整合的嵌入式视觉技术。 该公司嵌入式视觉开发工具包,能够加速行动相关技术的应用,包 括机器视觉、智能监控摄影机、机器人、AR/VR、无人机和先进驾驶辅
[半导体设计/制造]
芬兰欲打造全球最智能道路 利用C-V2X网络提升道路安全性
据外媒报道,芬兰商业人士及因科市政府有个大胆的计划,他(她)们想要打造一条全球智能化程度最高的道路。 据透露,该道路将采用5G技术,其网络将覆盖因科市(Inkoo municipality)锡温蒂奥(Siuntio)与卡尔娅(Karjaa)间Route 51延伸段,其长达31公里(约合19英里),其位于芬兰南海岸赫尔辛基(Helsinki)西部54公里(约合34英里)处。 因科市政府将与Karis Telefon、Tammisaaren Energia开展合作。此外,诺基亚将为智能灯杆提供5G技术。 该智能道路属于LuxTurrim5G项目中的一环,各个智能灯杆将配置了网络基站及天线,可用于创建5G网络。该智能道路将配置620个
[汽车电子]
芬兰欲打造全球最智能道路 利用C-V2X网络提升道路<font color='red'>安全性</font>
单片机程序代码该如何优化?
对单片机程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一。一般是优化了代码的尺寸,就会带来执行时间的增加;如果优化了程序的执行速度,通常会带来代码增加的副作用。很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。 程序结构的优化 1 程序的书写结构 虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一定的书写规则,一个书写清晰、明了的程序,有利于以后的维护。在书写程序时,特别是对于While、for、do…while、if…else、switch…case 等语句或这些语句嵌套组合时,应采用“缩格”的书写形式。 2 标识符 程序中使用的用户标识符除要遵循标识符的命名规
[单片机]
单片机程序<font color='red'>代码</font>该如何优化?
电爆驱动器和接触器驱动器如何帮助提高混合动力汽车/电动汽车电池断开系统的安全性
对于混合动力汽车 (HEV) 和电动汽车 (EV),电池管理系统 (BMS) 中的配电系统可为车辆的核心功能供电,还可提供安全断开高电压或高电流事件的机制。随着对更高电压、电流、效率和可靠性的需求持续增长,配电系统的两个核心组件(高压继电器和断开保险丝)面临越来越多的设计挑战。图 1 展示了高压继电器和断开保险丝的概览。 图 1:BMS 配电系统中的电池断开保险丝和高压继电器 在紧急情况下,不可复位的电池断开保险丝将激活,断开电池与车辆其余部分之间的连接。高压继电器(也称为接触器)会在正常运行期间连接和断开整个 HEV 或 EV 的电源线。在本文中,我们将讨论接触器和断开保险丝驱动器领域的新兴技术,这些技术有助于使 BMS 变
[嵌入式]
电爆驱动器和接触器驱动器如何帮助提高混合动力汽车/电动汽车电池断开系统的<font color='red'>安全性</font>和
周立功lpc21xx/lpc22xx系列ARM7启动代码分析
网上已经有人做了一个周立功lpc2000(ARM7TDMI)启动代码分析的文章, 我本来想做一个s3c2410(ARM920T)的启动代码分析的, 但是看来了一下2410的启动代码,发现有些东西还不是理解的很清楚, 我ARM9的经验比较少. 所以还是做一个ARM7的启动代码分析吧, 网上那一份相比,我这个主要关注startup.s文件.网上那个startup.s几乎是一笔带过的. 红色标记的是源码. SVC_STACK_LEGTH EQU 0 FIQ_STACK_LEGTH EQU 0 IRQ_STACK_LEGTH EQU 256 ABT_STACK_LEGTH
[单片机]
周立功lpc21xx/lpc22xx系列ARM7启动<font color='red'>代码</font>分析
Xilinx宣布收购 C/C++ 编程工具提供商 Silexica
今日,赛灵思宣布,公司已收购了 C/C++ 编程和分析工具的私营供应商 Silexica . 他们在公告中进一步指出,Silexica 的 SLX FPGA 工具套件为开发人员提供了在 FPGA 和自适应 SoC 上构建应用程序的无与伦比的开发体验。该技术将与 Xilinx Vitis 统一软件平台集成,以大幅缩短软件开发人员在 Xilinx 技术上构建复杂应用程序的学习曲线。 公告表示,利用 Xilinx 的标准高级综合工具,SLX FPGA 工具套件处理不可综合和非硬件感知的 C/C++ 代码,检测应用并行性,插入编译指示,并确定最佳的软件和硬件分区。这使设计能够在更高的抽象层次上进行,模拟速度提高几个数量级,并通过高级优
[半导体设计/制造]
11.汇编代码简单操作
使用汇编的原因很简单,就是汇编代码的高效。在机器启动的时候,利用汇编的高效,对硬件进行初始化,为加载内核,提供条件。 目前常用的ARM汇编指令有两种: *ARM标准汇编:适用于ARM公司的汇编器,适合在Windows平台下使用。 *GNU汇编:使用与GNU交叉编译工具链中的汇编器,适合于Linux平台开发。 3.汇编程序框架:注意下面的操作环境是Redhat 6.4 + eclipse C/C++ +CDT插件。 汇编代码的基本框架 汇编用到的地方,启动代码,效率要求高效的地方。 上面是启动代码的框架。 下面搭建框架: start.S: .text .global _start _start: mov r2,#2
[单片机]
11.汇编<font color='red'>代码</font>简单操作
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved