Adaptive AUTOSAR——State Management(VRTE 3.0 R21-11)

2023-05-16

状态管理是自适应平台服务中的一个功能集群。

在自适应平台中,状态决定了一组活动的自适应应用程序。

特定于项目的应用程序,即状态管理器,决定何时请求状态更改,从而更改当前活动的应用程序集。状态管理器是特定于项目的,因为AUTOSAR没有对何时更改状态的语义进行标准化。Adaptive Platform通过C++API提供状态更改机制来请求状态更改,序列化功能组的状态更改请求,并在执行管理中管理实际状态转换,从而支持State Manager应用程序。

状态管理功能集群是自适应平台服务的一部分,但从AUTOSAR体系结构的角度来看,它与执行管理密切相关,例如,ara::exec StateClient类支持状态更改请求,并提供已完成状态更改的通知。该类由执行管理而非状态管理提供。

作为一项服务,状态管理使用ara::com面向服务的通信提供对自适应应用程序的访问。状态管理器使用其中一个标准化服务接口提供服务;

TriggerIn_<StateGroup>, TriggerOut_<StateGroup>, or TriggerInOut_<StateGroup>.

服务接口具有用于获取当前状态(Notifier)和请求新状态(Trigger)的字段。

AUTOSAR自适应应用程序可以使用字段对系统状态变化做出反应或影响系统状态。

8.2 Responsibilities

在自适应平台中,状态管理功能集群在两个级别上支持状态更改,从而支持机器内一组活动自适应应用程序的更改:

MachineFG:机器的一般状态,例如STARTUP、RUNNING等。

AUTOSAR定义了许多预定义的MachineFG状态,并且可以根据需要定义其他状态。

功能组状态–机器中项目定义的状态,用于控制(通常是功能性的)相关应用程序实例的执行。

自适应平台内还有第三级状态;实例的执行状态。此状态由应用程序内部管理实例本身,例如使用ReportExecutionState API,因此不受状态管理功能集群的控制。允许的执行状态由AUTOSAR定义,不能扩展。

在功能组状态的每次更改时,自适应平台可以被配置为启动和/或停止一个或多个应用程序实例。当应用程序实例被分配到一个或多个功能组状态时,实例和状态之间的关联发生在执行管理配置期间。

MachineFG是函数组的一种特殊情况。在RTA-VRTE入门套件中,两个状态系统由通用API管理。对于本文档,术语“功能组状态”应理解为包括MachineFG。

当状态管理器对功能组状态更改的请求被功能组状态控制器接受并采取行动时(见图8.2),将考虑每个状态下分配的应用程序实例:

  • 分配给“旧”和“新”状态的实例仍在运行。
  • 未分配到“新”状态的实例将停止。
  • 未分配到“旧”状态的实例将启动。

请注意,不可能将实例同时分配给“旧”和“新”状态。

8.2.1 Management or Manager?

状态管理在自适应平台体系结构中被描述为一个独特的功能集群。然而,国家变化的责任实际上是分开的:

State Manager–负责决定何时更改功能组状态。

State Management-负责处理功能组状态更改,例如当状态管理器请求时以及用于提供请求这样的改变的接口。

根据职责划分,状态管理功能集群在RTA-VRTE入门套件中进行了划分。状态管理职责集成在执行管理中,例如功能组状态控制器(见图8.2),状态管理职责包含在RTA-VRTE入门套件API支持的用户应用程序中,以请求状态更改。

状态管理器应用程序决定何时更改功能组状态。存在哪些功能组和状态以及何时发生状态更改是特定于项目的,因此AUTOSAR没有对其进行标准化。

RTA-VRTE入门套件SK包括一个示例应用程序,其中包括一个简单的示例状态机。

执行管理中的状态管理功能集群的元素支持与用户的状态管理器应用程序的双向通信;

首先,用户应用程序可以请求状态改变并读取功能组的当前状态,其次,状态管理功能集群可以在所请求的功能组状态转换完成时通知状态管理器应用程序。

在执行管理配置期间,当功能集群附属设置为状态管理器时,状态管理器应用程序实例被标记为这样。如果定义了多个状态管理器应用程序实例,则是一个错误。

状态管理器应用程序实例应分配给所有MachineFG状态,以确保它在所有状态下都保持运行——否则,当输入未分配应用程序实例的MachineFG时,它将被执行管理终止。

8.2.2 State Machine

在经典平台中,ECU配置以ECU状态管理器和BSW模式管理器的形式包含ECU内状态管理方式的完整描述。ECU配置描述是高度通用的,能够表达许多不同的状态和启动状态之间转换的条件。然而,通用性是有代价的;配置既复杂又脆弱。

