AUTOSAR RTE相关学习积累

1 RTE概述
1.1 AUTOSAR中的RTE
RTE是AUTOSAR ECU体系的核心。RTE是对特定ECU的AUTOSAR虚拟功能总线(VFB)的具体实现,支持AUTOSAR的软件组件间、基础软件间、软件组件与基础软件之间的通信。RTE封装了基础软件层的通信和服务,为应用层的软件组件提供标准化的基础软件和通信接口,使得应用层可以通过API函数调用基础软件的服务。
RTE包含系统基础设施的可变元素,这些元素来自组件到ECU的映射和标准化的RTE服务。
原则上,RTE从逻辑角度可以分为两个部分实现:
 软件组件间的通信
 软件组件的调度
为了充分描述RTE的概念,还必须考虑基础软件调度程序。基础软件调度程序调度基础软件模块的可调度实体。在一些文档中,可调度实体也被称作主要处理函数。
由于同一OS任务可能用于调度软件组件和基础软件模块,因此RTE的调度部分语基础软件调度程序有着紧密的联系,不能清晰的分开。
为每个ECU生成RTE和基础软件调度程序,以确保RTE和基础软件调度程序对于ECU是最佳的。
1.2 RTE相关的重要AUTOSAR概念
本节介绍一些重要的AUTOSAR概念,以及它们是如何在RTE背景中实现的。
1.2.1 AUTOSAR软件组件
在AUTOSAR中,应用软件架构上位于RTE的上方,由应用组件组成,应用组件中有一种特殊的应用组件就是传感器/执行器组件,这些组件依赖于ECU硬件,因此由于性能/效率原因不容易重新定位。在系统配置期间,AUTOSAR软件组件可以被部署到任何可用的ECU上。RTE负责确保组件可以通信,并且确保无论组件部署在哪,系统都能按预期工作。考虑到传感器/执行器软件组件,他们能够直接寻址本地ECU抽象层,因为需要通过一个中间传感器/执行器软件组件将信息广播给远端ECU来实现对远端ECU抽象层的访问,因为在不同的ECU上移动传感器/执行器软件组件,可能意味着也会将连接的设备(传感器/执行器)移动到相同的ECU(前提是能够有效访问)。
软件组件按类型定义。在组件被部署到一个ECU上时,组件类型会被实例化。组件类型可以在同一个ECU上实例化多次,在这种情况下,组件类型被称作“多重实例化”。RTE支持每实例一个内存段,来确保每个组件实例具有私有状态。
RTE既支持源代码可用的软件组件(源代码软件组件),又支持仅目标代码可用的软件组件(目标代码软件组件)。
具体见4.1.3
1.2.2 基础软件模块
基础软件模块可以直接访问ECU 抽象层和其他基础软件模块,因此既不独立于ECU ,也不独立于位置。
软件组件不能直接访问基础软件模块,所有的通信都通过AUTOSAR接口,因此受RTE控制。不直接访问的要求适用于所有基础软件模块,包括操作系统和通信服务。
1.2.3 通信
AUTOSAR软件组件的通信接口由多个端口组成。AUTOSAR软件组件可以通过它的接口与其他AUTOSAR软件组件(无论该组件位于同一个ECU或不同的ECU上)或同一ECU上的基础软件模块进行通信。此通信只能通过组件端口进行。端口可以归为两类:发送方-接收方,客户端-服务端。发送方-接收方提供消息传递功能,客户端-服务端提供函数调用。
1.2.3.1 通信样式
RTE为软件组件实例间的通信提供了不同的样式
 发送方-接收方(信号传递)
 客户端-服务端(功能调用)
 模式切换
 非易失性数据交互
每个通信样式都可以应用于分区内的软件组件分发(包括同一分区内的任务内和任务间分发),分区间的软件组件分发和ECU间的软件组件分发。任务内通信发生在映射到同一OS任务的可运行实体之间,而任务间通信发生在影射到同一分区的不同任务的可运行实体之间,因此涉及关联转换。分区间通信发生在影射到同一个ECU的不同分区的组件中的可运行实体之间,因此涉及关联转换和跨越保护边界(内存保护,定时保护,核心隔离)。ECU间通信发生在影射到不同ECU的组件中的可运行实体之间,本质上是冰法,并且可能涉及不可靠通信。
(具体见4.3)
1.2.3.2 通信模式
对于发送方-接收方通信,RTE提供两种模式:
 显式:组件使用显式API调用发送和接受数据元素;
 隐式:RTE在调用可运行实体之前自动读取指定的一组数据元素,并且在可运行实体终止后自动写入(不同的)一组数据元素。这里使用术语“隐式”是因为可运行实体不会主动启动数据的接收和传输。
(具体见4.3.1.5)
1.2.3.3 静态通信
RTE应仅支持静态通信。静态通信仅包括那些在生成RTE时所有通信的源和目的就已知的通信连接。由于运行时间和代码开销会限制适用RTE的设备规模,因此不支持通信的动态重新配置。
1.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软件组件在不修改的情况下重新部署到不同的配置中。
1.2.3.5 并发性
AUTOSAR软件组件不能直接访问操作系统,因此AUTOSAR应用层中没有任务。相反,AUTOSAR中的并发操作是基于RTE引用的组件中的可运行实体的。
AUTOSAR VFB规范将可运行实体定义为“可由RTE启动的指令序列”。一个组件提供一个或多个可运行实体,每个可运行实体只有一个入口点。入口点在提供可运行实体执行的软件组件代码中定义标记。
RTE负责调用可运行的实体-AUTOSAR软件组件无法(动态)创建私有控制线程。因此,AUTOSAR应用层中的所有活动都是由RTE触发可运行实体来发起的,作为RTE事件的结果。
RTE事件包含所有可能的情况,这些情况可以触发RTE执行可运行实体。RTE事件的分类在5.7.5节定义。
RTE支持任何具有AUTOSAR接口的软件组件的可运行实体,包括AUTOSAR软件组件和基础软件模块。
可运行实体分为多个类别,每个类别支持不同的设备,RTE支持的类别见4.2.2.3。
1.3 RTE生成器
RTE生成器是根据ECU配置描述中的信息为ECU创建AUTOSAR虚拟功能总线的一组工具之一。RTE生成器负责创建AUTOSAR软件组件API功能,这些API功能将AUTOSAR软件组件链接到操作系统,并管理AUTOSAR软件组件之间以及AUTOSAR软件组件和基础软件模块之间的通信。
另外,RTE生成器为基础软件模块的每个特定实例创建基础软件调度程序和基础软件调度程序API函数。
软件组件的RTE生成过程主要有两个阶段:
 RTE契约阶段:组件的有限信息集(主要是AUTOSAR接口定义),用来给组件类型创建一个应用层头文件,应用层头文件定义组件和RTE间的“契约”。
 RTE生成阶段:所有有关组件、组件到ECU的部署和通信连接的相关信息都用于生成RTE和可选IOC配置。需要为系统中的每个ECU生成一个RTE。
两阶段开发模型确保RTE生成的应用层头文件可用于源代码AUTOSAR软件组件和目标代码AUTOSAR软件组件,这两种类型的组件都可以访问作为RTE生成过程一部分而创建的所有定义。

你可能感兴趣的:(AUTOSAR RTE相关学习积累)