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

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

3天内不再提示

AUTOSAR C++和MISRA C++集成和自适应开发

星星科技指导员 来源:嵌入式计算设计 作者:Mark Pitchford 2022-06-17 14:55 次阅读

AUTOSAR 采用的指南将与 MISRA 约定和术语保持一致,而用作新文档基础的 MISRA C++:2008 指南将受益于对其原理和示例的改进。

这在纸上听起来很棒。但这份新文件在实践中将提供什么,它对 AUTOSAR 应用程序开发人员意味着什么?

语言子集

采用语言子集(通常称为“指南”或“编码标准”)的驱动力可以说与 AUTOSAR 的关系不大,尤其是与功能安全和网络安全的关系。

功能安全标准“ISO 26262 道路车辆 - 功能安全”被认为是现代汽车开发领域的大部分强制性标准。系统范围的 ISO 26262-4:2011 与 ISO 26262-6 中的软件特定子阶段之间的关系可以用 V 模型表示(图 1)。

pYYBAGKsJZqAV_dDAAUL40Lc93U067.png

图 1:具有对 ISO 26262 和适用开发工具的交叉引用的软件开发 V 模型。

新的 ISO 26262:2018 标准和更熟悉的 2011 版本都将数百个主题整理到数十个表格中,以描述创建功能安全产品的过程。

对于今天的联网汽车,功能安全只是故事的一半。SAE J3061 从网络安全的角度提供最佳实践指南,正如 ISO 26262 提供解决功能安全的实践指南一样。SAE J3061 中的建议旨在补充 ISO 26262 流程,并呼吁以网络安全为重点的广泛相似的技术。

ISO 26262 和 SAE J3061 都要求使用语言子集,因为它们可以帮助开发人员避免语言中的麻烦部分,并使生成的代码更可靠、更不容易出错、更容易测试和/或更容易维护。图 2 仅显示了如何呈现语言子集违规的一个示例。

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzVjNzQzOWVlNzgyMjUuanBnJnZlcnNpb249MDAwMCZzaWc9YjAzZWE3MzdkYjhmOTM3ZWI3ZDcxZDBkZjkyNWViZTI253D

图 2:突出显示 LDRA 工具套件中违反的编码准则。

思想的相遇

这一新宣布的语言子集源于 AUTOSAR 合作伙伴关系和 MISRA 组织之间的协议。

AUTOSAR 合作伙伴关系是一个由汽车 OEM 和供应商组成的协同团队,专注于持续开发汽车 ECU 软件的参考架构。

作为对具有硬实时和安全约束的嵌入式系统的长期经典平台的补充,自适应平台是 AUTOSAR 的高性能计算 ECU 解决方案,用于为高度自动化和自动驾驶等用例构建安全相关系统。经典平台应用程序使用 C 开发,而自适应平台应用程序使用 C++ 开发。

MISRA 也是制造商、组件供应商和工程咨询公司之间的合作,但以其语言子集而闻名。尽管 MISRA 诞生于汽车行业,但如今,它的指导方针已在许多安全和安保领域普遍使用,包括医疗设备、工业、航空航天和铁路运输。

在为自适应平台定义环境的过程中,AUTOSAR 需要一个语言子集来支持 C++14 和该语言的后续演进。MISRA C++ 被认为是令人钦佩的,但它于 2008 年发布以支持 C++03,因此还不够最新

由于不知道 MISRA 现有的更新 MISRA C++:2008 的承诺,AUTOSAR 用自己的规则对 MISRA C++:2008 进行了补充,以创建 AUTOSAR C++14 指南,从而导致了大致相同的两个并行开发。1 月份的公告通过将 AUTOSAR 合作伙伴关系的最新努力与 MISRA 的最新努力相结合,解决了这种情况。

对 AUTOSAR 应用程序开发的影响

一般来说,嵌入式开发世界早就应该拥有一个事实上的 C++ 语言子集,并承诺随着语言的发展对其进行持续维护。联合声明就是为此而受到称赞。

但是,AUTOSAR 应用程序开发人员特别欢迎任何简化和精简规则和法规。在遵守 ISO 26262 功能安全标准、SAE J3061 网络安全指南和 AUTOSAR 标准本身定义的协议的要求方面已经存在足够多的挑战,而语言子集的选择不会变得不必要的复杂。

AUTOSAR Adaptive 和 Classic 平台之间的共性是有帮助的——这一事实已经反映在 AUTOSAR 基础标准中,该标准包含适用于两者的要求和技术规范。自适应应用程序中使用的集成 C++ 语言子集采用 MISRA 约定和术语将与已用于经典开发的 MISRA C 指南保持一致。这有助于简化涉及这两个平台的任何人的生活,并清楚地表明哪个是“正确”的编码标准。