自适应平台采用了不同的方法;平台决定何时在应用程序域中启动状态更改,而不是一般但复杂的描述。因此,用户实现了状态管理器应用程序,该应用程序封装了一个状态机,该状态机决定必要条件何时到位,从而启动状态转换。然而,状态更改是如何发生的,由自适应平台本身通过状态管理提供的API进行管理。

8.2.3 Function Group Control

在RTA-VRTE入门套件中,功能组的创建和控制是执行管理的一个组成部分。

执行管理中的状态管理功能响应来自用户的状态管理器应用程序的状态更改请求。用户的State Manager应用程序包含StateClient类的一个实例,该实例定义了客户端应用程序请求状态更改和读取功能组的当前状态的接口。

用户的State Manager应用程序实例必须这样标记(第4.5.4.5节)。这在State Manager和Execution Management之间建立了链接。如果不这样做,那么状态更改请求将导致错误。

响应来自状态管理器的功能组状态更改请求,状态管理功能集群通过与执行管理中的流程控制交互启动或停止应用程序实例。一旦状态更改完成,它们将通过SetState API返回的Future通知给用户的state Manager应用程序。

 

 8.3 Application Access

AUTOSAR状态管理API由StateClient的一个实例提供。在RTA-VRTE Starter Kit中,此类是执行管理的一个组成部分,因此位于ara::exec命名空间中。

使用ISOLAR VRTE创建新的功能组和状态,请参见第4.4.3节。

然后在执行管理配置期间访问功能组/状态,例如,将进程分配给状态。然后,组和状态是执行管理基于FlatCFG数据的配置的一部分,请参见第4.10.1节。

一旦创建了函数组或函数组状态,并且该状态是基于FlatCFG数据的配置的一部分,应用程序就可以使用FunctionGroup和FunctionGroupState类的实例对其进行访问。

8.3.1 Function Group

功能组,包括预定义的MachineFG功能组,在执行管理配置期间使用ISOLAR VRTE进行配置。

实例化FunctionGroup首先需要通过调用Create函数来获得构造函数。Create函数采用单个参数,即function Group的›name›:

ara::core::Result<FunctionGroup> stm1 =FunctionGroup::Create( "name" );

Create的返回类型是Result,并且将包含函数组(可以使用Value访问)或错误。

然后使用构造函数来创建实际的FunctionGroup对象:

FunctionGroup fg1( stm1.Value().short_name );

最初使用Create创建构造函数,然后使用构造函数字符串创建FunctionGroup的两步方法确保实际的FunctionGroup对象创建不会失败。

8.3.2 Function Group State

一旦获得FunctionGroup对象,就可以使用它来创建表示函数组内状态的Function GroupState对象。与父FunctionGroup对象一样,首先使用构造函数,然后使用实际对象创建的两步方法是必要的。

