1 概述
BswM(Basic software Management)即基础软件管理模块,它的职责是根据简单的仲裁规则对来自应用层SWCs或底层BSW模块的模式请求进行仲裁,并根据仲裁结果执行相应的操作。
2 BswM属性介绍
在进行具体功能介绍前,先对BswM的基本属性进行下介绍,方便大家有基本认识后再去深究。对BswM属性介绍还是按模式仲裁(Rule)与模式控制(Action)两个方面进行。
2.1 模式仲裁
模式仲裁是BswM模块基于一定的规则去做判断,涉及的概念有Rules、LogicalExpression、Condition。
-
Rules
即模式判断的条件或规则,如if…else
-
Expression
条件的逻辑组合,几个条件组合在一起并通过与或非等组成条件判断的最终表达式。 如下图中的Normal_Mode = True Ifc1_Bus_Off=False
2.2 模式控制
模式的控制是根据设定的规则对模式请求作出仲裁后执行的一系列操作,涉及的概念有:Action、ActionList(AL)
如下图所示,BswM可能包括多个ActionLists,每个ActionList也可以包括多个Acions。ActionList中的元素可以是具体的动作也可以是另一个ActionList的引用,或者也可以是仲裁模式可执行的规则
2.3 基本控制过程
下图显示了模式请求的最小处理循环:
-
模式请求的SWC通过其请求的接口BswM请求模式A,BswM通过其接收端口接收请求;
-
BswM对收到的模式请求根据其制定的规则进行仲裁;
-
根据仲裁结果执行相应的ActionList;
-
在执行ActionList时,BswM可通过RTE将仲裁结果反馈给模式请求者
3 状态机
ECU状态处理的状态机如下图所示:
3.1 Startup -> wakeup
Expression:
判定当前模式处于Init
Action list:
请求模式切换到Wakeup。
3.2 WakeUp -> Run
Expression:
1.判定当前状态是否为wakeup;
2.判定是否有唤醒事件;
3.判定ComM request 是否为pending且上一次目标模式通知是否为wakeup。
Action list:
1.在 ComM request pending 状态下允许通信;
2.更新BswM 计时器;
3.request 到 RUN 状态;
3.3 Run -> PostRun
Expression:
1.判定当前模式是否在RUN且上一次 request 为run;
2.判定ComM是否为NO_COMMUNICATION;
3.SWC没有模式请求;
4.判定BswM转换计时器超时
Action list:
1.禁止ComM通信;
2.清除唤醒事件;
3.请求模式转换到POSTRUN
3.4 PostRun -> PreShutdown
Expression:
1.判定SWC是否有模式请求;
2.判定是否有唤醒事件;
3.判定ComM 请求是否为 pengding;
Action list:
请求进入preShutDown
3.5 PREP_SHUTDOWN-> WAIT_FOR_NVM
Expression:
判定当前模式处于PRE_SHUTDOWN且上一次请求通知为SHUTDOWN;
Action list:
1.设定NVM写超时计时器;
2.NvmWriteall;
3.请求切换到ESH_WAIT_FOR_NVM
3.6 WAIT_FOR_NVM -> SHUTDOWN
Expression:
1.判定当前状态是否为WAIT_FOR_NVM;
2.判定是否完成NVMwriteall;
3.判定是否有唤醒事件;
4.ComM是否有request;
Action list:
1.关闭NVM计时器;
2.请求到Shutdown状态;
3.用户自定义代码实现;