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 指南保持一致。这有助于简化涉及这两个平台的任何人的生活,并清楚地表明哪个是“正确”的编码标准。

审核编辑:郭婷

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

    关注

    5106

    文章

    19288

    浏览量

    310216
  • C++
    C++
    +关注

    关注

    22

    文章

    2115

    浏览量

    74170
  • 自动驾驶
    +关注

    关注

    788

    文章

    14007

    浏览量

    167748
收藏 人收藏

    评论

    相关推荐

    源代码加密、源代码防泄漏c/c++与git服务器开发环境

    源代码加密对于很多研发性单位来说是至关重要的,当然每家企业的业务需求不同所用的开发环境及开发语言也不尽相同,今天主要来讲一下c++及git开发环境的源代码防泄密保护方案。企业源代码泄密
    的头像 发表于 02-12 15:26 273次阅读
    源代码加密、源代码防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>与git服务器<b class='flag-5'>开发</b>环境

    基于OpenHarmony标准系统的C++公共基础类库案例:ThreadPoll

    。每个线程每秒打印1段字符串,10秒后停止。2、基础知识C++公共基础类库为标准系统提供了一些常用的C++开发工具类,包括:文件、路径、字符串相关操作的能力增强接口
    的头像 发表于 02-10 18:09 132次阅读
    基于OpenHarmony标准系统的<b class='flag-5'>C++</b>公共基础类库案例:ThreadPoll

    Spire.XLS for C++组件说明

    开发人员可以快速地在 C++ 平台上完成对 Excel 的各种编程操作,如根据模板创建新的 Excel 文档,编辑现有 Excel 文档,以及对 Excel 文档进行转换。 Spire.XLS
    的头像 发表于 01-14 09:40 262次阅读
    Spire.XLS for <b class='flag-5'>C++</b>组件说明

    C7000 C/C++优化指南用户手册

    电子发烧友网站提供《C7000 C/C++优化指南用户手册.pdf》资料免费下载
    发表于 11-09 15:00 0次下载
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>优化指南用户手册

    C语言和C++中结构体的区别

    同样是结构体,看看在C语言和C++中有什么区别?
    的头像 发表于 10-30 15:11 452次阅读

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    <b class='flag-5'>C</b>7000优化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器

    whitepaper-perforce-what-is-misra

    如果您熟悉嵌入式软件的世界,您可能听说过安全关键系统的MISRA编码准则和合规性。最初为在汽车嵌入式软件行业,MISRA C for CC++
    发表于 08-08 15:54 0次下载

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都觉得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的优化与整理,已经是非常贴近开发的使用习惯与推理方式。与OpenCV的Mat对象对接方式
    的头像 发表于 07-26 09:20 1193次阅读

    C++语言基础知识

    电子发烧友网站提供《C++语言基础知识.pdf》资料免费下载
    发表于 07-19 10:58 8次下载

    C++中实现类似instanceof的方法

    函数,可实际上C++中没有。但是别着急,其实C++中有两种简单的方法可以实现类似Java中的instanceof的功能。 在 C++ 中,确定对象的类型是编程中实际需求,使开发人员
    的头像 发表于 07-18 10:16 740次阅读
    <b class='flag-5'>C++</b>中实现类似instanceof的方法

    Perforce静态代码分析专家解读MISRA C++:2023®新标准:如何安全、高效地使用基于范围的for循环,防范未定义行

    MISRA C++:2023——MISRA® C++ 标准的下一个版本来了!为了帮助您了解 MISRA
    的头像 发表于 06-18 12:57 570次阅读

    鸿蒙OS开发实例:【Native C++

    使用DevEco Studio创建一个Native C++应用。应用采用Native C++模板,实现使用NAPI调用C标准库的功能。使用C标准库hypot接口计算两个给定数平方和的平
    的头像 发表于 04-14 11:43 2923次阅读
    鸿蒙OS<b class='flag-5'>开发</b>实例:【Native <b class='flag-5'>C++</b>】

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

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

    为什么很少用C++开发单片机

    C语言是面向过程的语言,C++是面向对象的编程语言。结合本文来说,面向过程相比面向对象的编程,生成代码量(bin文件)更小,运行效率更高。
    发表于 03-25 14:26 1317次阅读
    为什么很少用<b class='flag-5'>C++</b><b class='flag-5'>开发</b>单片机

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

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