审核编辑:郭婷

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

    关注

    4981

    文章

    18268

    浏览量

    288241
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72893
  • 自动驾驶
    +关注

    关注

    773

    文章

    13018

    浏览量

    163184
收藏 人收藏

    评论

    相关推荐

    C/C++代码动态测试工具VectorCAST插桩功能演示#代码动态测试 #C++

    C++代码
    北汇信息POLELINK
    发布于 :2024年04月18日 11:57:45

    使用 MISRA C++:2023® 避免基于范围的 for 循环中的错误

    在前两篇博客中,我们 向您介绍了新的 MISRA C++ 标准 和 C++ 的历史 。在这篇博客中,我们将仔细研究以 C++ 中 for 循环为中心的特定规则。
    的头像 发表于 03-28 13:53 200次阅读
    使用 <b class='flag-5'>MISRA</b> <b class='flag-5'>C++</b>:2023® 避免基于范围的 for 循环中的错误

    请问CubeIDE如何支持C++开发

    CubeIDE如何支持C++开发。有没有一些例程。
    发表于 03-25 06:22

    静态代码分析工具Helix QAC 2023.3:将100%覆盖MISRA C++:2023®规则

    Helix QAC 2023.3预计将于2023年第四季度发布的新MISRA C++®指南,将100%覆盖MISRA C++:2023®规则。 此外,此版本扩展了对C++20语言支持,
    的头像 发表于 11-08 18:37 222次阅读
    静态代码分析工具Helix QAC 2023.3:将100%覆盖<b class='flag-5'>MISRA</b> <b class='flag-5'>C++</b>:2023®规则

    C++开发单片机有哪些优势和劣势呢?

    在一般的IDE里面除了C可以选择还有很多常见的C++C++开发单片机有哪些优势和劣势?
    发表于 10-16 07:30

    高质量CC++编程指南

    林锐-高质量CC++编程指南电子档
    发表于 10-07 07:14

    嵌入式C/C++语言精华文章集锦

    /C++编程中,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。 经验不足的开发人员往往将所有需要传送的内容依顺序保存在 char 型数组中,通过
    发表于 09-25 08:00

    请问怎么用KendryteIDE编译c++开发k210?

    请问怎么用KendryteIDE编译c++开发k210?
    发表于 09-14 08:58

    您需要了解的有关下一个MISRA®标准的信息:MISRA C++ 2023®简介

    MISRA C++:2023®是广受期待的MISRA C++ ®标准的下一个版本,将于今年晚些时候发布。新版本将整合AUTOSAR C++1
    的头像 发表于 08-25 18:06 928次阅读
    您需要了解的有关下一个<b class='flag-5'>MISRA</b>®标准的信息:<b class='flag-5'>MISRA</b> <b class='flag-5'>C++</b> 2023®简介

    如何为原生C++开发设置Android Studio

    在本指南中,我们将介绍如何为原生C++开发设置Android Studio,并了解如何将Neon内部功能用于ARM支持的移动设备。 不要重复自己(Dry)是软件开发的主要原则之一。 遵循这一原则通常
    发表于 08-17 08:28

    Arm C/C++编译器22.1版开发人员和参考指南

    提供帮助您使用ARM®编译器Linux版的ARM®C/C++编译器组件的信息。 ARM®C/C++编译器是一款自动矢量化的Linux空间C
    发表于 08-11 07:46

    Arm C/C++编译器开发人员和参考指南

    提供帮助您使用Arm®编译器Linux版的Arm®C/C++编译器组件的信息。Arm®C/C++编译器是一款自动向量化的Linux空间C
    发表于 08-10 06:17

    如何为Arm编译Cc++代码

    编写CC++应用程序时,需要使用编译器工具链将其编译为机器代码。然后,您可以在基于Arm的处理器上运行此编译的可执行代码,或者使用模型对其进行模拟。 裸机编译编译器工具链包括以下组件: •将C
    发表于 08-02 17:28

    一起探索C++的世界!

    C++
    YS YYDS
    发布于 :2023年07月07日 19:10:25

    是否有可用的ESP AT命令的C/C++库?

    我想知道是否有可用的 ESP AT 命令的 C/C++ 库?!就像一个简单的 AT 命令解析器,我可以将其集成到我的 MCU 固件中,因为我计划将 ESP 模块用作我的主机 MCU 的从属 wifi
    发表于 05-15 06:47