APAUTOSAR硬核技术(3):执行管理与状态管理的交互

原创 汽车电子与软件 2023-12-27 08:01


作者:刘向
出品:汽车电子与软件



本系列文章将从以下六个方面来介绍AP平台核心技术:



已分享文章

  • AP AUTOSAR硬核技术(1):执行管理的秘密揭晓

  • 第二部分的确定性执行已被R23-11标准废弃

  • AP AUTOSAR硬核技术(2):详解状态管理


接下来,让我们来看第4个部分:

第四部分

 执行管理与状态管理的交互


 

4.1 执行管理与状态管理的交互

 

图中展示了状态管理模块和执行管理(EM)模块如何协调功能组状态(Function Group State)的切换的过程。


它们之间的步骤如下:


  1. 状态管理模块接收到来自不同来源的状态切换请求(Trigger),例如应用程序、功能集群、平台健康管理、诊断、事件或模式等。它会根据优先级来选择一个请求,并通知EM模块。


  2. 状态管理模块通过服务接口SetState来告诉EM模块需要切换到哪个功能组状态。


  3. EM模块根据SM模块返回的状态结果来启动start或停止stop相应的应用程序进程,并配置它们的参数。


  4. 状态管理模块通过服务接口GetState来获取当前的功能组状态。


  5. 状态管理模块还可以把当前的功能组状态的结果返回给请求切换状态的进程,以便进行相应的操作。


4.2 状态切换的请求(Trigger)来源

 

AP 状态管理是一种控制 AP 平台和应用程序的运行状态的组件。


状态管理通过ara::com 提供了一组Triger和Notifier field接口。


SM本质上是监听Triger,并在内部执行特定于实现的状态机处理,如果有Triger字段,则为其提供仲裁结果。


状态切换是指从一个状态转换到另一个状态的过程,状态切换的Triger来源有以下几种:


  1. 应用程序(Application):应用程序是指在 AP 平台上运行的软件单元,它可以通过 ara::com 服务接口向 SM 模块发送状态切换请求,例如请求从运行状态转换到关闭状态(Shutdown State)。


  2. 功能集群(Functional Cluster):功能集群是指按照服务和自适应 AUTOSAR 基础进行分组的模块,例如通信管理,更新和配置管理UCM等。功能集群可以通过标准接口向 SM 模块发送状态切换请求,例如请求从关闭状态转换到启动状态。


  3. 平台健康管理:PHM 是一种监控和恢复 AP 平台和应用程序的故障的组件,它可以根据故障的严重程度和影响范围向 SM 模块发送状态切换请求,例如请求从运行状态转换到诊断状态(Diagnostics State)。


  4. 诊断(Diagnostic):诊断是指检测和修复 AP 平台和应用程序的问题的过程,它可以通过诊断接口向 SM 模块发送状态切换请求,例如请求从运行状态转换到复位状态(Reset State)。


  5. 事件或模式(Event or Mode):事件或模式是指影响 AP 平台和应用程序运行的外部或内部因素,例如车辆速度,电池电量,用户输入等。事件或模式可以通过事件或模式接口向 SM 模块发送状态切换请求,例如请求从运行状态转换到休眠状态(Sleep State)。


状态管理是一个项目特定的组件,只有接口和职责是标准化的。内部逻辑定义仍然在每个项目的责任范围内。


下图为状态管理提供的接口图,用于获取和设置其内部状态。

 


4.3 状态管理:功能组状态切换流程

 


图中的App A B C是属于同一个功能组(MachineState)的进程,它们在Startup状态下运行。


“MachineState”实际上是功能组的一个特例


当它们中的一些进程需要改变状态时,它们会向状态管理(SM)模块发送请求。


SM模块会根据优先级来选择一个状态切换请求,并通知执行管理(EM)模块。


EM模块会把功能组的状态从Startup切换到Shutdown,并执行相应的操作。


在Shutdown状态下,进程App A仍然运行,进程App B和C被停止,进程App D被启动并运行。



4.4 功能组状态与进程状态切换的关系

 


在AP平台中,每个进程都属于一个功能组,功能组定义了进程在不同的状态下是否需要运行。状态管理(SM)负责请求功能组的状态转换,执行管理(EM)负责根据请求启动或停止进程。


