#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)

发布于 2023-1-16 17:31
浏览
0收藏

01. 简介

1.1内容

本规范描述技术范围和方法、AP的背景、逻辑和物理视图的架构,是AUTOSAR自适应平台设计的总体框架。全文32000余字,建议收藏阅读。

02. 技术范围和方法

2.1概述 - 智能ECU的前景

传统ECU主要实现取代或增强机电系统的功能。这些深度嵌入的ECU中的软件根据连接到车辆网络的其他ECU的输入信号和信息来控制电气输出信号。大部分控制软件都是为目标车辆设计和实施的,在车辆使用寿命期间不会发生重大变化。


新的车辆功能,如高度自动化驾驶,将在车辆中引入高度复杂和计算资源要求苛刻的软件,并且必须满足严格的完整性和安全性要求,实现环境感知和行为规划等功能,并将车辆集成到外部后端和基础设施系统中。由于外部系统不断发展或功能改进,车辆中的软件需要在车辆的整个生命周期内进行更新。


AUTOSAR 经典平台(CP)标准解决了深嵌式 ECU 的难题,而上述 ECU 的需求无法满足。因此,AUTOSAR 指定了第二个软件平台,即 AUTOSAR 自适应平台(AP)。AP主要提供高性能计算和通信机制,并提供灵活的软件配置,例如支持无线软件更新。专门为 CP 定义的功能(例如访问电信号和汽车专用总线系统)可集成到 AP 中,但不作为标准化的重点关注。

2.2技术驱动因素

背后有两大类技术驱动因素。一个是以太网,另一个是处理器。


车载网络不断增长的带宽需求导致了Ethernet的引入,Ethernet提供更高的带宽和交换网络,与传统的车载通信技术(如CAN)相比,可以更有效地传输长消息,点对点通信等。CP虽然支持以太网,但主要是为传统通信技术设计的,并且已经针对传统通信技术进行了优化,很难充分利用基于以太网的通信功能并从中受益。


同样,近年来,随着车辆变得越来越智能,对处理器的性能要求也大幅增长。多核处理器已经与 CP 一起使用,但对处理能力的需求需要的不仅仅是多核。具有数十到数百个内核的多核处理器、GPGPU(通用GPU)、FPGA和专用加速器正在兴起,因为它们提供的性能比传统MCU高出几个数量级。越来越多的内核压倒了CP的设计,CP  最初是为单核MCU设计的,尽管它可以支持多核。此外,随着计算能力的膨胀,即使在数据中心,电源效率也已经成为一个问题,实际上对于这些智能ECU来说,这一点更为重要。从半导体和处理器技术的角度来看,受波拉克规则的约束,物理上不可能无休止地增加处理器频率,扩展性能的唯一方法是使用多个内核并行执行。此外,众所周知,最佳的每瓦性能是通过混合使用不同的计算资源(如多核、协处理器、GPU、FPGA 和加速器)实现的。这被称为异构计算 - 现在正在HPC(高性能计算)中利用,这些内容无疑远远超出了CP的范围。


还值得一提的是,处理器和更快的通信具有综合效应。随着越来越多的处理元件像多核处理器一样被组合在单个芯片中,这些处理元件之间的通信正变得比传统的ECU间通信更快、更高效。这是通过新型处理器互连技术(如片上网络(NoC))实现的。芯片内更高处理能力和更快通信的这种综合效应也促使人们需要一个可以扩展不断增长的系统要求的新平台。

2.3平台适应性 -特性

AP的特征是由第3.1节和第3.2节中概述的因素决定的。这种格局不可避免地需要更多的计算能力,而技术趋势为满足这些需求提供了基准。然而,HPC在安全相关字段的空间,虽然功率和成本效益也很重要,但本身就带来了各种新的技术挑战。


为了解决这些问题,AP采用了传统上ECU无法充分利用的各种成熟技术,同时允许AP实现的最大自由度来利用创新技术。

2.3.1 C++

从上到下,应用可以C++编程。它现在是在软件行业和学术界的性能关键型复杂应用中开发新算法和应用软件的首选语言。如果正确使用,应该可以更快地适应新算法,并提高应用开发生产力。

2.3.2 SOA

为了支持复杂的应用,同时在处理分发和计算资源分配时允许最大的灵活性和可扩展性,AP 遵循面向服务的架构(SOA)。SOA 基于这样一个概念,即系统由一组服务(其中一个服务可以依次使用另一个服务)以及根据其需要使用一个或多个服务的应用组成。通常,SOA表现出系统化系统的特征,AP也具有这些特性。例如,服务可能驻留在应用同时运行的本地ECU上,也可以驻留在远程ECU上,该ECU也正在运行AP的另一个实例。在这两种情况下,应用代码是相同的,通信基础结构将处理提供透明通信的差异。看待这种架构的另一种方式是分布式计算,通过某种形式的消息传递进行通信。总的来说,所有这些都代表了同一个概念。这种消息传递、基于通信的架构还可以受益于快速和高带宽通信(如以太网)的兴起。

2.3.3并行处理

分布式计算本质上是并行的。由于不同的应用使用一组不同的服务,SOA 具有这一特征。提供并行处理能力的进步或多核处理器和异构计算提供了利用计算能力来匹配固有并行性的技术机会。因此,随着多核异构计算技术的进步,AP具有扩展其功能和性能的架构能力。事实上,硬件和平台接口规范只是等式的一部分,操作系统/虚拟机管理程序技术和开发工具(如自动并行化工具)的进步也至关重要,这将由AP提供商和行业/学术生态系统来实现。AP也旨在适应这些技术。

2.3.4 利用现有标准

重新发明轮子是没有意义的,特别是在涉及规格而不是实现时。与第3.3.1节中所述,AP采取重用和调整现有开放标准的策略,以促进AP本身的更快发展,并从现有标准的生态系统中受益。因此,在开发AP规范时,一个关键的重点不是随便引入现有标准已经提供的新替换功能。例如,这意味着不会因为现有标准提供了所需的功能而随意引入新接口,但接口表面上不容易理解。