// Create constructor token
auto t_on = FunctionGroupState::Create( fg1, "name" );
if ( t_on.HasValue() )
{
    // Valid constructor token
    FunctionGroupState sOn( t_on.Value().short_name_fg,
    t_on.Value().short_name_state );
    ...

8.3.3 Process Assignment进程分配

在配置过程中,必须将每个流程(应用程序实例)分配给一个或多个功能组,以确保其由执行管理启动。

AUTOSAR状态管理需要定义功能组MachineFg。

可以在执行管理配置期间访问该组,然后将每个进程分配给AUTOSAR定义的机器状态之一,例如STARTUP。

ISOLAR VRTE的执行编辑器支持对配置的功能组状态进行进程分配。

8.3 Application Access

AUTOSAR状态管理API由StateClient的一个实例提供。在RTA-VRTE Starter Kit中,此类是执行管理的一个组成部分,因此位于ara::exec命名空间中。

使用ISOLAR VRTE创建新的功能组和状态,请参见第4.4.3节。

然后在执行管理配置期间访问功能组/状态,例如,将进程分配给状态。然后,组和状态是执行管理基于FlatCFG数据的配置的一部分,请参见第4.10.1节。

一旦创建了函数组或函数组状态,并且该状态是基于FlatCFG数据的配置的一部分,应用程序就可以使用FunctionGroup和FunctionGroupState类的实例对其进行访问。

8.3.1 Function Group

功能组,包括预定义的MachineFG功能组,在执行管理配置期间使用ISOLAR VRTE进行配置。

实例化FunctionGroup首先需要通过调用Create函数来获得构造函数。Create函数采用单个参数,即function Group的›name›:

ara::core::Result<FunctionGroup> stm1 =FunctionGroup::Create( "name" );

Create的返回类型是Result,并且将包含函数组(可以使用Value访问)或错误。

然后使用构造函数来创建实际的FunctionGroup对象:

FunctionGroup fg1( stm1.Value().short_name );

最初使用Create创建构造函数,然后使用构造函数字符串创建FunctionGroup的两步方法确保实际的FunctionGroup对象创建不会失败。

8.3.2 Function Group State

一旦获得FunctionGroup对象,就可以使用它来创建表示函数组内状态的Function GroupState对象。与父FunctionGroup对象一样,首先使用构造函数,然后使用实际对象创建的两步方法是必要的。

// Create constructor token
auto t_on = FunctionGroupState::Create( fg1, "name" );
if ( t_on.HasValue() )
{
    // Valid constructor token
    FunctionGroupState sOn( t_on.Value().short_name_fg,
    t_on.Value().short_name_state );
     ...

8.3.3 Process Assignment进程分配

在配置过程中,必须将每个流程(应用程序实例)分配给一个或多个功能组,以确保其由执行管理启动。

AUTOSAR状态管理需要定义功能组MachineFg。

可以在执行管理配置期间访问该组,然后将每个进程分配给AUTOSAR定义的机器状态之一,例如STARTUP。

ISOLAR VRTE的执行编辑器支持对配置的功能组状态进行进程分配。

未能将流程分配给至少一个功能组(包括MachineFG)将导致执行管理部门永远无法启动应用程序。

8.4 AUTOSAR服务

AUTOSAR服务由State Manager应用程序提供,并支持自适应应用程序的标准化机制,以影响项目特定的状态机。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Adaptive AUTOSAR——State Management(VRTE 3.0 R21-11) 的相关文章

  • Angular UI Router 1.0.0 - 使用 $transitions.onBefore 防止路由加载

    我升级到 UI Router 1 0 0 它已从 on stateChangeX to transitions onX 在这里查看 transitions https ui router github io docs latest clas
  • android 片段 onRestoreInstanceState

    我是否遗漏了什么或做了什么Fragment没有onRestoreInstanceState 方法 如果没有 我该如何获得类似的东西 片段没有onRestoreInstanceState method 您可以获得相同的结果onActivity
  • 从R中的城市名称中提取国家/地区名称

    这个问题可能看起来像重复的 但我在从字符串中提取国家 地区名称时遇到一些问题 我已经浏览过这个链接 链接 从作者隶属关系中提取国家 地区名称 https stackoverflow com questions 5318076 extract
  • 如何将设置对象从控制器传递到服务?

    tl dr 我需要传达多个服务所需的状态 这些状态源自绑定到控制器范围的数据 有什么好的 Angular zen 方式可以做到这一点 背景故事 我正在开发一个单页应用程序 经过深思熟虑后决定使用 AngularJS 页面的布局方式类似于 实
  • 按下列表项的默认绘图是什么

    当用户按下 ListView 项目 android state pressed true 时 它会闪烁黄色阴影 或者您可以按住 这是什么画 我创建了自己的选择器 因为我想要自己的 ListView 项目 color 但我丢失了按下的颜色 有
  • Android 保存游戏状态

    我不确定应该如何保存我正在开发的游戏的游戏状态 我应该保存包含所有游戏信息的实例 对象吗 如果是 怎么办 或者我应该将所有相关信息保存在 txt 文件中并在需要时保存 加载信息 您是如何做到这一点的 您对我的建议有何看法 除非将实例 对象序
  • React - 动态渲染一定数量的组件

    我想根据用户获得的积分数显示组件星号 MUI 组件 的数量 this state points 我不知道该怎么做 import React Component from react import Star from material ui
  • ReactJS 使用动态键及其数据迭代状态数组

    我有一个像这样的数组 data key1 key val1 data1 key val2 data2 key val3 data3 key val4 data4 key2 key val1 data1 key val2 data2 key
  • 为什么 runState 签名只有 state 参数?

    一个现实生活中的例子 如果我心情很好 良好状态 当经理问我有关估算时 我给了他一个可靠的答案 但他敢这样做3次吗in a row 中间没有一些免费零食 我的情绪发生了变化 我变得 糟糕的状态 接下来的 3 次他走近时 我要求他不要用任何废话
  • 类型错误:无法读取反应中未定义的属性“减少”

    我有一个表单 要求用户输入几个字段的字段值 将字段值存储在状态中并以自定义格式显示状态值 所以 我有几个输入字段和一个提交按钮
  • Scala:收集不可变状态的更新/更改

    我目前正在尝试将更实用的编程风格应用于涉及低级 基于 LWJGL GUI 开发的项目 显然 在这种情况下 有必要携带大量状态 而这些状态在当前版本中是可变的 我的目标是最终拥有一个完全不可变的状态 以避免状态更改带来的副作用 我研究了 sc
  • 将异步获取的数据传递给子 props

    我正在制作一个应用程序 它从远程源获取一系列新闻项目并将其显示在页面上 我有端点 并且可以使用控制台日志证明可以进行成功的调用 getJSON 我将此调用放入父组件中 因为子组件需要使用数据 但是 当我将此数据传递给子组件时 会出现控制台错
  • onCreateDrawableState 永远不会调用

    我必须向RelativeLayout 添加新状态 但永远不会调用onCreateDrawableState 方法 我的班级是 public class UnreadableRelativeLayout extends RelativeLay
  • 在 Backbone.js 中使用状态并登录用户

    我需要检查用户是否已登录并经过身份验证 然后才能让我的用户使用我的backbone js基于应用程序 用户身份验证作为属性存储在本机主干模型中 我在启动主路由器之前通过调用进行检查Backbone history start 这样 未经身份
  • 如何在渲染前使用 setState 更新状态

    我将在序言中声明我是 React js 的初学者 我创建了一个我正在开发的项目示例 在该项目中 我在 componentDidMount 中调用 API 并获取对象数组 并将其设置为状态 它看起来是这样的 class App extends
  • ui-router 中 templateUrl 从一种状态动态更改为另一种状态

    html a target blank t name a 上面的代码位于 ng repeat 中 其中许多模板链接加载了名称和 id 因此当我单击每个链接时 href 将更新 并将 id 号附加到所选模板链接 我使用相同的控制器生成大约十个
  • Angular Digest 循环正在运行,但 ng-bind 值未更新

    我有一个包含导航栏的父视图 在该视图内部我有一个 div 渲染我所在的任何子视图的元素 我想根据子视图的路线有条件地显示 隐藏父视图中的导航栏 现在 我有这个 div
  • 用户状态(秒差距)

    我正在使用秒差距解析一个表达式 并且我想使用秒差距中的用户状态来跟踪这些表达式中的变量 不幸的是我真的不知道该怎么做 给出以下代码 import Data Set as Set inp x y z data Var V String var
  • StateObject 作为 init() 中另一个对象的参数

    我试图将 StateObject 用户传递给authenticationHelper 但我不能 因为 IDE 说 在初始化所有存储的属性之前使用 self 即使它是在结构体的开头初始化的 我考虑过将 user 的初始化移至 init 但同样
  • FocusState Textfield 在工具栏 ToolbarItem 中不起作用

    让我解释一下 我有一个带有 SearchBarView 的父视图 我正在传递这样的焦点状态绑定 SearchBarView searchText object searchQuery searching object searching f

随机推荐

  • 读保护_混合ASIL系统中不同安全等级模块间的边界保护

    01 功能安全组件的软件开发 针对ISO 26262对功能安全软件研发的要求 xff0c AUTOSAR将功能安全需求进行了具体拆分 当前的AUTOSAR规范囊括了诸多功能安全组件软件开发的需求概念 在AUTOSAR系统设计的架构中 xff
  • 功能安全的一些好文

    特约专栏 一篇文章带你认识功能安全 本文将结合ISO 26262 xff0c 从什么是功能安全 什么是功能安全工程师以及功能安全工程师主要做什么 xff0c 三个方面展开对功能安全的介绍 https mp weixin qq com s v
  • make和makefile

    第二十六课 xff1a Makefile设计 哔哩哔哩 bilibili 内部资料 课程简介 大连理工大学国家精品课 嵌入式软件设计是计算机 软件工程等学科的专业方向课 xff0c 是一门实践性 技术性很强的重要课程 本课程的主要任务是全面
  • acm算法有用吗?写给自己。

    acm算法有用吗 xff1f 写给自己 xff0c 也希望能帮助那些大一迷茫的人 我是一个普通二本院校即将进入大三的acmer xff0c 一般问这个问题的人都是一个acmer的失败者 xff0c 因为成功的人都去忙着学习该学习的算法了 x
  • 算法题中常用的C++ STL

    一 栈 xff08 stack xff09 stack实现了一种先进后出的数据结构 xff0c 使用时需要包含stack头文件 C 43 43 定义stack语法 xff1a span class hljs stl container sp
  • Boot Loader

    在嵌入式操作系统中 xff0c BootLoader是在操作系统内核运行之前运行 可以初始化硬件设备 建立内存空间映射图 xff0c 从而将系统的软硬件环境带到一个合适状态 xff0c 以便为最终调用操作系统内核准备好正确的环境 在嵌入式系
  • 什么是SecOC 板端加密通讯

    板端加密通讯 Security Onboard Communication 缩写为SecOC SecOC是AUTOSAR标准中提出的针对ECU间通信安全提出的标准 CAN网络是明文传输 xff0c 广播报文 xff0c 无发送合法性校验 为
  • C++11:noexcept关键字

    1 介绍 C 43 43 11新标准引入的noexcept 运算符 xff0c 可以用于指定某个函数不抛出异常 预先知道函数不会抛出异常有助于简化调用该函数的代码 xff0c 而且编译器确认函数不会抛出异常 xff0c 它就能执行某些特殊的
  • 嵌入式应用程序设计流程

    第三十课 xff1a 应用程序设计流程 哔哩哔哩 bilibili arm linux gcc 交叉编译器 通过挂载实现程序调试 xff1a xff08 省去程序下载环节 xff09 第三十二课 xff1a 文件操作 哔哩哔哩 bilibi
  • uboot和bootloader有啥区别

    uboot和bootloader有啥区别 reboot to bootloader有什么用 IT教学网 片内的ram用来存储启动代码 xff0c 在2440初始化sdram之前 xff0c 代码就在片内ram中运行 片内ram装载的是nor
  • 微内核和宏内核以及混合内核

    操作系统内核的几个重要的特点 xff1a 内核是操作系统的核心部分 xff0c 它管理着系统的各种资源内核可以看成连接应用程序和硬件的一座桥梁 xff0c 是直接运行在硬件上的最基础的软件实体在一些简单的硬件设备上可以没有内核或操作系统而直
  • Adaptive AUTOSAR——Time Synchronization(VRTE 3.0 R21-11)

    15 Time Synchronization 15 1 What is Time Synchronization 时间同步是自适应平台基础中的一个功能集群 时间同步通过库向应用程序提供C 43 43 API xff0c 该库作为RTA V
  • Adaptive AUTOSAR——Update and Configuration Management(VRTE 3.0 R21-11)

    16 1 What is Update and Configuration Management 更新和配置管理 xff08 UCM xff09 是自适应平台服务中的一个功能集群 作为一种自适应平台服务 xff0c UCM实现了自适应平台的
  • Adaptive AUTOSAR 学习笔记 - AP 背景、技术及特征

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20 11 版本 本文从AUTOSAR EXP PlatformDesign pdf开始 xff0c 一边学习 xff0c 一边顺带着翻译一下 尽力而为 x
  • gPTP时钟同步(时间同步)协议简介

    一 时间同步要解决的问题 不知道大家还记得军训练习齐步走的场景吗 xff1f 齐步走的动作要领你还记得吗 xff1f 教官首先发出 齐步 走 的命令 xff0c 大家听到 齐步 二字后 xff0c 开始调整动作 xff0c 最终所有人实现动
  • acm有用吗?

    acm有用吗 xff1f 废话 xff0c 没用的话费这么大劲干什么来了 xff0c 但是搞acm需要前期的高付出 xff0c 但是后期会有高回报 xff0c 也不是什么都不管不顾的高付出 xff0c 学好基础课的情况下高付出 中学加小学1
  • std::atomic 原子操作

    类模板 template lt class T gt struct atomic 多线程小结 xff1a 非原子操作 xff0c 不加锁 xff0c 效率很高 xff0c 但无法得到正确的结果非原子操作 xff0c 加锁 xff0c 效率很
  • Adaptive AUTOSAR——Execution Management(VRTE 3.0 R21-11)

    ChatGPT回答 xff1a Adaptive AUTOSAR Execution Management 模块是用于管理软件执行的模块 xff0c 其主要功能包括 xff1a 任务调度 xff1a 支持对任务进行调度和执行 xff0c 以
  • 【C/C++】获取当前系统时间(time_t和tm)清晰梳理

    C C 43 43 获取当前系统时间 xff08 time t和tm xff09 清晰梳理 c 43 43 time t YuXi 0520的博客 CSDN博客 C 43 43 获取系统当前时间 c 43 43 time函数 C 43 43
  • Adaptive AUTOSAR——State Management(VRTE 3.0 R21-11)

    状态管理是自适应平台服务中的一个功能集群 在自适应平台中 xff0c 状态决定了一组活动的自适应应用程序 特定于项目的应用程序 xff0c 即状态管理器 xff0c 决定何时请求状态更改 xff0c 从而更改当前活动的应用程序集 状态管理器