最新AUTOSAR编码指南(中文版)

时间:2022-12-25 22:51:02

        在汽车应用领域,软件开发变得越来越重要。随着安全、环境以及便利性需求的增长,车辆中应用电子系统的数量也在急速增长。其中有90%的创新应用都是基于软件驱动的电子组件。而这些组件的研发成本占车辆开发成本的40%,快速稳定的发展需要整合更多的功能和控制单元,这种情况对于汽车制造商是严重的挑战。这篇白皮书简要概述了新的AUTOSAR(汽车开放系统架构)编码指南,并指出如何遵守该指南。

AUTOSAR是什么?

        AUTOSAR(汽车开放系统架构)旨在规范和论证基本软件单元、接口和总线系统,并且帮助汽车制造商更好地管理日益增长的复杂性系统,同时降低成本。它创建了汽车电子控制单元(ECU)标准化的开放式软件架构。

        作为超过180家汽车制造商的合作伙伴、汽车供应商、工具供应商和半导体供应商,AUTOSAR的核心成员包括:宝马、博世、德国大陆、戴姆勒、福特、通用、标致雪铁龙、丰田和大众。

        由AUTOSAR衍生的第一个开放式架构“经典平台”,它在基本微控制器上实现,适用于具有严格的实时和安全性要求的车辆功能。目前,AUTOSAR又开发了一个名为“自适应平台”的新标准,用于汽车互联和自动驾驶。这一标准旨在满足快速增长的对于车辆互联和高度自主驾驶技术的市场需求。驱动自适应平台标准的技术示例包括:带有外部存储器的高性能32位/ 64位微处理器,并行处理和高带宽通信。

最新AUTOSAR编码指南(中文版)

        依据自适应平台标准开发的软件可与依据AUTOSAR经典平台标准建立的系统有效融合。

        经典平台允许使用C、C++和java语言实现,但通常以C语言为主。目前,自适应AUTOSAR平台提供的应用编程接口(API)使用C++定义实现,这就意味着AUTOSAR在新的自适应平台组件中将C++作为首选编程语言。

        C和C++语言是汽车嵌入式系统的主要编程语言。这是因为这两种语言可以实现对硬件系统直接、有效的控制,这给开发带来极大灵活性,但同时也夹带着风险。有可能出现编译具有未定义行为代码的情况,或者无法保证相同的代码在不同目标硬件上编译和运行时其行为正确性。即使是最有经验的开发人员也会不可避免引入缺陷。

AUTOSAR编码指南是什么?

        为了确保按照AUTOSAR标准编写的代码安全,AUTOSAR邀请PRQA公司成为合作伙伴,一起研究“安全苛求系统中C++14语言的使用指南”(《准则》)1。作为唯一一家AUTOSAR静态分析合作伙伴,PRQA公司贡献出了过去30多年的C++语言编程专业知识、以及在大量的软件开发实践中所积累的丰富经验。

        AUTOSAR共有342条编码规则。其中154条是直接复用MISRA C++标准;131条是基于其它常用编码标准定义的规则,如PRQA公司的HIC++标准;57条是基于研究或其它资源。编程指南中允许一些以前标准中禁止的语言特征,如:动态内存、异常、模板、继承和虚拟函数。该准则规范了这些语言特性在安全范围内的应用。

        AUTOSAR发展的一个原则就是验证规范与标准化并行开展。自适应平台使用C++语言编写,通过AUTOSAR内部实现进行验证。AUTOSAR使用PRQA公司(AUTOSAR唯一的静态分析合作伙伴)先进的QA·C++分析工具,确保演示源码的质量以及对于编码准则的符合性。

为什么需要AUTOSAR编码指南?

        在AUTOSAR编码指南形成之前,对于安全关键类软件的C++标准(C++11和C++14)缺少合适的编码标准约束。现有的针对传统C++标准所制定的规范要么不完整,要么不适用于安全关键类软件的应用。汽车行业最广泛使用的C++编码标准MISRA C++:2008是基于C++03制定的,且已有14年之久。

        由于C++03的介绍中缺少基于AUTOSAR工程的相关MISRA标准描述,目前存在如下改变:
1、C++的演变
2、编译器的改进
3、测试、验证及分析类工具的改进
4、ISO 26262车辆功能安全标准的制定
5、广泛的安全类条目被列入其它标准中,如:
    ▾HIC++(PRQA)2
    ▾JSF AV C++(Lockheed Martin)3
    ▾CERT C++ (Carnegie Mellon)4
    ▾C++核心指南(Bjarne Stroustrup and ▾Herb Sutter)5

        针对AUTOSAR制定的编码指南,可作为现有MISRA C++标准的一个扩展补充。它制定了新的规则,并更新了旧的MISRA规则。

谁将使用AUTOSAR编码指南?

        编码指南中指明:“主要适用于汽车行业,但也同时适用于其它嵌入式应用部分...... AUTOSAR C++14编码指南支持高端嵌入式微控制器,它提供高效、完整的C++14语言支持,同时适用于32位和64位微控制器,以及使用POSIX或类似操作系统的微控制器。”

如何确保代码符合AUTOSAR编码指南?

        传统上,工程师会采用繁复的人工代码审查方式开展代码审查,以确保代码是否按照既定标准编写。这个过程很容易出错,并且不适用于当今大型、复杂的代码量工程中。幸运的是,这些检查现在可以使用工具实现自动化。“静态分析器”就是为这个目的设计的工具。静态分析器不仅报告违反编码规则的情况,而且执行深度代码检查,以突出显示任何未定义的、未指定的或与编译器相关的行为。它分析程序中所有可能执行的路径,标记潜在的运行时错误。通常,它可以发现测试中没有发现的问题,因为测试中要达到覆盖所有可能的执行路径是很不实际的。静态分析器在用于开发安全、可靠类软件的工具链中,属于一个重要组成部分。

        就AUTOSAR而言,使用PRQA的静态分析工具QA·C++,是为了保证其源代码的质量,并在遵守编码准则方面提供了宝贵的见解。结合PRQA在编码指南方面的贡献,这些建议推动了静态分析解决方案的发展,且该方案符合AUTOSAR标准的软件开发优化。

        PRQA的AUTOSAR符合性模块对QA·C++标准消息进行扩充,使其与AUTOSAR指南更为契合。对于中型或大型开发团队,PRQA提供了质量管理控制系统QA·Verify,可实现对工程的有效管理。这保证了所有团队成员除了在项目持续期间跟踪和报告代码质量外,还能够始终应用编码指南。

总结

        AUTOSAR标准将作为一个基准平台,通过最小化功能域之间的障碍有效应用于以后的汽车行业。该标准几乎独立于相关硬件,旨在实现将功能和功能网络映射到系统中不同的控制节点这一目标。虽然该标准是由汽车行业发展而来,但这些准则同样适用于使用C++ 14开发嵌入式软件的其他行业。在应用中,PRQA静态分析工具QA·C++可确保代码没有错误且符合编码规范。