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

审核编辑:郭婷

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

    关注

    5212

    文章

    20763

    浏览量

    338787
  • C++
    C++
    +关注

    关注

    22

    文章

    2131

    浏览量

    77488
  • 自动驾驶
    +关注

    关注

    795

    文章

    15056

    浏览量

    181991
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用VectorCAST/C++的AI辅助测试功能

    从2026版本开始,VectorCAST/C++推出首批AI辅助测试功能,旨在帮助开发团队解决单元测试过程中的两个核心难点:
    的头像 发表于 04-27 14:37 399次阅读

    C++与lua联合编程

    手工业”。然而,这两种内存管理机制截然不同的语言,如何在一个进程内进行高效的数据交换,一直是企业级开发中的痛点。(看讠果aixuetang。xyz) 从经济学的视角来审视,夏曹俊老师《C++ 脚本编程
    发表于 04-19 16:27

    C++:const 的空间,常量也能占内存?

    ] != BLACK)): return True return False c++语言5g.FsW.dgdfgsg.cnJIWWQc++语言 c++语言5g.I5y.dgdfgsg.cnJIWWQc++
    发表于 04-16 19:19

    keil实现cc++混合编程

    起因项目中使用到一个开源的模拟IIC的库,封装的比较好,但是是使用c++写的。于是将其移植到自己的项目中,主要有以下三步操作: 在工程选项中 C/C++中去掉勾选 C99 Mode
    发表于 01-26 08:58

    汽车网络安全开发语言选型指南:C/C++/Rust/Java等主流语言对比+Perforce QAC/Klocwork工具支持

    汽车网络安全如何选编程语言?CC++、Rust、Java……谁更适合AUTOSAR、ISO/SAE 21434?一文了解8种主流语言的优劣与适用场景,以及Perforce QAC/Klocwork对
    的头像 发表于 12-26 11:13 740次阅读
    汽车网络安全<b class='flag-5'>开发</b>语言选型指南:<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>/Rust/Java等主流语言对比+Perforce QAC/Klocwork工具支持

    C语言与C++的区别及联系

    C语言和C++到底是什么关系? 首先C++C语言本来就是两种不同的编程语言,但C++确实是对C
    发表于 12-24 07:23

    CC++之间的联系

    ,后来才逐渐演变为一种成熟的面向对象编程语言。 总之,C语言和C++虽然有很多共同之处,但在编程范式、安全性、抽象层次等方面存在显著差异。开发者可以根据项目需求选择合适的语言,C语言更
    发表于 12-11 06:51

    C语言和C++之间的区别是什么

    C++的标准库那样集成度高和功能齐全。 6、编译器与语言特性: C++编译器通常比C语言编译器更加复杂,因为它需要处理更多的语言特性,比如模板元编程、命名空间、引用等。
    发表于 12-11 06:23

    C/C++条件编译

    条件编译是一种在编译时根据条件选择性地包含或排除部分代码的处理方法。在 C/C++ 中,条件编译使用预处理指令 #ifdef、#endif、#else 和 #elif 来实现。常用的条件编译指令有
    发表于 12-05 06:21

    C++程序异常的处理机制

    1、什么是异常处理? 有经验的朋友应该知道,在正常的CC++编程过程中难免会碰到程序不按照原本设计运行的情况。 最常见的有除法分母为零,数组越界,内存分配失效、打开相应文件失败等等。 一个程序
    发表于 12-02 07:12

    嵌入式C/C++回归测试四大最佳实践(附自动化测试工具TESSY使用教程)

    嵌入式开发中,一次微小的代码改动都可能引发“蝴蝶效应”,如何守护系统的稳健?推荐专业的自动化测试工具#TESSY,源自戴姆勒-奔驰,是嵌入式C/C++单元/集成测试的标杆。
    的头像 发表于 10-31 14:21 651次阅读
    嵌入式<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>回归测试四大最佳实践(附自动化测试工具TESSY使用教程)

    请问NANO 可以使用 C++ 11 嘛?

    最近需要在GD32F450上开发项目,需要用到C++ ,那么 nano支持嘛?如果不支持,使用完全板改基于GD的芯片进行开发
    发表于 10-14 07:41

    C/C++代码静态测试工具Perforce QAC 2025.3的新特性

     Perforce Validate 中 QAC 项目的相对/根路径的支持。C++ 分析也得到了增强,增加了用于检测 C++ 并发问题的新检查,并改进了实体名称和实
    的头像 发表于 10-13 18:11 813次阅读
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代码静态测试工具Perforce QAC 2025.3的新特性

    技能+1!如何在树莓派上使用C++控制GPIO?

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GPIO编程,而且这样做还有不少好处。借助WiringPi
    的头像 发表于 08-06 15:33 4607次阅读
    技能+1!如何在树莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    Perforce QAC产品简介:面向C/C++的静态代码分析工具(已通过SO 26262认证)

    Perforce QAC专为C/C++开发者打造,支持多种编码规范、功能安全标准(ISO 26262)等,广泛用于汽车、医疗、嵌入式开发领域,可帮助快速识别关键缺陷、提升代码质量、实现
    的头像 发表于 07-10 15:57 1546次阅读
    Perforce QAC产品简介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>的静态代码分析工具(已通过SO 26262认证)