autosar中com模块_AUTOSAR学习笔记之RTE

autosar中com模块_AUTOSAR学习笔记之RTE_第1张图片

运行时环境RTE是AUTOSAR ECU体系结构的核心组成部分。RTE是AUTOSAR虚拟功能总线(Virtual Function Bus,VFB)的接口(针对某个特定ECU)的实现,因此,它为应用程序软件组件之间的通信提供了基本的服务,同时也便于访问包含OS的基本软件组件。

autosar中com模块_AUTOSAR学习笔记之RTE_第2张图片

RTE和OS,AUTOSAR COM和其他的基础软件模块(BSW)是VFB(Virtual Functional Bus)概念的实现。RTE实现了AUTOSAR VFB的接口,从而实现了AUTOSAR软件组件之间的通信。

RTE是AUTOSAR ECU体系的核心,它提供了在AUTOSAR软件组件间通信的基础服务,扮演了一些方法,通过这些方法AUROSAR软件组件能访问包括OS和通信服务在内基础软件模块的。

1、AUTOSAR中的RTE概述

RTE是AUTOSAR ECU体系的核心。RTE是对特定ECU的AUTOSAR虚拟功能总线(VFB)的具体实现,支持AUTOSAR的软件组件间、基础软件间、软件组件与基础软件之间的通信。RTE封装了基础软件层的通信和服务,为应用层的软件组件提供标准化的基础软件和通信接口,使得应用层可以通过API函数调用基础软件的服务。

RTE包含系统基础设施的可变元素,这些元素来自组件到ECU的映射和标准化的RTE服务。

原则上,RTE从逻辑角度可以分为两个部分实现:

(1)软件组件间的通信

(2)软件组件的调度

为了充分描述RTE的概念,还必须考虑基础软件调度程序。基础软件调度程序调度基础软件模块的可调度实体。在一些文档中,可调度实体也被称作主要处理函数。

autosar中com模块_AUTOSAR学习笔记之RTE_第3张图片

由于同一OS任务可能用于调度软件组件和基础软件模块,因此RTE的调度部分与基础软件调度程序有着紧密的联系,不能清晰的分开。

为每个ECU生成RTE和基础软件调度程序,以确保RTE和基础软件调度程序对于ECU是最佳的。

2、RTE相关的重要AUTOSAR概念

2.1、AUTOSAR软件组件

在AUTOSAR中,应用软件架构上位于RTE的上方,由应用组件组成,应用组件中有一种特殊的应用组件就是传感器/执行器组件,这些组件依赖于ECU硬件,因此由于性能/效率原因不容易重新定位。在系统配置期间,AUTOSAR软件组件可以被部署到任何可用的ECU上。RTE负责确保组件可以通信,并且确保无论组件部署在哪,系统都能按预期工作。考虑到传感器/执行器软件组件,他们能够直接寻址本地ECU抽象层,因为需要通过一个中间传感器/执行器软件组件将信息广播给远端ECU来实现对远端ECU抽象层的访问,因为在不同的ECU上移动传感器/执行器软件组件,可能意味着也会将连接的设备(传感器/执行器)移动到相同的ECU(前提是能够有效访问)。

软件组件按类型定义。在组件被部署到一个ECU上时,组件类型会被实例化。组件类型可以在同一个ECU上实例化多次,在这种情况下,组件类型被称作“多重实例化”。RTE支持每实例一个内存段,来确保每个组件实例具有私有状态。

RTE既支持源代码可用的软件组件(源代码软件组件),又支持仅目标代码可用的软件组件(目标代码软件组件)。

2.2、基础软件模块

基础软件模块可以直接访问ECU 抽象层和其他基础软件模块,因此既不独立于ECU,也不独立于位置。

软件组件不能直接访问基础软件模块,所有的通信都通过AUTOSAR接口,因此受RTE控制。不直接访问的要求适用于所有基础软件模块,包括操作系统和通信服务。

2.3、通信

AUTOSAR软件组件的通信接口由多个端口组成。AUTOSAR软件组件可以通过它的接口与其他AUTOSAR软件组件(无论该组件位于同一个ECU或不同的ECU上)或同一ECU上的基础软件模块进行通信。此通信只能通过组件端口进行。端口可以归为两类:发送方-接收方,客户端-服务端。发送方-接收方提供消息传递功能,客户端-服务端提供函数调用。

autosar中com模块_AUTOSAR学习笔记之RTE_第4张图片

2.3.1、通信样式

RTE为软件组件实例间的通信提供了不同的样式

(1)发送方-接收方(信号传递)

(2)客户端-服务端(功能调用)

(3)模式切换

(4)非易失性数据交互

每个通信样式都可以应用于分区内的软件组件分发(包括同一分区内的任务内和任务间分发),分区间的软件组件分发和ECU间的软件组件分发。任务内通信发生在映射到同一OS任务的可运行实体之间,而任务间通信发生在影射到同一分区的不同任务的可运行实体之间,因此涉及关联转换。分区间通信发生在影射到同一个ECU的不同分区的组件中的可运行实体之间,因此涉及关联转换和跨越保护边界(内存保护,定时保护,核心隔离)。ECU间通信发生在影射到不同ECU的组件中的可运行实体之间,本质上是冰法,并且可能涉及不可靠通信。

2.3.2、通信模式