2.3.5安全

AP目标系统通常需要一定程度的安全性和安全性,可能处于最高水平。引入新概念和技术不应破坏这些要求,尽管实现这些要求并非易事。为了应对这一挑战,AP 结合了架构、功能和过程方法。该架构基于SOA的分布式计算,其本质上使每个组件更加独立且不受意外干扰,专用功能有助于实现功能安全性和信息安全性,以及诸如C++编码指南之类的指南,这有助于安全可靠地使用C++等复杂语言。

2.3.6动态规划

AP支持应用的增量部署,其中资源和通信是动态管理的,以减少软件开发和集成的脆弱性,从而实现较短的迭代周期。增量部署还支持探索性软件开发阶段。


对于产品交付,AP 允许系统集成商精细限制动态行为,以消除不必要的或不良影响的风险,从而实现安全鉴定。应用的动态行为将受到执行清单中所述的约束的限制(请参见第 4.6 节)。多个应用的清单的相互作用可能在设计时就已经导致了这种情况。然而,在执行时资源和通信路径的动态分配只能以定义的方式实现,如在配置范围内。


AP 的实现可能会进一步从软件配置中删除动态功能以供生产使用。动态规划的示例可以是:


  • 服务发现过程的预先确定


  • 仅将动态内存分配限制为启动阶段


  • 除基于优先级的调度外,还具有公平的调度策略


  • 固定进程分配到 CPU 内核


  • 仅访问文件系统中预先存在的文件


  • 应用对 AP API 使用的约束


  • 仅执行经过身份验证的代码
2.3.7敏捷开发

虽然没有直接反映在平台功能中,但AP旨在适应不同的产品开发流程,特别是基于敏捷的流程。对于基于敏捷的开发,至关重要的是,系统的底层架构是可增量扩展的,并且可在部署后更新系统。AP 的架构应该允许这样做。作为概念证明,AP规范和演示(AP的演示实现)都是用Scrum开发的。

2.4集成经典、自适应和非AUTOSAR ECU

如前几节所述,AP 不会取代 IVI/COTS 中的 CP 或非 AUTOSAR 平台。相反,它将与这些平台和外部后端系统(如路边基础设施)进行交互,以形成一个集成系统(参见图 2.1 和 2.2)。例如,CP已经包含了AP支持的某些/ IP以及其他原生协议。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 2.1:不同平台的示例性部署

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 2 . 2 :AP 和 CP 的示例性交互

2.5规范范围

AP 定义了运行时系统架构、平台的构成以及它提供的功能和接口。它还定义了用于开发此类系统的机器可读模型。规范应提供有关使用平台开发系统的必要信息,以及实现平台本身需要满足的内容。

03. 架构

3.1逻辑架构

3.1.1环境

图 3.1 显示了 AP 的架构。自适应应用(AA)运行在 ARA自适应应用的 AUTOSAR 运行时)之上。ARA由功能集群提供的应用接口组成,这些接口属于自适应平台基础自适应平台服务。自适应平台基础提供AP的基本功能,自适应平台服务提供AP的平台标准服务。任何AA也可以向其他AA提供服务,如图中所示为非平台服务


功能集群的接口,无论是自适应平台基础还是自适应平台服务,从AA的角度来看都是无所谓的 - 它们只提供指定的C++接口或AP将来可能支持绑定的任何其他语言的接口。在接口下层确实存在差异。另外请注意,在 ARA 接口下,包括在 AA 上下文中调用的 ARA 库,可以使用 ARA 以外的其他接口来实现 AP 规范,这取决于 AP 实现的设计。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 3.1:AP 架构逻辑视图


请注意,图 3.1 包含不属于当前 AP 版本的功能集群,以便更好地了解整体结构。此处未显示的其他新功能集群很可能在 AP 的未来版本中添加。

3.1.2语言绑定、C++标准库和 POSIX API

这些 API 的语言绑定基于C++,C++标准库也可作为 ARA 的一部分提供。关于OS API只有PSE51接口,POSIX标准的singleprocess配置文件作为ARA的一部分提供。选择 PSE51 是为了为现有的 POSIX 应用提供可移植性,并实现应用之间的免干扰性。


请注意,C++标准库包含许多基于 POSIX 的接口,包括多线程 API。建议不要将C++标准库线程接口与本机 PSE51 线程接口混合使用,以避免复杂情况。遗憾的是,C++标准库并未涵盖所有 PSE51 功能,例如设置线程调度策略。在这种情况下,可能需要结合使用这两个接口。

3.1.3应用启动和关闭

应用的生命周期由执行管理(EM)管理。应用的加载/启动是使用 EM 的功能进行管理的,并且需要在系统集成时或运行时进行适当的配置才能启动应用。事实上,从EM的角度来看,除了EM本身之外,所有功能集群都是应用,它们也以相同的方式启动。图 3.2 说明了 AP 内部和 AP 上不同类型的应用。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 3.2:应用


请注意,EM 不会决定应用启动或终止的时间和时间。一种特殊的 FC,称为状态管理(SM)控制器,根据系统的设计命令 EM,仲裁不同的状态,从而控制整体系统行为。由于这里的系统是指整个机器AP及其应用正在运行,因此实现的内部行为是特定于项目的。SM 还与其他 FC 交互,以协调整体机器行为。SM 应仅使用标准 ARA 接口,以保持不同 AP 堆栈实现之间的可移植性。

3.1.4应用交互

关于AA之间的交互,PSE51不包括IPC(进程间通信),因此AA之间没有直接的接口进行交互。通信管理(CM)是唯一的显式接口。CM 还为机器内部通信和机器间通信提供面向服务的通信机制,这对应用是透明的。CM 处理服务请求/响应的路由,而不管服务和客户端应用的拓扑部署如何。请注意,其他ARA接口可能会在内部触发AA之间的交互,但是这不是一个显式通信接口,而只是各个ARA接口提供的附件的副产品。

