• AUTOSAR C++14 编码指南(上)


    AUTOSAR C++ 14 指南是 MISRA C++ 2008 的一次更新,为 ISO/IEC 14882:2014 定义的现代C++提供了编码指南。

    Adaptive AUTOSAR(自适应 AUTOSAR)

    汽车行业在过去十年中发生了翻天覆地的变化。现代汽车引入的新功能从根本上将汽车本身变成了计算中心。在用于构建汽车软件的平台的开发中反应得特别明显,特别是AUTOSAR。

    在编译时假定静态配置、没有动态内存分配以及C语言占主导地位的经典方法已不再适用。而以下新功能需要大量高级代码:

    • 车道保持辅助

    • 自动紧急制动

    • 盲点监测

    • V2X通信(汽车之间以及车对基础设施的通信)

    • 持续的无线更新

    • 高清多媒体

    • AI计算、图像识别

    这些新特性还需要对范式进行更改,以满足传统方法的需要。为了应对这些挑战并促进汽车发展,包括世界上大多数领先汽车制造商在内的AUTOSAR联盟于2017年3月发布了新版本的AUTOSAR标准,称为自适应AUTOSAR。

    新标准的发布并未使经典平台失效,它仍将作为无连接需求、有限的硬件要求和硬实时功能的控制单元的首选。

    自适应AUTOSAR定义了一个平台,用于开发汽车控制单元,该单元通过互联网提供先进的驾驶辅助系统,媒体流或软件更新等复杂功能。该平台包含定义服务和 API 的接口规范。自适应AUTOSAR中引入的一些新特性包括:

    • 面向对象的方法

    • C++编程语言

    • 面向服务的体系结构

    • POSIX操作系统

    • ECU配置在系统运行时发生变化

    • 无线部署和更新

    C语言不再满足需求

    自适应AUTOSAR解决了现代汽车日益复杂的需求,以及互联世界模式给汽车系统带来的新挑战。C语言在过去是汽车开发人员的首选,如今却成为了一个阻碍因素。

    系统的复杂性迫使人们从C语言切换到C++,这为构建大型分布式系统提供了更好的支持,并为数据封装提供了更好的机制。

    自适应AUTOSAR依赖于 C++14 语言标准。语言标准版本的选择是在“不太旧”和“不太新”之间进行选择。一方面,我们有C++98和C++03,它们仍然广泛应用于汽车行业,但已经过时,不符合现代的开发模式。另一方面,当C++17标准发布时,它是比较新的,并且有争论要摒弃C++98和C++03,包括:

    • C++语言的重大改进

    • 提供更好的编译器

    • 更好的测试和分析工具的可用性

    不采用C++17的主要原因之一是标准中引入的新功能可能会给系统带来安全风险——检测和理解安全漏洞需要一些时间。此外,符合C++17标准的C++编译器仍然是新的,需要更多的测试和更好的支持才能用于安全关键型开发。因此,选择依靠C++14标准作为合理的中间选项。

    随着C++语言的不断发展,今天我们有C++20(ISO/IEC 14882:2020)取代了C++17。

    为了支持C++17,AUTOSAR和MISRA联手制定了使用C++17的安全编码指南,并计划持续到C++20。对于许多组织来说,这是非常重要的,因为现代C++功能提供了在开发系统中非常重要的新创新。例如,使用AI依赖于C++最新版本中开发的现代架构,现代平台和现代库。

    那么AUTOSAR 编码指南呢?

    自适应AUTOSAR平台的发布增加了C++在汽车项目中的应用。这使得一个具体问题更加明显:虽然在过去几年中C++语言发展速度加快了,但汽车编码标准似乎已经落后了。

    在C++11和C++14发布时,C++最流行的汽车编码标准MISRA C++2008已经严重过时,只能解决该语言的C++03版本。

    随着每一年的发展,这个问题变得越来越棘手。开发人员广泛接受最新C++标准的新功能,并在没有适当指导或最佳实践的情况下开始使用它们。这种情况对于开发安全关键型系统的团队来说尤其成问题,ISO 26262要求这些系统使用静态分析以及适当的编码指南子集。

    为了解决这个问题,AUTOSAR联盟发布了专门的指南,作为自适应AUTOSAR平台的一部分,标题为“在关键和安全相关系统中使用C++14语言的指南”。依靠未经修改的MISRA C++2008简直是一种不合理的选择。下面的时间线描述了这种情况。

    • 1998 – C++98标准发布

    • 2003 – C++03标准发布

    • 2008 – MISRA C++2008 (封面 C++03)

    • 2011 – C++11标准发布

    • 2014 – C++14标准发布

    • 2017 – AUTOSAR C++14 (3月)

    • 2017 – C++17标准发布

    • 2020 – C++20标准发

    • 2022 – MISRA & AUTOSAR C++17 (待定)

    • 2022 – MISRA & AUTOSAR C++20 (待定)

    AUTOSAR C++14 编码指

    AUTOSAR C++ 14 指南文件旨在作为 MISRA C++ 2008 的一次更新,并为 ISO/IEC 14882:2014 定义的现代C++提供编码指南。该编码标准主要应用于汽车行业,但它同样也可用于需要嵌入式编程的其他行业。

    该标准规定了342条规则:

    • MISRA C++ 2008 中的 154 条规则未经修改采用 (67%)

    • 131条规则基于现有的C++标准

    • 57条规则基于研究或其他文献或资源

    该标准有据可查,并提供了对其他现有C++标准的可追溯性,例如HIC ++ 4.0,JSF,SEI CERT C++,C++核心指南,当然还有MISRA 2008 C++。

    AUTOSAR C++14 遵循 MISRA C++ 2008的规则分类方法。这些规则根据义务级别进行分类:

    • 必要规则:声明符合标准的强制性规则

    • 建议规则:建议但不具有强制性状态

    此外,根据这些规则是否由静态分析工具自动执行,分类为:

    • 自动化:可由静态分析工具完全支持

    • 部分自动化:可以由静态分析工具支持,但可能需要其他实践,如代码审查

    • 非自动化:不支持静态分析工具。

    最后,根据分配目标对规则进行分类:实现、验证、工具链和基础设施。AUTOSAR C++14 标准中的规则将使用有关分类的信息进行标记。

    下一期我们聊一聊,如何为支持 ISO 26262 的 AUTOSAR C++ 合规性选择合适的工具。

  • 相关阅读:
    机器学习与计算机视觉 D2
    vue2技能树(5)-条件渲染和列表渲染
    AWS IAM User assume IAM Role的示例代码
    distcc分布式编译
    关于车载毫米波雷达(是否被)遮挡问题的讨论
    中高级前端面试题总结第一期
    java毕业设计房屋租赁网站Mybatis+系统+数据库+调试部署
    让代码变美的第一天 - 观察者模式
    【wsl】window自带linux配置
    520. 检测大写字母
  • 原文地址:https://blog.csdn.net/u012254369/article/details/126700392