0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

汽车异构硬件平台开发如何进行静态代码分析

北汇信息POLELINK 2024-10-09 16:15 次阅读

随着汽车软件开发的复杂程度不断提升,尤其是智能网联汽车和自动驾驶技术的进步,汽车软件开发的复杂程度不断攀升。为了满足日益增长的功能需求和技术挑战,异构硬件平台被越来越多地采用,不同的工具链也不可避免地被引入到实际的开发流程中。这一趋势不仅增加了开发过程的技术多样性,也使得单个项目的编译过程中会涉及到多种编译器。

本文主要讲解基于静态代码分析工具Helix QAC,我们该如何对多编译器工程进行静态分析。

新版本Helix QAC(2024.1+)的分析方式

为了适应这一趋势,Helix QAC在2024年发布的版本中引入了多CCT的功能。CCT(Compiler Compatibility Template),是HelixQAC软件中存储编译器环境配置的文件。根据CCT文件生成的方式,HelixQAC把CCT分为了两种:

  1. 自动CCT(Auto CCT):在工程同步时,自动生成的CCT;
  2. 静态CCT(Static CCT):基于CCT生产工具提前生成的CCT;

自动CCT

针对自动CCT方式,多编译器的配置也是自动的,无需我们进行额外的设置,目前HelixQAC支持使用自动CCT的编译器如下表:

Compiler Filter Command
ARM Clang qa_armclang armclang
Clang C qa_clang clang,clang-[3-9][.][0-9],clang-[1-9][0-9][.][0-9],clang-[3-9],clang-[1-9][0-9]
Clang C++ qa_clang clang++,clang++-[3-9][.][0-9],clang++-[1-9][0-9][.][0-9],clang++-[3-9],clang++-[1-9][0-9]
Compiler caching toolsccache ccache,distcc,ccache-motorola,ccache_cc,ccache_cxx
Embarcadero BCC qa_bccclang bcc64
GNU C qa_gnu gcc,cc,c++,gcc-[1-9],gcc-[1-9][0-9],gcc-[1-9][.][0-9],gcc-[1-9][0-9][.][0-9]
GNU C Cross compilers qa_gnu *-*-gcc,*-*-*-gcc,*-*-*-gcc-[1-9]*
GNU C++ qa_gnu g++,g++-[1-9],g++-[1-9][0-9],g++-[1-9][.][0-9],g++-[1-9][0-9][.][0-9]
GNU C++ Cross compilersqa_gnu *-*-g++,*-*-*-g++,*-*-*-g++-[1-9]*
GNU cc1/cc1plus qa_gnu_cc1 cc1,cc1plus
Green Hills ARM qa_ghs cxarm,ccarm,cxarm64,ccarm64,cxthumb,ccthumb,cxtxarm,cctxarm
Green Hills Integrity qa_ghs ccint*,cxint*
Green Hills PPC qa_ghs cxppc,ccppc,cxtxppc,cctxppc
Green Hills TriCore qa_ghs cctri,cxtri
Green Hills v850 qa_ghs cx*850,cc*850,cxv850e,ccv850e
Hexagon Clang qa_hexagonclang hexagon-clang,hexagon-clang++
HighTec Tricore qa_hightec tricore-c++,tricore-g++,tricore-gcc
IAR compilers qa_icc icc*
Keil ArmCC qa_armcc armcc
Microchip MPLAB pic24 qa_microchip30 pic30-gcc
Microchip MPLAB xc16 qa_microchip16 xc16-gcc
Microchip MPLAB xc32 qa_microchip32 xc32-gcc,xc32-g++,xc32-c++
Microchip MPLAB xc8 qa_microchip8 xc8
Microchip MPLAB xc8-ccqa_microchip8cc xc8-cc
QNX qa_qnx qcc,QCC,q++
Renesas qa_renesas ccrh,ccrl,ccrx,cx
Renesas ca850 qa_renesas_ca850ca850
Renesas cc78k0 qa_renesas_cc78k0cc78k0,cc78k0r
Synopsys DesignWare ARCqa_metaware ccac
TI CCS qa_ti armcl,cl[0-9]?*,clpru
TI CCS Clang qa_tiarmclang tiarmclang
Tasking qa_tasking ctc,cptc,cmcs
Visual Studio qa_mscompile cl,clarm,clsh
Wind River qa_windriver dplus,dcc