为了保证进程的正常运行,AP平台有以下的规则:


  • 不同功能组之间的进程不能互相依赖,否则可能导致进程在错误的状态下被启动。


  • 每个功能组是一个独立的实体,它的状态转换只影响它自己的进程,不影响其他功能组的进程。这是EM的视角,而SM则需要考虑不同功能组之间的状态机逻辑。


状态转换是一个复杂的过程,但有三个基础逻辑步骤:


  1. 终止所有当前正在运行,但请求的状态下不需要的进程


  2. 重启所有当前正在运行,并且当前状态下启动配置和请求状态下的启动配置不一致的进程


  3. 启动所有现在没有运行,但请求状态下需要的进程


EM判断进程是否在运行,是检查进程状态是否在Idle或Terminated,如果是,则说明进程是停止状态



4.5 AP平台的启动流程——案例1

 


这个案例是AP平台的启动流程,它涉及到执行管理和状态管理两个模块的交互。


我想从以下几个方面来描述这个流程:


  1. OS初始化后,EM作为第一个进程被启动,它负责平台和应用的初始化、启动和停止。


  2. EM运行后,它首先创建并启动状态管理进程,SM负责管理平台和应用的状态转换。


  3. SM启动后,它通过ReportExecutionState API向EM报告自己的执行状态为Running,表示状态管理已经准备好工作。EM收到报告后返回kSuccess,表示EM已经确认SM的状态。


  4. SM收到EM的确认后,它通过SetState API向EM请求将Machine State切换为Driving,表示平台已经进入驾驶模式。EM收到请求后执行相应的操作,并返回kSuccess,表示Machine State已经切换成功。



4.6 SM与AP应用交互——案例2


 

这是关于AP平台的状态管理和执行管理模块之间的交互案例,它展示了如何通过SetState和ReportExecutionState API来实现Machine State和Function Group State的切换。


我想从以下几个方面来描述这个案例:


首先当某一条件触发时,状态管理通过SetState API向EM请求将Machine State功能组的状态改为StateXYZ,表示平台需要进入一个新的状态。


执行管理根据Machine Manifest和Execution Manifest文件中的信息,确定哪些进程属于Machine State功能组,以及它们在不同状态下的行为。


执行管理根据配置信息,终止App1进程,并等待它释放资源和退出。


其次,执行管理创建并启动App2进程,并分配资源和配置给它。


App2启动后,通过ReportExecutionState API向EM报告自己的执行状态为Running,表示App2已经准备好工作。


最后,当执行管理收到App2 Running的报告后,完成Machine State功能组的状态切换。



4.7 进程状态依赖运行流程——案例3


 

这是关于AP平台的进程状态依赖运行流程,它说明了不同的功能组和状态如何影响进程的启动和停止。


我想用以下的信息来描述这个流程:


  1. 进程A只在MachineState功能组的Startup状态下运行,它是一个一次性的进程,执行完就结束了。


  2. 进程B在MachineState功能组的Startup和Running状态下运行,它要等进程A结束后才能启动,这是通过配置文件设置的。


  3. 进程C只在MachineState功能组的Running状态下运行,当MachineState功能组要切换到Diagnostics状态时,它就要停止。


  4. 进程D和E在功能组1 的Running状态下运行,它们之间没有启动或停止的依赖关系,执行管理可以随机地启动或停止它们。


  5. 进程F在功能组2 的Running状态和Fallback状态下运行,它在不同的状态下有不同的启动参数,所以当功能组2 从Running状态切换到Fallback状态时,它要先停止再重新启动。


  6. 系统设计和集成要保证Machine在任何时候都有足够的资源供所有需要运行的进程使用,也就是说要考虑所有引用当前活动状态的进程的资源需求。



4.8 SM和EM如何协调功能组状态的切换——案例4


状态管理模块和执行管理模块如何协调功能组状态(Function Group State)的切换呢?


功能组状态是指每个功能集群(Functional Cluster)的运行状态,例如启动,运行,关闭等状态。