对于发送方-接收方通信,RTE提供两种模式:

显式:组件使用显式API调用发送和接受数据元素;

隐式:RTE在调用可运行实体之前自动读取指定的一组数据元素,并且在可运行实体终止后自动写入(不同的)一组数据元素。这里使用术语“隐式”是因为可运行实体不会主动启动数据的接收和传输。

2.3.3、静态通信

RTE应仅支持静态通信。静态通信仅包括那些在生成RTE时所有通信的源和目的就已知的通信连接。由于运行时间和代码开销会限制适用RTE的设备规模,因此不支持通信的动态重新配置。

2.3.4、多重性

除了点对点通信,RTE还支持含有多个提供者或多个需求者的通信连接。

当使用发送方-接收方通信时,RTE支持1:n(即一个发送方,多个接收方),n:1(即多个发送方,一个接收方)通信,并且限制不允许多个发送方进行模式切换通知;

RTE不协调多个发送方或多个接收方的执行过程,这意味着不同软件组件的行为是独立的,RTE不确保不同发送方同时传输数据,也不确保所有接收方同时接收数据或接收事件。

当使用客户端-服务端通信时,RTE支持n:1(即多个客户端,一个服务端),不支持1:n(即一个客户端,多个服务端)。

无论使用1:1,n:1,1:n通信,RTE负责实现通信连接,因此,AUTOSAR软件组件不知道具体配置,这样就允许一个AUTOSAR软件组件在不修改的情况下重新部署到不同的配置中。

2.3.5、并发性

AUTOSAR软件组件不能直接访问操作系统,因此AUTOSAR应用层中没有任务。相反,AUTOSAR中的并发操作是基于RTE引用的组件中的可运行实体的。

AUTOSAR VFB规范将可运行实体定义为“可由RTE启动的指令序列”。一个组件提供一个或多个可运行实体,每个可运行实体只有一个入口点。入口点在提供可运行实体执行的软件组件代码中定义标记。

autosar中com模块_AUTOSAR学习笔记之RTE_第5张图片

RTE负责调用可运行的实体-AUTOSAR软件组件无法(动态)创建私有控制线程。因此,AUTOSAR应用层中的所有活动都是由RTE触发可运行实体来发起的,作为RTE事件的结果。

RTE事件包含所有可能的情况,这些情况可以触发RTE执行可运行实体。

RTE支持任何具有AUTOSAR接口的软件组件的可运行实体,包括AUTOSAR软件组件和基础软件模块。

可运行实体分为多个类别,每个类别支持不同的设备。

3、RTE生成过程

RTE生成的主要过程是:创建与操作系统系统功能相适应的AUTOSAR软件构件API,并管理软件构件间的通信。

这些生成的代码在运行时:

(1)为软件构件分配所需的系统资源,如消息号、任务运行环境等

(2)负责具体执行软件构件间通过端口进行的通信

(3)根据软件构件描述中的信息,在适当时刻为软件构件提供事件或调度。

RTE生成包含两个阶段:

(1)定义阶段(RTE Contract phase)

(2)生成阶段(RTE Generation phase)。

在(1)定义阶段中,将软件构件和RTE交互描述信息定义为头文件,作为软件构件与RTE的契约,双方都使用相同数据结构进行编程。在此阶段,需要完成的工作是:

(1)软件构件类型描述

(2)构件内部行为描述

(3)真实源代码或目标代码及其API(头文件)生成

(4)实现语言描述

autosar中com模块_AUTOSAR学习笔记之RTE_第6张图片

从上图中可以清晰的看到,其实定义阶段就是扫描一下Internal Behavior这个xml的标签。然后生成它的头文件。

Internal Behavior中可以包含的内容如下:

autosar中com模块_AUTOSAR学习笔记之RTE_第7张图片

在(2)生成阶段中,将所有软件构件、相关系统和ECU信息联合起来,为每一个ECU生成一个RTE。

autosar中com模块_AUTOSAR学习笔记之RTE_第8张图片

由上图可以看出,生成阶段之前要先收集ECU配置信息,然后进行配置,可配置的内容有:

(1)SW-Component的接口和它们的通信关系;

(2)运行体和它们的RTE-Events。

autosar中com模块_AUTOSAR学习笔记之RTE_第9张图片

还有就是把SWC的端口映射成为COM的信号。映射的规则已经被系统配置生成器AUTOSAR System Configuration Generator所描述。

RTE生成器使用COM和操作系统已有的对象(如:task),同时也创建自己的新对象(如调度表和周期时钟)。但是如果一个对象OS已经提供,RTE就必须使用。

AUTOSAR OS被ECU配置描述文件所配置。RTE配置器/生成器需要将其需求传达给OS,因此使用相同的格式顺序似乎是明智的,以允许通信所生成的RTE所需的OS对象集。

生成的RTE所使用的OS对象(以下称为OsNeeds)的规范可以仅在配置时完成,也可以在配置和生成时混合完成,具体取决于RTE和OS的配置和生成工具所支持的方法 。 因此,可以由RTE配置编辑器或RTE生成器提供输出信息OsNeeds。

如果是操作系统特别需要的对象,就标记上OsNeed。如下图所示:

autosar中com模块_AUTOSAR学习笔记之RTE_第10张图片

你可能感兴趣的:(autosar中com模块)