3.1.5非标准接口

AA 和功能群集可以使用任何非标准接口,前提是它们不与标准 AP 功能冲突,并且符合项目的安全/安保要求。除非它们是纯应用本地运行时库,否则应注意此类应用方式保持在最低限度,因为这将影响软件对其他AP实现的可移植性。

3.2 物理架构

[1] 这里讨论了AP的物理架构。请注意,本节中的大多数内容仅用于说明目的,并不构成 AP 的正式需求规范,因为 AP 的内部结构是由具体实现定义的。对 AP 实现的任何正式要求都已明确说明。作为附加信息来源请参阅 [4],其中更详细地描述了 AP 内部架构。

3.2.1 OS、进程和线程

AP 操作系统需要提供多进程 POSIX 操作系统功能。每个 AA 都实现为一个独立的进程,具有自己的逻辑内存空间和命名空间。请注意,单个 AA 可能包含多个进程,这可以部署到单个 AP 实例上,也可以分布在多个 AP 实例上。从模块组织的角度来看,每个进程都是由操作系统从可执行文件中实例化的。可从单个可执行文件实例化多个进程。此外,AA 可能构成多个可执行文件。


功能群集通常也作为进程实现。功能集群也可以通过单个进程或多个(子)进程实现。自适应平台服务和非平台服务也作为流程实现。


所有这些进程都可以是单线程进程或多线程进程。但是,它们可以使用的 OS API 会有所不同,具体取决于进程所属的逻辑层。如果他们是在ARA上运行的AA,那么他们应该只使用PSE51。如果进程是功能群集之一,则可以自由使用任何可用的操作系统接口。


总之,从操作系统的角度来看,AP和AA只是一组进程,每个进程包含一个或多个线程 - 这些进程之间没有区别,尽管AP的实现可以提供任何类型的分区。这些进程确实通过 IPC 或任何其他可用的操作系统功能相互交互。请注意,AA 进程不能直接使用 IPC,只能通过 ARA 进行通信。

3.2.2 基于库或基于服务的功能集群实现

如图 3.1 所示,功能群集可以是自适应平台基础或自适应平台服务。如前所述,这些通常都是过程。为了让他们与AA(也是进程)进行交互,他们需要使用IPC。有两种替代设计来实现这一点。一种是“基于库”的设计,其中由功能集群提供并链接到AA的接口库直接调用IPC。另一种是“基于服务”的设计,其中进程使用通信管理功能并具有链接到AA的代理库调用。通信管理接口在AA进程和服务器进程之间协调IPC。请注意,它是 AA 仅通过通信管理直接执行 IPC,还是通过代理库与服务器直接 IPC 混合使用,这是实现定义的。


为功能集群选择设计的一般准则是,如果仅在AP实例中本地使用,则基于库的设计更合适,因为它更简单有效。如果以分布式方式从其他AP实例使用它,建议采用基于服务的设计,因为无论客户端AA和服务的位置如何,通信管理都能提供透明的通信。属于 Adaptive Platform Foundation 的功能集群是“基于库的”,自适应平台服务是“基于 Service 的”,顾名思义是正确的。


最后,请注意, 只要FC的实现满足FC定义的RS和SWS,FC实现允许不具有进程而是以库的形式实现在AA进程的上下文中运行,在这种情况下,AA 和 FC 之间的交互将是常规过程调用,而不是如前所述基于 IPC 的交互。

3.2.3功能集群之间的交互

通常,功能集群可以以特定于AP实现的方式相互交互,因为它们不绑定到ARA接口,例如PSE51限制了IPC的使用。它确实可能使用其他功能集群的ARA接口,这些接口是公共接口。功能群集的一个典型交互模型是使用功能群集的受保护接口来提供实现功能群集的特殊功能所需的特权访问。


此外,从AP18-03开始,引入功能间集群(IFC)接口的新概念。它描述了 FC 提供给其他 FC 的接口。请注意,它不是 ARA 的一部分,也不构成 AP 实现的正式规范要求。提供这些是为了通过阐明FC之间的交互来促进AP规范的开发,并且它们还可以为AP规范的用户提供更好的AP架构视图。这些接口在相应的FC SWS的附件中进行了描述。

3.2.4机器/硬件

AP 将运行它的硬件视为机器。基本原理是实现一致的平台视图,而不管可能使用的任何虚拟化技术。机器可以是真实的物理机、完全虚拟化的机器、半虚拟化的操作系统、操作系统级虚拟化容器或任何虚拟化环境。


在硬件上,可以有一台或多台机器,并且只有一台 AP 实例在一台机器上运行。通常认为,这种“硬件”包括单个芯片,托管一台或多台机器。但是,如果AP实现允许,则多个芯片形成一台机器也是可能的。

3.3方法论和清单

支持功能应用的分布式、独立和敏捷开发需要对开发方法采用标准化的方法。AUTOSAR自适应方法涉及工作产品的标准化,用于描述服务,应用,机器及其配置等结构;以及定义这些工作产品如何交互以实现设计信息交换的相应任务,实现为自适应平台开发产品所需的各种活动的设计信息交换。


图 3.3 说明了如何实施适应性方法的概述草案。有关这些步骤的详细信息,请参阅 [3]。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 3.3:AP 开发工作流

3.4清单

清单表示一段 AUTOSAR 模态描述,该描述是为支持 AUTOSAR AP 产品的配置而创建的,该描述将上载到 AUTOSAR AP 产品,可能与包含清单适用的可执行代码的其他项目(如二进制文件)结合使用。


清单的使用仅限于 AUTOSAR AP。但是,这并不意味着在面向 AUTOSAR AP 的开发项目中生成的所有 ARXML 都将自动被视为清单。事实上,AUTOSAR AP通常不专门用于车辆项目。


