在AP_EM上的骚操作

本文探讨了AP(Application Processor)中的状态管理SM和执行管理EM,详细阐述了它们在AP应用中的作用。EM负责读取APP的Manifest配置,启动SM,并根据SM的指示管理进程。SM通过功能组状态控制进程,功能簇是进程集合,每个功能组有独立的状态,进程依赖这些状态来启动和停止。例如,进程A依赖于Startup状态,B依赖于A的终止和Startup/Runing状态,C依赖于Running状态,D、E、F则依赖不同功能组的特定状态。
摘要由CSDN通过智能技术生成

最近大家都对AP兴趣很大,也不知CP大家玩转了木有,反正咱也不知道咱也不敢问,这次楼主就扯下AP中的状态管理SM和执行管理EM部分。

言归正传:AP的应用,在通过工具配置后,会生成可供APP开发使用的代码和JSON的Manifest配置信息文件,经编译后APP会生成可执行文件BIN

EM作为执行管理,其会负责读取APP的Manifest文件,获取APP的配置信息,不同的 APP在 Manifest 文件中被关联到不同的系统状态  (Machine State)  中,SM是状态管理,通过改变进程所属的功能组状态可对进程进行启动和停止,两者之间的关系如下:

首先,SM和EM其实从本质上看都属于AP的进程,在AP中每个进程的生命周期如下:

EM是AP第一个启动的进程,EM启动就绪后,EM将把MachineState的状态由OFF切换到Startup状态。

EM进程启动起来后会将SM的进程启动起来,SM可通过ExecutionClient::ReportExecutionState向EM报告此时自己进程的状态(每个进程都可通过该API向EM报告状态)。

 SM正常启动运行起来后,就可通过StateClient::SetState函数对某个功能簇的工作状态进行控制,从而对隶属于相应功能簇的进程进行统一管理。

这里要介绍下功能簇的概念,功能簇可以理解为进程的集合,每个功能簇有自己的状态和过程,成为功能组Function Group States,功能组的最小单位就是一个进程,一个功能组可以配置一组进程,当SM请求相应功能组进入到对应状态时,配置在该状态下的进程都会被启动,下面就是个小示例:

其中,Machine State、Function  Group1 和 Function Group2 为不同的功能组,A~F 代表不同的进程,为了简化,每个进程只有Idle、Running、Terminated三个进程状态。

进程 A 依赖于 Machinestate功能组的的Startup 状态,EM 在启动后会Machine state 设置为 Startup状态,因此,EM 启动后将直接启动进程 A;而进程 A 为自终止进程,将在运行一次后自动终止。

进程 B 依赖于 Machinestate功能组的 Startup 和 Running 状态,同时依赖于进程 A 的终止状态,因此,进程 B 将在进程 A 终止后启动,而在 machine state 离开 Running 时终止。

进程 C 仅依赖于 Machinestate 的Running 状态,在 Machine state 进入 Runing 时启动,在离开Running 时终止。

进程 D 仅依赖于 FunctionGroup1 的 FG1:Running 状态。

进程 E 依赖于FG1:Running 和 FG2:Running 状态。

进程 F 依赖于FG2:Running 和 FG2:Fallback 状态。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值