前言
今天分享一篇BswM的入门文章,文章来源于网络。
参考文档:
AUTOSAR模式管理-BSWM模块和其他模块的交互(二)
AUTOSAR模式管理-BSW模块和其他模块的交互(一)
AUTOSAR模式管理-BswM模块详细介绍
AUTOSAR模式管理-BswM模块配置介绍
AUTOSAR架构下RH850芯片断电系统配置实践
AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM
正文
模式管理是AUTOSAR中的一个难点,也可以说是最庞杂的一块。因为模式管理贯穿整个CP Autosar流程,几乎所有模块都跟BSWM发生着联系。
初见AUTOSAR/BswM,可能你知道这些概念:
Action是实际执行的动作;
Action1+ Action2+..构成ActionLists;
Rules触发ActionLists;
LogicalExpressions是Rules的一部分;
但是,懵逼树下懵逼果,你是不是有疑惑---这一个个的条件/表达式/规则/接口/动作列表/动作,到底谁先谁后?他们分别是怎么触发的?怎么才能将他们串起来?
本文从项目实践的角度去讲解,在ETAS ISOLAR软件中(Vector DAVINCI类同),怎么样按图索骥读懂”乱七八糟”的BswM配置!
BswM的对外信息交流
BswM作为一个独立的模块,其代码是在BswM_MainFunction()中周期执行的,那么它的输入/激励是什么?
答案:Port!
在ETAS的ISOLAR软件中BswM可用的Port分以下这些类.
我们把Port信号的改变理解成触发BswM动作的信息,从Port开始追朔,按图索骥,则可将BswM贯穿起来。我举个最简单的场景作为例子:
SWC发起请求->改变ModeRequestPort信息-构成>ModeCondition-构成>LogicalExpression-构成>Rules-触发>ActionLists-包含>Actions。
是不是现在还有点懵逼?如果不懵了,到此就可以结束了,如果还懵着呢,接着看个真实的案例。
例子1 - BswMSwcModeRequest类型的请求
该Port请求来源是SWC,也就是说SWC控制着它。
第一步 - 请求/触发源
在ModeRequestPort上单击右键 选择BswM Rule Trace View, 在弹出的视图里就给出了该Port对应的各个配置项,逻辑是很清晰的。
第二步 - 条件
在BswM Rule Trace View视图中点击ModeCondition,进入BswM_MC_BswM_PostRun这个配置项:
这个配置项简单来来说就是一行语句
BswM_MRP_SwcModeRequest== ECUM_STATE_POST_RUN
第三步 - 逻辑表达式
在BswM Rule Trace View视图上点击LogicalExpression视图, 进入BswM_LE_PostRun这个配置项:
该配置项只包含了BswM_MC_BswM_PostRun这一个条件,所以它依然是一行语句BswM_MRP_SwcModeRequest ==ECUM_STATE_POST_RUN。
第四步 - 规则
在BswM Rule Trace View视图上点击Rules视图, 进入BswM_AR_PostRun这个配置项,
可见这个规则就是,使用BswM_LE_PostRun这个表达式,当其为真的时候触发BswM_AL_BswMSwitchPrepShutdown这个动作组。简化成伪代码就是:
if(BswM_MRP_SwcModeRequest== ECUM_STATE_POST_RUN)
{
BswM_AL_BswMSwitchPrepShutdown();
}
else
{
/* Do Nothing… */
}
第五步 - 动作列表
在BswM Rule Trace View视图上点击ActionList视图,进入BswM_AL_BswMSwitchPrepShutdown配置项:
第六步 - 动作
在视图上点击Action视图,进入各个动作详细配置,一看就懂了。
做个总结