一辆典型的车辆很可能还配备了许多在AUTOSAR CP上开发的ECU,因此,整个车辆的系统设计必须涵盖两者 - 基于AUTOSAR CP构建的ECU和在AUTOSAR AP之上创建的ECU。


原则上,可以将术语“清单”定义为在概念上只有一个“清单”,并且每个部署方面都将在此上下文中处理。这似乎不合适,因为很明显,与清单相关的模型元素存在于典型开发项目的完全不同的阶段中。


出于这方面的主要动机,即在应用设计旁边,有必要将术语清单的定义细分为三个不同的分区:


  • 应用设计这种描述指定了适用于为 AUTOSAR AP 创建应用软件的所有与设计相关的方面。不一定需要部署到 adaptive 平台机器,但应用设计有助于在执行清单和服务实例清单中定义应用软件的部署。


  • 执行清单他的清单类型用于指定在   AUTOSAR AP 上运行的应用的部署相关信息。执行清单与实际的可执行代码捆绑在一起,以支持将可执行代码集成到机器上。


  • 服务实例清单此类清单用于指定如何根据基础传输协议的要求配置面向服务的通信。服务实例清单与实际的可执行代码捆绑在一起,该代码实现面向服务的通信的相应用法。


  • 机器清单这种清单应该描述与部署相关的内容,这些内容仅适用于运行 AUTOSAR AP 的基础机器(即机器上没有任何运行应用)的配置。机器清单与用于建立 AUTOSAR AP 实例的软件捆绑在一起。


不同种类的清单的定义(和用法)之间的时间划分导致的结论是,在大多数情况下使用不同的物理文件来存储三种清单。


除了应用设计和不同类型的清单之外,AUTOSAR方法还支持系统设计,可以描述在单个模型中使用的两个AUTOSAR平台的软件组件。不同 AUTOSAR 平台的软件组件可以以面向服务的方式相互通信。但是,也可以描述信号到服务的映射,以在面向服务的通信和基于信号的通信之间创建桥梁。

3.5应用设计

应用设计描述了适用于为 AUTOSAR AP 创建应用软件的所有与设计相关的建模。

应用设计侧重于以下几个方面:


  • 用于对软件设计和实现的信息进行分类的数据类型


  • 服务接口是面向服务通信的关键元素


  • 定义应用如何访问面向服务的通信


  • 持久性接口是访问持久性数据和文件的关键元素


  • 定义应用如何访问持久性存储


  • 定义应用如何访问文件


  • 定义应用如何访问加密软件


  • 定义应用如何访问平台运行状况管理


  • 定义应用如何访问时基


  • 序列化属性,用于定义如何为网络上的传输序列化数据的特征


  • 客户端和服务器功能的说明


  • 对应用进行分组,以便于软件的部署。


应用设计中定义的工件独立于应用软件的特定部署,因此便于在不同的部署方案中重用应用实现。

3.6执行清单

执行清单的目的是提供将应用实际部署到 AUTOSAR AP 上所需的信息。


一般的想法是使应用软件代码尽可能独立于部署方案,以增加应用软件可以在不同部署方案中重用的几率。


通过执行清单,应用的实例化受到控制,因此可以


  • 在同一台机器上多次实例化同一应用软件,或


  • 将应用软件部署到多台机器,并为每台机器实例化应用软件。


执行清单侧重于以下几个方面:


  • 用于定义如何启动应用实例的启动配置。启动包括启动选项和访问角色的定义。每个启

     动可能依赖于机器状态和/或功能组状态。


  • 资源管理,特别是资源组分配。

3.7服务实例清单

在网络上实现面向服务的通信需要特定于所用通信技术(例如 SOME/IP)的配置。由于通信基础结构在服务提供者和服务请求者上的行为应相同,因此服务的实现必须在两端兼容。


服务实例清单侧重于以下几个方面:


  • 服务接口部署,用于定义服务在特定通信技术上的表示方式。


  • 服务实例部署,用于为特定提供和必需的服务实例定义通信技术所需的凭据。


  • 端到端保护的配置


  • 安全防护的配置


  • 日志和跟踪的配置

3.8机器清单

机器清单允许配置在特定硬件(机器)上运行的实际自适应平台实例。


机器清单侧重于以下几个方面:


  • 网络连接的配置和网络技术的基本凭据的定义(例如,对于以太网,这涉及静态IP地址的设置或DHCP的定义)。


  • 服务发现技术的配置(例如,对于 SOME/IP,涉及要使用的 IP 端口和 IP 多播地址的定义)。


  • 已用机器状态的定义


  • 所用功能组的定义


  • 自适应平台功能集群实现的配置(例如,操作系统提供具有特定权限的操作系统用户列表)。


  • 加密平台模块的配置


  • 平台运行状况管理的配置


  • 时间同步的配置


  • 文档化可用的硬件资源(例如,有多少 RAM 可用;有多少个处理器内核可用)

04. 操作系统

4.1概述

操作系统(OS)负责自适应平台上所有应用的运行时调度、资源管理(包括监管内存和时间限制)和进程间通信。该操作系统与执行管理结合使用,执行管理负责平台初始化,并使用操作系统执行应用的启动和关闭。


自适应平台不会为高性能处理器指定新的操作系统。相反,它定义了供自适应应用使用的执行上下文和操作系统接口(OSI)。


OSI 规范包含作为 ARA(自适应应用的标准应用接口)一部分的应用接口。操作系统本身很可能提供执行管理启动应用所需的其他接口,例如创建进程。但是,提供此类功能的接口等不能作为ARA的一部分使用,并且它被定义为依赖于平台实现。


OSI 提供 C 和 C++ 接口。对于 C 程序,应用的主要源代码业务逻辑包括 POSIX 标准中定义的 C 函数调用,即 IEEE1003.13 [1] 中定义的 PSE51。在编译过程中,编译器确定平台操作系统中的哪个C库提供这些C函数,并且应用可执行文件应在运行时链接。对于C++程序,应用软件组件的源代码包括C++标准及其标准C++库中定义的函数调用。

