BswMModeRequestPort
1、 状态描述
这个是属于ECU启动和休眠的状态处理机制,主要包含以下几种状态:
ESH_INIT
ESH_RUN
ESH_POST_RUN
ESH_PREP_SHUTDOWN
ESH_WAIT_FOR_NVM
ESH_SHUTDOWN
ESH_WAKEUP
2、Init Value:ESH_INIT
3、Request Processing
BSWM_DEFERRED(延迟处理):当参数的值为BSWM_DEFERRED时,意味着相关的处理工作将被推迟到BswM(可能是一个软件模块或系统的名称)的主函数中进行。也就是说,当前的模式请求不会立即被处理,而是会在适当的时候,与主函数的其他处理逻辑一起被执行。
BSWM_IMMEDIATE(立即处理):如果参数的值设置为BSWM_IMMEDIATE,那么每当收到一个模式请求时,相关的处理将会立即执行。如果此时正在处理另一个立即请求,或者正在执行主函数中的延迟规则,新的请求将会被排队等待处理。这种方式确保了请求能够得到及时响应,但可能会根据当前系统的状态有所延迟。
BSWM_FORCED_IMMEDIATE(强制立即处理):当参数的值是BSWM_FORCED_IMMEDIATE时,模式仲裁将会立即执行,即使此时有其他的立即请求正在处理,或者主函数中的延迟规则正在执行,也会被中断。这种方式保证了当前请求的优先级最高,将会立即得到处理,但同时也可能会影响到系统中其他正在进行的操作。
4、 Arbitrate On Init
初始化值仲裁:如果启用了该参数,那么依赖于这个请求端口的规则,不仅会在正常处理过程中被仲裁,还会在BswM(可能是指某个软件模块或系统)初始化(BswM_Init)结束时,基于该端口的初始值进行仲裁。这意味着在系统启动或重置时,相关的规则就会根据请求端口的初始设定进行一次仲裁处理。
适用性:这个参数的设置仅适用于立即处理(IMMEDIATE)和强制立即处理(FORCED_IMMEDIATE)的请求处理方式。对于延迟处理(BSWM_DEFERRED)的方式,这个参数不适用。
BswMModeCondition
在BswM模块中,模式条件是用来定义ECU在特定情况下应该采取的行为或状态转换的逻辑。这些条件通常与ECU的当前状态、输入信号、系统参数等有关,它们决定了ECU在接收到特定事件或满足特定逻辑时如何响应。
例如,一个ECU可能需要根据车辆的速度、发动机状态、驾驶员操作等条件来判断是否需要切换到某种特定的工作模式。在这种情况下,BswMModeCondition就包括了这些判断所需的所有条件,如车速达到特定值、发动机温度在安全范围内等。当这些条件同时满足时,BswM将触发相应的行为或状态转换。
1、ESH_Cond_StateIsInit的模式条件是判断ESH_State是否等于ESH_Init
2、ESH_Cond_StateIsRun的模式条件是判断ESH_State是否等于ESH_RUN
3、ESH_Cond_StateIsPostRun的模式条件是判断ESH_State是否等于ESH_POST_RUN
4、ESH_Cond_StateIsPrepShutdown的模式条件是判断ESH_State是否等于ESH_PREP_SHUTDOWN
5、ESH_Cond_StateIsWaitForNvm的模式条件是判断ESH_State是否等于ESH_WAIT_FOR_NVM
6、ESH_Cond_StateIsWakeup的模式条件是判断ESH_State是否等于ESH_WAKEUP
BswMLogicalExpression
BswMRule
BswMModeControl
1、 ESH_InitToWakeup
逻辑表达式为ESH_LE_InitToWakeup
逻辑表达式的实际条件是ESH_Cond_StateIsInit(ESH_State == ESH_INIT)
如果逻辑表达式为True,则执行对应的True Action List。
TrueActionList:ESH_AL_InitToWakeup,
TrueAction:ESH_Action_ESH_Wakeup,
Action List Executions: BSWM_CONDITION:每次评估规则时都应执行动作列表。
BSWM_TRIGGER:每次评估结果发生变化时都应执行动作列表。
ESH_Action_ESH_Wakeup:将ESH_State由ESH_INIT状态切换到ESH_WAKEUP
2、 ESH_WakeupToRun
逻辑表达式:
ESH_LE_WakeupToRun
ESH_State == ESH_WAKEUP AND
ESH_LE_ValidWakeup(ESH_EcuM_GetValidatedWakeupEvents != 0)
TrueActionList:ESH_AL_WakeupToRun
TrueAction:
ESH_Action_SelfRunRequestTimer_Start
ESH_Action_ESH_Run:将ESH_State由ESH_WAKEUP状态切换到ESH_RUN
3、ESH_RunToPostRun
逻辑表达式:
ESH_LE_RunToPostRun
ESH_State == ESH_RUN AND
ESH_RunRequest == RELEASED AND
ESH_SelfRunRequestTimer == BSWM_TIMER_EXPIRED
TrueActionList:ESH_AL_RunToPostRun
TrueAction:
ESH_Action_EcuMClearValidatedWakeupEvents
ESH_Action_ESH_PostRun:将ESH_State由ESH_RUN状态切换到ESH_POST_RUN
4、ESH_PostRun
5、 ESH_PostRunNested
6、 ESH_PostRunToPrepNested
将ESH_State由ESH_POST_RUN状态切换到ESH_PREP_SHUTDOWN
7、ESH_PrepToWait
将ESH_State由ESH_PREP_SHUTDOWN状态切换到ESH_WAIT_FOR_NVM
8、ESH_WaitToShutdown
EcuM Go shutdown