状态管理根据系统状态和功能组状态的变化,决定是否启动或停止应用程序。因此,应用程序需要向EM注册,以便EM能够监控和控制应用程序的状态。


它们之间的过程如下:


1 状态管理模块接收到来自不同来源的状态切换请求(Trigger),它会根据优先级来选择一个请求,并通知EM模块。


如:状态管理通知执行管理将功能组1,从状态1切换到状态2,


2 执行管理模块根据应用程序的配置文件,找到应用程序所属的功能组和对应的系统状态。


图中的功能组在当前状态1时,功能组中的大部分进程都处于idle的状态

功能组在目标状态2时,功能组中的一些进程将切换到运行的状态。


3和4  执行管理模块根据功能组的当前状态1和目标状态2,启动或停止应用程序,并且创建或销毁进程和资源。


5 应用程序在启动或停止的过程中,会通过ReportExecutionState接口向执行管理模块报告自己的运行状态,比如正在启动、正在运行等。


6 执行管理模块在收到应用程序的运行状态后,会给状态管理模块返回一个状态切换成功或失败的信号。


同理,状态管理请求执行管理将功能组从状态2切换到了状态3,以此来改变功能组中进程的执行状态:


如从running状态切换到Terminating,此时进程会通过ReportExecutionState接口向执行管理报告自己的运行状态,正在停止Terminating。


执行管理模块在收到应用程序停止的运行状态后,会给状态管理模块返回一个状态切换成功或失败的信号。


这就是通过状态管理来触发功能组状态切换,到执行管理去执行功能组状态切换的过程。



4.9 自适应应用程序的开发和集成


 

自适应应用程序Adaptive Application是一种按照AUTOSAR标准来开发的应用程序,它可以满足用户的不同需求。


完整的自适应应用程序不是一个单独的实体,而是由以下几部分组成的软件包:


  1. 可执行文件(Executable File):一种包含应用程序代码和入口点的二进制文件,可以在机器上运行。一个应用程序可以由一个或多个可执行文件组成。


  2. 数据和元数据(Data and Metadata):一种包含应用程序的配置和参数的文件,可以在运行时被读取或修改。


  3. 执行清单(Execution Manifest):描述应用程序的属性和服务实例的XML文件,它在集成阶段被创建,并在部署阶段被处理和部署到机器上。执行清单提供了将应用程序部署到AP平台上所需的信息。


使用自适应应用程序的优点是,它可以保持软件和部署的分离,这意味着:


我们可以在同一台机器上创建多个应用程序实例,它们使用同一个可执行文件,但有不同的数据和元数据。


我们可以将软件部署到多台机器上,并为每台机器创建不同的应用程序实例,它们使用不同的数据和元数据。


集成器将描述中的信息与机器清单相结合,创建一个可部署的软件包deployment package ,它包含了应用程序的可执行的文件和清单,配置文件和依赖的库等



4.10 自适应应用程序的部署


 

图中我们将执行管理过程分为两个部分:


1、Off-board:中的开发和集成,以生成可执行文件和清单的部署包(我们上一页PPT介绍了这部分内容)


2、On-board:是应用程序的部署流程,把开发好的软件放到用户的Machine上,让它能够正常运行的过程。


这个过程一般分为以下几个步骤:


  1. 软件配置管理人员把软件打包成一个部署包并拷贝到需要部署的Machine上,部署包里包含了软件的可执行文件、清单文件和其他必要的文件。


  2. 执行管理负责把部署包中的软件安装到用户的Machine上。它会先读取清单文件,了解软件的相关信息,然后申请系统资源,比如内存、磁盘空间等,创建进程,把可执行文件复制到指定的位置,并设置好运行环境。


  3. 应用程序进程:应用程序进程是软件运行时产生的一个或多个进程,它们使用标准化的API和服务与平台(执行管理、操作系统、其他功能集群)交互,完成软件的功能。



本文作者:刘向,汽车嵌入式工程师




-end-


本专栏是由汽车电子与软件打造的中立性技术科普专栏,将系统地阐述软件定义汽车下的关键挑战和工程实践。欢迎订阅本专栏!



汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 119浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 101浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 111浏览
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 58浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 102浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 111浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 68浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 98浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 120浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 87浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 73浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