4.2 POSIX

市场上有几种操作系统,例如 Linux,提供符合POSIX标准的接口。但是,与平台服务和基础相比,应用需要对操作系统使用更受限制的 API。


一般假设是用户应用应使用PSE51作为操作系统接口,而平台应用可以使用完整的POSIX。如果在应用级上需要更多功能,则它们将从 POSIX 标准中获取,并且尽可能不新指定。


自适应平台基础和自适应平台服务功能的实现可能会使用进一步的 POSIX 调用。特定调用将留给实现者,而不是标准化的。

4.3调度

操作系统提供多线程和多进程支持。标准调度策略由  POSIX 标准定义,SCHED_FIFO和  SCHED_RR。允许使用其他调度策略(如SCHED_DEADLINE或任何其他操作系统特定策略),但限制是这些策略可能无法跨不同的 AP 实现进行移植。

4.4内存管理

多进程支持背后的原因之一是实现不同功能集群和AA之间的“免干扰性”。操作系统的多进程支持强制每个进程位于独立的地址空间中,与其他进程分开并受到保护。同一可执行文件的两个实例在不同的地址空间中运行,以便它们可以在启动时共享同一入口点地址和代码以及数据值,但是,数据将位于内存中的不同物理页中。

4.5设备管理

设备管理在很大程度上是特定于操作系统的。有意为之,自适应平台基础倾向于创建服务以公开主要系统功能。

虽然目前没有计划标准化设备驾驶员本身的具体 API,但此类驾驶员实现的更高级功能可以通过自适应平台服务实现标准化。

4.6网络

多台机器之间以及与其他传感器之间的主要互连机制预计将基于以太网。因此,清楚地描述了基于 TCP/IP 和 UDP/IP 的协议的使用。因此,预计操作系统将提供这样的网络堆栈。


通过使用通信管理,应用将透明地受益于网络支持。作为自适应平台基础的一部分, VLAN、IPSEC 等其他功能正在实现系统内部和系统之间的安全通信。

05. 执行管理

5.1概述

执行管理负责系统执行管理的各个方面,包括自适应平台的初始化和进程的启动/关闭。执行管理与操作系统结合使用,以配置进程的运行时规划。

5.2系统启动

当机器启动时,操作系统将被初始化,随后执行管理将作为平台的初始过程启动。然后,自适应平台基础的其他平台级流程(代表功能集群)由执行管理启动。在自适应平台基础启动并运行后,执行管理将继续启动自适应应用的流程。平台级和应用级进程的启动顺序由执行管理根据机器清单和执行清单中指定的依赖项确定。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 5.1:AP 启动顺序


自适应应用可以由多个可执行文件元素组成,这些元素通常对应于文件系统上的可执行文件。每个可执行文件可以有多个进程配置(以及启动配置),具体取决于可执行文件处于活动状态的功能组状态。


执行管理可选地支持经过身份验证的启动,其中从信任锚启动自适应平台,同时保持信任链。在经过身份验证的启动期间,执行管理将验证应用的真实性和完整性,并在检测到违规时(可选)阻止其执行。通过这些机制建立一个受信任的平台。

5.3执行管理职责

执行管理负责自适应平台执行管理和应用执行管理的各个方面,包括:


  1. 1. 平台生命周期管理执行管理作为自适应平台启动阶段的一部分启动,负责自适应平台和已部署应用的初始化。

  2. 2. 应用生命周期管理执行管理负责已部署应用的有序启动和关闭。执行管理根据机器清单和执行清单中的信息确定已部署的应用集,并根据声明的执行依赖关系派生启动/关闭顺序。根据机器状态和功能组状态,已部署应用的进程在自适应平台启动期间或之后启动,但是,并非所有应用都将立即开始活动工作,因为许多应用将向其他应用提供服务,因此等待并“侦听”传入的服务请求。


执行管理不负责应用的运行时调度,因为这是操作系统的责任。但是,执行管理负责配置 OS,以使 OS 能够根据执行管理从机器清单和执行清单中提取的信息执行必要的运行时规划。

5.4确定性执行

确定性执行提供了一种机制,使得使用给定输入数据集的计算始终产生一致的输出,而不考虑干扰。执行管理区分时间和数据确定性。前者声明输出始终在截止时间之前生成,而后者是指从相同的输入数据集和内部状态生成相同的输出。


执行管理提供的支持侧重于数据确定性,因为时间确定性是通过提供足够的资源来处理的。对于数据确定性,执行管理提供了确定性客户端 API,以支持对过程内部周期、确定性工作线程池、激活时间戳和随机数的控制。确定性客户端与通信管理交互,以将数据处理与周期激活同步。确定性客户端支持的 API  及其与应用的关联如图 5.2 所示。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 5.2:确定性客户端


除了进程本地确定性客户端之外,执行管理还支持确定性SyncMaster,该管理器提供多个确定性客户端实例之间的协调,以确保其确定性执行是同步的。

5.5资源限制

自适应平台允许在同一台机器上执行多个自适应应用,因此确保不受干扰是系统属性。因此,行为不正确的自适应应用应受到它影响的其他应用的能力的限制,例如,应防止应用进程消耗比指定更多的CPU时间,因它会对其他应用的正常运行产生后续影响。

执行管理通过配置一个或多个将应用进程分配到的资源组来支持不受干扰。然后,为每个资源组分配一个 CPU 时间或内存限制,以允许限制应用的可用资源。

5.6应用恢复

执行管理负责进程启动/停止的状态相关管理,因此它必须具有启动和停止进程的特殊权限。平台运行状况管理监视进程,如果任何进程的行为不在指定参数范围内,则可能会触发恢复操作。恢复操作由集成商根据平台运行状况管理的软件架构要求定义,并在执行清单中进行配置。

