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-


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



汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 44浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 116浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 170浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 170浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 100浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 141浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 68浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 125浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 180浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 55浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