静态CCT

如果我们采用传统的静态CCT的方式,那么需要我们提前为不同的编译器生成对应的CCT文件,并在HeliXQAC中将这些CCT导入到软件中。

HelixQAC现在支持为一种语言选择多个CCT配置,如下:

wKgZoWcGO1qAS3bSAADaMoClsiY434.png

在我们完成源码加载后,如果不进行单独配置,那么HelixQAC会使用Default CCT对源码进行解析。如果文件夹内的源码使用的编译器与默认CCT不一样,可以在对应的文件属性中重新选择合适的CCT配置。

wKgaoWcGO1qAWwXQAAB-IMDu3eY073.png

需要注意的是,我们只能针对文件夹进行CCT的选择,不能针对单个源码进行CCT的配置。而且,对于多CCT的工程,由于这是Helix QAC最新版本才有的功能,因此无法兼容Dashboard,只能将多CCT工程的分析结果上传到Validate中。

老版本Helix QAC的分析方式

由于老版本HelixQAC中无法为文件夹选择不同的CCT,如果要实现多编译器的工程分析,需要借助HelixQAC的CMA工程。

CMA(Cross-Module Analysis),是HeliXQAC提供的一种跨模块分析功能,它允许我们将多个HeliXQAC工程添加到CMA工程中,以进行跨模块的分析,并检查重复定义、不兼容的声明和未使用的变量等问题。

具体到多编译器的工程场景,我们需要为每个编译器建立一个HelixQAC工程,并将使用该编译器的源码及头文件加载到该工程中,然后将这些不同编译器的QAC工程添加到CMA工程中。

显然,Helix QAC的新功能提供了极大便利,来高效支持多编译器。

结语:

通过上述讨论可以看出,随着汽车软件开发复杂度的提升,异构硬件平台的应用已成为必然趋势。多编译器环境的引入不仅是技术发展的自然产物,更是解决日益增长的功能需求和技术挑战的有效途径。在此背景下,Helix QAC 作为一款先进的静态代码分析工具,其新版本中引入的多CCT功能为开发人员提供了强大的支持,该功能不仅简化了多编译器环境下的代码分析过程,还可以极大增强代码的质量和安全性。

如果想试用最新版的Helix QAC,欢迎垂询北汇信息

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译器
    +关注

    关注

    1

    文章

    1607

    浏览量

    48973
  • 静态测试
    +关注

    关注

    0

    文章

    23

    浏览量

    6488
  • 汽车
    +关注

    关注

    13

    文章

    3329

    浏览量

    37027