5.7可信平台

为了保证系统的正确功能,确保在平台上执行的代码具有合法来源至关重要。保留此属性允许集成商构建受信的平台。


实现可信平台的系统的关键属性是信任锚(也称为信任根)。信任锚通常被实现为存储在安全环境中的公钥,例如在不可修改的持久内存或 HSM 中。


系统设计人员负责确保至少系统从信任锚开始,并且信任一直保持到执行管理启动。根据系统设计人员为建立信任链而选择的机制,在系统启动的此时,可能已经检查了整个系统的完整性和真实性。但是,如果系统设计人员仅确保已执行的软件已检查完整性和真实性,则执行管理在接管系统控制权时将接管继续信任链的责任。在这种情况下,系统集成商负责确保正确配置执行管理。


将信任从信任锚传递到操作系统和自适应平台(即建立信任链)的一个示例可能如下所示:信任锚 - 根据定义,作为一个真实的实体 - 在启动引导加载程序之前对引导加载程序进行身份验证。在引导过程的每个后续步骤中,应首先对要启动的可执行文件进行身份验证。这种真实性检查应由已经过身份验证的实体完成,即真实性检查可以由先前启动的可执行文件或由某些外部实体(如HSM)完成,例如示例。


操作系统真实启动后,它将启动执行管理作为其首批进程之一。在启动执行管理之前,操作系统应确保执行管理的真实性已经过验证,并且是经过身份验证的,因此是值得信赖的实体。


注意:如果信任锚本身的功能(根据定义是真实的)未检查身份验证,则在应用可执行文件之前,必须对应用于验证可执行文件真实性的软件进行身份验证。例如,如果加密 API 用于验证可执行文件的身份验证,则加密 API 本身在使用之前应由某个受信任的实体进行身份验证。


执行管理现在接管了在启动自适应应用之前对其进行身份验证的责任。但是,验证可执行代码的完整性和真实性的可能性不止一种。在 [6] 中,提供了完成此任务的可能机制列表。

06.状态管理

状态管理是一个独特的功能集群,主要用于特定于ECU开发项目,通常,最终实现将由系统集成商执行。它负责 AUTOSAR 自适应平台操作状态的所有方面,包括处理传入事件、确定这些事件/请求的优先级以设置相应的内部状态。状态管理可能由一个或多个状态机组成,具体取决于项目需求。


状态管理通过特定于项目的 ara::com 服务接口与自适应应用进行交互,该接口由“字段”组成,如下所述。状态管理与其他功能集群之间的交互应通过每个功能集群定义的标准化接口来完成。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 6.1:状态管理交互


状态管理可以请求以下效果:


  • 可以请求将功能组设置为专用状态


  • (部分)可以请求取消/激活网络


  • 可以请求关闭或重新启动机器


  • 其他自适应(平台)应用的行为可能会受到影响


  • 可以执行特定于项目的操作


  • 从平台运行状况管理或执行管理通知(监督)错误中恢复


  • 根据诊断请求,根据诊断地址执行项目特定的重置


  • 准备和验证软件集群,以便根据更新和配置管理中的请求进行安装、更新或删除


  • 影响正在运行的进程的行为,以实现机器(部件)内的同步行为(例如电源模式)


为了实现同步行为,状态管理通过通信管理的通信组的范围生成ara::com 方法和字段,提供定义的消息和回复的消息。


状态管理通过 ara::com 提供一组“触发器”和“通知程序”字段。SM 实质上侦听“触发器”,并在内部执行特定于实现的统计处理,并为“通知程序”字段(如果有)提供结果。


由于状态管理功能至关重要,因此必须通过  IAM(身份和访问管理)来保护来自其他功能集群或应用的访问。状态管理由平台运行状况管理监视和监督。


状态管理功能是高度特定于项目的,AUTOSAR 决定暂时不为自适应平台指定经典平台 BswM 等功能。计划仅指定一组基本服务接口,并将行为仲裁逻辑封装到特定项目的代码中。


仲裁逻辑代码可以单独开发,也可以(部分)基于标准化的配置参数生成。

7. 通信管理

7.1概述

通信管理适用于分布式实时嵌入式环境中应用之间通信的各个方面。


背后的概念是从实际机制中抽象出来,以查找和连接通信伙伴,以便应用软件的实施者可以专注于其应用的特定目的。

7.2 面向服务的通信

服务的概念是指向应用提供的功能超出了基本操作软件已经提供的功能。通信管理软件提供了为机器内通信以及机器间通信提供或使用此类服务的机制。


服务由以下各项组合组成:


  • 事件


  • 方法


  • 字段


通信参与者之间的通信路径在设计、启动或运行时建立。该机制的一个重要组成部分是充当代理实例的服务注册表,也是通信管理软件的一部分。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 7.1:面向服务的通信


提供服务的每个应用都在服务注册表中注册这些服务。若要使用服务,应用需要通过查询服务注册表来查找请求的服务,此过程称为服务发现。

7.3语言绑定和网络绑定

通信管理提供了标准化的方法,即向应用实现者提供定义的服务(上层,语言绑定)以及服务在网络上的相应表示形式(下层,网络绑定)。这确保了源代码的可移植性和跨平台不同实现的编译服务的可比较性。


语言绑定定义如何使用目标编程语言的便捷功能将服务的方法、事件和字段转换为可直接访问的标识符。性能和类型安全(只要目标语言支持)是主要目标。因此,语言绑定通常由服务接口定义馈送的源代码生成器实现。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

Figure 8.2:示例语言和网络绑定


网络绑定定义如何序列化已配置服务的实际数据并将其绑定到特定网络。它可以基于通信管理配置(AUTOSAR 元模型的接口定义)实现,方法是解释生成的特定于服务的配方或直接生成序列化代码本身。目前,通信管理支持 SOME/IP、DDS、IPC(进程间通信或任何其他自定义绑定)、信号 PDU(基于信号的网络绑定)和基于信号的静态网络绑定。


