在上一个练习(点击跳转)中,我们启动了一个虚拟ECU,然后构建并部署了一个非常简单的应用程序—非常简单,它根本不与自适应平台交互。在本练习中,我们将为执行管理创建必要的配置,并添加应用程序生命周期报告。
在本练习中,您将学习:
-
如何在自适应平台的控制下自动执行自适应应用程序
-
如何启动执行管理编辑器及其总体布局
-
如何使用执行管理编辑器定义可执行文件和流程元素。
-
RTA-VRTE中执行管理的ECUCFG(基于数据)配置如何工作。
-
自适应应用程序如何履行其执行管理职责。
执行管理
执行管理负责系统执行管理的各个方面,包括系统初始化和应用程序的启动与关闭。执行管理与操作系统协同工作,以进行应用程序的运行时调度。
系统启动
当机器启动时,操作系统首先初始化,然后启动执行管理。通过执行管理启动自适应平台基础的其他功能集群和平台应用。在自适应平台基础运行起来之后,执行管理继续启动自适应应用程序。平台应用程序和自适应应用程序的启动顺序由执行管理根据机器清单和执行清单来确定。
请双击桌面上的图标启动VRTE Adaptive Studio。
您可能需要取消选中“使用默认位置”复选框)。如果正确安装了练习源文件并且正确创建了Eclipse项目,那么该文件夹应该已经存在。
RTA-VRTE的执行管理使用已处理的清单进行配置,该清单使执行管理能够确定何时以及如何在目标ECU上启动应用程序进程。
早期版本的RTA-VRTE依赖于使用生成的源文件的预编译配置,ExMConfig.cpp文件. 在此版本的RTA-VRTE中,预编译配置被弃用,取而代之的是ECUCFG(即基于数据的)
RTA-VRTE在运行时由执行管理守护程序加载的ECUCFG文件中定义基于数据的执行管理配置。
执行清单信息被处理成基于数据的ECUCFG配置,该配置包含在节点数据文件中,即。
EXM_nodeData.ecucfg在项目的gen文件夹中生成。
执行管理仅启动已注册的自适应应用程序。未能正确配置每个可执行文件和进程将导致应用程序无法启动。
第一步
我们需要定义Machines and Machine Designs
Machine支持自适应平台的实例。Machine配置与整个平台实例相关的信息,例如可用状态、进程到机器的映射以及确定执行管理何时启动和停止进程的状态。
Machine Designs
机器设计允许配置服务访问控制、网络连接、服务发现配置等。每台机器应与机器设计相关联。
第二步
将定义好的Machine 与Function Group相关联
要将定义的函数组(ModeDeclarationGroup)与定义的Machine相关联,我们需要创建一个从机器到ModeDeclarationGroup的引用。这种方法使得同一个功能组定义可以被多个Machine重用。
一个函数组已经定义并与一台机器相关联,它可以在执行编辑器中用来控制状态改变时进程的启动/停止。
执行管理支持对执行管理启动的每个可执行文件进行ECUCFG(即基于数据的)配置。
第三步
VRTE Adaptive Studio包括一个执行编辑器,用于定义应用程序进程、可执行文件等,并支持从AUTOSAR ARXML配置生成预编译源代码或基于数据的ECUCFG配置。
4.3.3 Defining Processes
对于每个Processes,我们需要定义Processes元素的名称(注意,对于可执行元素,这是ARXML配置中元素的名称)和清单文件
我们需要定义Processes所应用的Machine和功能组状态。
选择Machine后,单击功能组状态旁边的三个点,然后在对话框中选择启动状态:
RTA-VRTE在运行时由执行管理守护进程加载的ECCFG文件中定义了基于数据的执行管理配置。
执行清单信息被处理到基于数据库的ECUCFG配置中,该配置包含在节点数据文件中。
通过选择适当的VRTE生成器来创建ECUCFG配置:
生成的配置将包含其他配置,例如机器和功能组状态的配置。这些配置是自动生成的,在本练习中可以忽略。
4.6应用程序生命周期
除了由执行管理启动之外,自适应应用程序还必须使用AUTOSAR流程生命周期接口中的方法来报告生命周期状态的更改。两个转变很重要:
从初始化到ara::exec::ExecutionState::kRunning
当应用程序的初始化完成并且应用程序准备好提供服务时,就会报告kRunning状态转换。
从ara::exec::ExecutionState::kRunning到
ara::exec::ExecutionState::kTerminating
当应用程序即将终止时,它将报告kTermining状态转换。
自适应平台包括应用程序的API,用于将应用程序生命周期状态之间的转换报告给执行管理。API作为类ExecutionClient的成员函数实现。
一旦创建了类ExecutionClient的实例(通常在全局范围内),应用程序就可以使用ReportExecutionState API报告状态转换。
一个自适应应用程序必定属于某一个功能组。
一个功能组中可以有一个或多个自适应应用程序,属于同一个功能组的一组自适应应用程序运行状态相同。
用户的自适应应用程序的状态会直接上报给SM,SM会仲裁收到的状态请求,发送给EM,EM收到SM的状态请求之后,来改变功能组的状态,即改变了这一组应用程序的状态。
-
机器状态机器状态主要用于控制机器生命周期(启动/关闭/重启)、平台级进程和其他基础设施。每台机器上必须存在几个强制机器状态(starting,restart, terminating)。其他特定于机器的机器状态可以在机器清单定义
-
功能组状态功能组状态主要用于单独启动和停止功能一致的用户级应用程序进程组。它们可以在机器清单中配置
-
过程状态流程状态用于应用程序生命周期管理,由执行管理内部状态机实现。
-
执行状态执行状态表征应用程序可执行文件(即进程)的任何实例的内部生命周期。每个进程必须向执行管理报告执行状态更改。
前提条件
此培训需要安装以下工具:
Oracle VirtualBox 6.1.0(或更高版本)
-
VirtualBox执行包含RTA-VRTE早期访问程序的构建和开发环境的虚拟机
-
最新版本的VirtualBox可从 https://www.virtualbox.org 下载
-
rta_vrte_eap_v2020-09-30T1302版
以及视频中的练习工程,如有需求,请发邮件至ETAS_AUTOSAR_RTA_CONTACT@ETAS.COM, 我们将与您联系.