收藏 人收藏

    评论

    相关推荐

    TINA中如何进行频谱分析

    想问一下TINA中如何进行频谱分析,找了好久没怎么找到,可能设置不对,望指点,谢谢
    发表于 09-14 07:56

    何进行电源供应设计

    电子发烧友网站提供《如何进行电源供应设计.pdf》资料免费下载
    发表于 09-09 10:33 0次下载
    如<b class='flag-5'>何进行</b>电源供应设计

    复旦微PS+PL异构多核开发案例分享,基于FMQL20SM国产处理器平台

    本文主要介绍复旦微FMQL20S400M的PS + PL异构多核开发案例,开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bitPL端
    发表于 08-22 14:04

    DevOps中的质量门工作原理,以及静态代码分析Klocwork和Perforce Helix QAC在质量门中的实践应用

    如何使用静态代码分析工具(如Klocwork 和 Helix QAC)实现质量门。 什么是质量门? 质量门是在IT或开发项目中实施的检查点,这些检查点要求在进入下一个
    的头像 发表于 07-29 15:12 221次阅读

    AvaotaA1全志T527开发板AMP异构计算简介

    的控制 在异构系统中,不止需要消息的传输,还需要相关控制。例如主核对辅助核心的开启,加载固件,关闭等等。这就需要用到 remoteproc 框架。 remoteproc 框架支持对不同平台,不同架构的处理器进行控制,可以监控辅助
    发表于 07-24 09:54

    国内低代码平台推荐--万界星空科技低代码平台

    代码平台是一种应用程序,它为编程提供图形用户界面,从而以极快的速度开发代码,减少传统编程工作。 这些工具有助于快速开发
    的头像 发表于 07-18 15:39 212次阅读
    国内低<b class='flag-5'>代码</b><b class='flag-5'>平台</b>推荐--万界星空科技低<b class='flag-5'>代码</b><b class='flag-5'>平台</b>

    代码开发平台的崛起:优势、特点与应用

    代码开发平台是近年来迅速崛起的一种创新型软件开发工具,以其高效、灵活的开发模式正颠覆着传统的开发
    的头像 发表于 04-18 10:43 302次阅读
    低<b class='flag-5'>代码</b><b class='flag-5'>开发</b><b class='flag-5'>平台</b>的崛起:优势、特点与应用

    使用的H7系列MX编写代码后生成静态库文件,如何更改静态库工程也使用硬件双精度浮点数?

    使用的H7系列MX编写代码后生成静态库文件, 在调用该静态库文件并编译报错,如下: 然后我查看了静态库工程的编译指令: 而APP程序的编译指令: 想请教一下,该如何更改
    发表于 03-12 06:15

    LTSpice能不能进行任意降压型DC-DC的环路特性分析,如何进行

    LTSpice能不能进行任意降压型DC-DC的环路特性分析,如何进行
    发表于 01-04 07:09

    TorchFix:基于PyTorch的代码静态分析

    TorchFix是我们最近开发的一个新工具,旨在帮助PyTorch用户维护健康的代码库并遵循PyTorch的最佳实践。首先,我想要展示一些我们努力解决的问题的示例。
    的头像 发表于 12-18 15:20 992次阅读

    如何用万界星空科技低代码平台快速开发一个MES系统?

    如今,越来越多的企业选择低代码开发平台,让企业实现数字化转型。但是你好奇“低代码开发平台”能做什
    的头像 发表于 12-08 11:39 499次阅读
    如何用万界星空科技低<b class='flag-5'>代码</b><b class='flag-5'>平台</b>快速<b class='flag-5'>开发</b>一个MES系统?

    Android APP如何进行访问硬件驱动

    本文我们要讲的是在用 i.MX8 平台开发时,Android APP 如何进行访问硬件驱动。
    的头像 发表于 12-04 13:50 1318次阅读
    Android APP如<b class='flag-5'>何进行</b>访问<b class='flag-5'>硬件</b>驱动

    LabVIEW使用软件定义进行汽车电子测试

    。除了元件的稳健性,系统的稳健性也必须进行评估。随着组件和装置种类的日益丰富,要评估的项目数量呈指数增长。因此,显然,评估系统需要自动化。 汽车电子需要开发的系统非常庞大复杂。因此,开发
    发表于 11-29 18:28

    AbsInt—确保代码安全的静态性能分析工具

    德国AbsInt公司是专注于安全苛求软件研发、确认、验证和认证的工具链供应商,能够为客户提供完整的确保代码安全的性能分析工具套件以及软件分析、验证、确认和编译器技术相关咨询服务。AbsInt产品广泛地应用于工业、交通、
    的头像 发表于 11-08 11:15 406次阅读
    AbsInt—确保<b class='flag-5'>代码</b>安全的<b class='flag-5'>静态</b>性能<b class='flag-5'>分析</b>工具

    硬件开发设计的流程

    这个就是从整体去思考整个硬件项目如何进行设计以及设计的可能性,需要对整个系统做一个架构分析,包含了那些组成部分,各个组成部分是否有多余或冲突,从而考虑整个产品实现的可能性。 元器件选型 这一块就是针对整个产品
    的头像 发表于 11-06 15:27 1447次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>开发</b>设计的流程