本地服务注册表也是网络绑定的一部分。


请注意:语言绑定和网络绑定之间的接口被视为通信管理软件中的专用接口。因此,定义此接口的规范目前超出了范围。尽管如此,鼓励平台供应商为其软件独立定义这样的接口,以便轻松实现其他语言绑定,而不是在其平台实现中与其他网络绑定一起C++。

7.4 C++语言绑定的生成代理和骨架

C++语言绑定的上层接口提供 AUTOSAR 元模型的接口说明中定义的服务的面向对象映射。


生成器是通信管理软件开发工具的一部分,可生成C++类,这些类包含每个相应服务的字段、事件和方法的类型安全表示。


在服务实现端,这些生成的类被命名为“服务提供框架”。在客户端,它们称为服务请求代理。


对于服务方法,服务请求代理提供同步(在服务器返回结果之前阻止调用方)和异步调用(被调用的函数立即返回)的机制。调用方可以并行启动其他活动,并在服务器的返回值通过 Core Type ara::core::Future  的特殊功能可用时接收结果(请参见第 16.1.4 节)。


可以配置平台实现,以便生成器创建模型类,以便在相应的服务器尚不可用时轻松开发客户端功能。相同的机制也可用于对客户端进行单元测试。


虽然代理类可以由客户端直接使用,但C++绑定的服务提供框架只是抽象基类。服务实现应派生自生成的基类并实现相应的功能。


ara::com的接口还可以为安全相关的E2E保护通信提供代理和骨架。这些接口的设计旨在确保与应用的兼容性,无论 E2E 保护是打开还是关闭。

7.5静态和动态配置

通信路径的配置可以在设计时、启动时或运行时进行,因此被视为静态或动态:


  • 全静态配置根本不需要服务发现,因为服务器会知道所有客户端且客户端都知道服务器。


  • 应用代码无发现客户端知道服务器,但服务器不知道客户端。事件订阅是应用中唯一的动态通信模式。


  • 应用全服务发现在配置时没有已知的通信路径。用于服务发现的 API 允许应用代码在运行时选择服务实例。

7.6服务协定版本控制

在 SOA 环境中,服务的客户端和提供者依赖于涵盖服务接口和行为的契约。在服务开发过程中,服务接口或行为可能会随时间而变化。因此,引入了服务协定版本来区分服务的不同版本。AUTOSAR Adaptive 平台支持服务的设计和部署阶段的协定版本控制。此外,客户端的“服务发现”应配置为支持版本向后兼容性。这意味着,如果客户端服务版本与客户端所需的服务版本向后兼容,则这些服务可以连接到不同版本的服务提供者。

7.7 原始数据流接口

除了面向服务的通信外,通信管理还提供了一个独立的API,用于处理指向外部ECU的原始二进制数据流,例如ADAS系统中的传感器。该 API 是静态的,它为客户端应用实现功能建立与服务器的通信通道,并为服务器应用实现等待来自客户端的传入连接的功能。该 API 为客户端和服务器提供用于关闭通信通道,以及通过通信通道读取和写入原始数据(字节流)的功能。原始数据流通道可由集成商通过应用部署信息进行配置,例如包含网络端点信息和所选协议。目前,TCP/ IP socket用作传输层,将来可添加其他替代方案。原始数据流接口在命名空间 ara::com::raw 中可用。

08. 诊断

8.1概述

诊断管理(DM)实现了基于ISO 14229-1(UDS)和ISO 13400-2(DoIP)的ISO 14229-5(UDSonIP)。


诊断管理表示基础层上自适应平台的功能群集。


该配置基于经典AUTOSAR平台的诊断提取模板(DEXT)。


支持的传输层是 DoIP。DoIP 是一种虚拟发现协议,设计用于与诊断基础结构(诊断客户端、生产/车库测试人员)进行板外通信。


车载或远程诊断通常使用其他传输协议,因此提供了一个API来扩展具有自定义传输层的平台。


UDS通常用于车辆的生产和车库内,以便能够修理车辆。

8.2软件集群

原子可更新/可扩展部件由软件集群s (SWCL)管理。软件集群涵盖与更新已安装或部署一组特定新功能/应用相关的所有内容。因此,自适应诊断管理器支持为每个已安装的软件集群提供自己的诊断地址。但它也支持整个机器的单个诊断地址或两者之间的任何诊断部署。因此,自己的诊断地址始终具有自己的诊断服务实例。每个软件集群自己的诊断服务实例也为诊断提供了独立的开发文件,例如自己的独立ODX文件。请注意,此软件集群还与 UCM 的软件包相结合,以便软件集群可以更新或引入新机器。

8.3诊断通信子集群

诊断通信子集群实现诊断服务(如经典平台的 DCM)。目前,支持的服务有限,但对更多 UDS 服务的支持将在将来的版本中扩展。


DM 支持根据 ISO 14229-1 处理多客户端。可满足现代车辆架构的需求,包括用于数据收集的多个诊断客户端(测试仪),从后端访问以及最后的一些经典车库和生产用例。

8.4自适应应用中的诊断(AA)

DM分发器作为诊断服务接收诊断请求(如例程控制或DID服务)到相应AA的映射提供端口。


为了实现这一点,AA需要提供专门的诊断端口接口。

8.5类型接口与通用接口

诊断端口接口有不同的抽象级可用:


  • 例程控件消息可用作


     类型化接口 API 签名包括所有请求和响应消息参数及其基元类型。DM 负责序列化。         此 API 特定于特定的例程控件消息。


      △  通用接口 API 签名仅包含请求和响应消息的字节向量。应用负责请求和响应消息序            列化。同一 API 可用于多个例程控制消息。


  • 数据标识符消息可用作


     类型化接口 API 签名包括所有请求-(用于写入)和响应消息(用于读取)参数及其         基元类型。DM 负责序列化。


      △ 通用接口 API 签名仅包含请求和响应消息的字节向量。应用负责请求和响应消息序

       列化。


     单独数据元素的每个请求和响应消息参数都有自己的接口。这是诊断通讯接口抽象的最高级,即请求和响应消息结构中的任何更改都不会对API产生影响。此外,同一诊断消息的参数可能位于不同的进程中。

8.6诊断对话

由于 DM 需要如上所述的伪并行处理,因此它支持诊断对话,以反映诊断客户端和诊断服务之间的不同对话。诊断服务由相应 UDS 请求的目标地址标识,并在自适应平台的运行时动态分配。

8.7事件内存子集群

事件内存子集群负责诊断故障代码(DTC)管理(类似于经典平台的 DEM)。


活动 DTC 表示车辆中肯定检测到的问题(通常对生产或车库很重要)。DM 管理 DTC 及其配置的快照记录(关于 DTC 发生事件的一组已配置环境数据)和/或扩展数据记录(属于 DTC 的统计数据,如重复发生的次数)的存储。


DTC 的检测逻辑称为诊断监视器。此类监视器将其最近的测试结果报告给 DM 中的诊断事件。UDS DTC 状态派生自一个或多个诊断事件。


DTC 可以分配给主存(可通过 2006 年 4 月 19 日访问)或可配置的用户存储(可通过 0x19 17/18/19 访问)。


支持计数器和时基反跳。此外,DM 还提供有关内部转换的通知:相关方将收到有关 DTC 状态字节更改、监视诊断事件重新初始化的需要以及快照器扩展数据记录是否已更改的通知。


如果 DTC 在配置的操作周期数内未处于活动状态,则 DTC 可能会从 DTC 内存中消失。


DM 支持对启用条件进行通用处理。启用条件可用于在特殊条件下控制 DTC 的更新,例如在欠压条件下禁用所有网络负载 DTC。

09. 持久性

9.1概述

持久性为自适应平台的应用和其他功能集群提供了将信息存储在自适应机器的非易失性内存中的机制。数据可在启动和点火循环期间获得。持久性提供标准接口来访问非易失性内存。


持久性 API 将存储位置标识符作为应用中的参数,以寻址不同的存储位置。可用存储位置分为两类:


  • 键值存储


  • 文件存储


每个应用都可以使用多个这些存储类型的组合。

#百人创作先锋团#AP AUTOSAR 平台设计总体框架全解(上)-汽车开发者社区

图 9.1:自适应应用中持久性的典型用法


持久性数据始终专用于单一应用的单一进程。没有可用于使用持久性在不同进程之间共享数据的机制。此决定是为了防止在通信管理所提供的功能下出现第二条通信路径。


持久性已准备好处理来自同一应用的多个线程的并发访问,这些线程在同一进程的上下文中运行。要创建对键值存储或文件存储的共享访问,OpenKeyValueStorage 和 OpenFileStorage 返回的  SharedHandle 可以传递(即复制)到另一个线程,或者 OpenKeyValueStorage 和 OpenFileStorage 可以分别在相同的键值存储或文件存储的独立线程中调用。


持久性能够处理存储数据的完整性。它使用冗余信息来检测数据损坏。冗余信息由 CRC 代码、哈希值和“M out of N”架构组成。这些机制既可以共用,也可以单独使用。


持久性也提供安全的存储。这基本上是使用冗余实现的,但具有额外的功能,即让应用知道存储的数据是否存在任何问题,使它可以使用冗余数据进行恢复。


持久性提供有关已用资源数的应用统计信息。


持久性为存储的数据提供加密,以确保敏感数据在存储在物理设备上之前进行加密。

9.2键值存储

键值存储提供了一种机制,用于在一个存储位置存储和检索多个键值对。键值存储直接支持以下三种数据类型:


  • SWS_AdaptivePlatformTypes [7] 中定义的数据类型。


  • 由应用中复杂类型的流式处理生成的简单字节数组。


  • 通过 dataType引用的所有实现数据类型由


PersistencyKeyValueStorage在应用设计中接口或专用于该接口的持久性数据元素。


对于每个键值存储,这些键必须是唯一的,并且由应用使用持久性提供的方法进行定义。

9.3文件存储

并非所有与持久性存储相关的数据都以键值存储这样一种存储机制方式构建。


对于此类数据,引入文件存储机制。文件存储端口允许应用访问存储位置并在其中创建一个或多个访问器。这些访问器再由字符串格式的唯一键标识。


与文件系统的比较会对理解有所帮助:文件存储端口可以理解为允许应用创建多个文件(访问器)的文件系统目录。

9.4使用案例处理 UCM 的持久性数据

通常,UCM 中支持三个主要用例,用于在 ECU 或自适应机器的生命周期内处理自适应应用。


  • 将新的应用软件安装到自适应机器


  • 将现有应用软件更新到自适应机器


  • 从自适应机器卸载现有应用软件


在前两种情况下,UCM 通过 EM 触发应用以验证安装/更新,然后触发持久性以根据清单中持久性的配置部署/更新应用的持久性数据。


在第三种情况下,UCM 使用持久性配置中的 URI 删除剩余的持久性数据。


持久性支持以下方案,用于将持久性数据部署到键值存储和文件存储。


  • 持久性应能够部署在自适应应用安装期间由应用 designer 定义的持久性数据。


  • 持久性应能够部署由集成商更改的持久性数据。


  • 持久性应能够部署由集成商定义的持久性数据。


  • 持久性应能够在安装新版本的应用时,根据为键值存储或文件存储配置的更新策略覆盖或保留持久性数据。


通常,持久性层是在应用设计和部署期间配置的。持久性应能够使用部署阶段配置来覆盖应用设计配置。如果缺少部署阶段配置,则将考虑应用设计中的配置以部署持久性数据。


文章转载自公众号:汽车电子与软件

分类
收藏
回复
举报
回复
相关推荐