
AUTOSAR模式管理-BswM模块配置介绍
BswM模块是实现位于BSW中的车辆模式管理和应用程序模式管理概念的组成部分的模块。它的职责是基于简单的规则仲裁来自应用层SWC或其他BSW模块的模式请求,并根据仲裁结果执行操作。如ECU关于通信的开关及ECU的休眠唤醒功能就是通过模式管理来实现的。BswM模块的分享BswM模块概念详解和BswM模块配置及代码分析,具体的项目实战请关注本号的后续文章,本篇为BswM模块配置介绍篇。
AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM
1.BswM config
Bsw模块在AUTOSAR工具中的配置总览如下图所示,配置主要由两部分组成,一部分是模式仲裁“BswMArbitration”,一部分是模式控制“BswMModeControl”。
2.模式仲裁
模式仲裁的配置分为四部分
1)模式逻辑表达式
2)模式条件
3)模式需求接口
4)模式规则
2.1BswMModeRequestPorts(模式请求)
BswMModeRequestPorts的配置分为两部分:
1)BswMRequestProcessing配置,配置模式请求在模式仲裁中的处理方式是DEFERRED还是IMMEDIATE,如果处理方式是DEFERRED,那么是通过轮询,在BswM中的Main函数处理模式请求;如果是IMMEDIATE,那么有模式请求时,就直接处理。
2)BswMModeInitValue:这部分配置模式请求的初始值,具体的值需要使用在ASW中Mode DecLaration中配置的模式值。
2.2.BswMModeConditions(模式条件)
BswMModeConditions的配置主要分为三部分:
1)BswMConditionMode:这个配置的作用是将Request Port与Condition Mode连接起来,因为模式仲裁的条件来自于SWC通过Request port发出的模式请求或者其他Bsw模块发出的模式指示。因此这个配置中需要填写与Condition相对应Request Port的名字。
2)BswMModeValueRef:BswMModeValueRef是仲裁逻辑表达式的固定模式,比如模式请求为N,BswMModeValueRef为X,那么模式条件表达式为N == X,或者是N != X.
3)BswMConditionType:BswMConditionType指的是模式条件表达式中逻辑符号,在AUTOSAR工具中分为两种:BSWM_EQUALS与BSWM_EQUALS_NOT,BSWM_EQUALS在表达式为==,BSWM_EQUALS_NOT在表达式为!=
2.3.BswMLogicalExpression(逻辑表达式)
模式条件是单一的逻辑表达式,逻辑表达式相对于模式条件而言,可以实现多个模式条件的逻辑组合,比如:
若Logic Expression仅需要两个Mode Indication 1与Mode Indication 2的逻辑组合,当然理论上可支持n个单一表达式的逻辑组合,取决于实际情况的需要。
Mode Condition 1:X == 3;
Mode Condition 2:Y == 4;
Logic Expression A = (Mode Condition 1 (OR或AND或XOR或NAND)Mode Condition 2 );
BswMLogicalExpression主要需要配置两部分:
1)BswMArgumentRef:这部分内容需要配置参与逻辑表达式的模式条件,添加模式条件的名称即可。
2)BswMlogicalOperator:这个配置指的是模式条件之间的逻辑符号,分为OR或AND或XOR或NAND三种。
2.4.BswMRules(模式规则)
模式规则指的是根据模式逻辑表达式的结果(TRUE 或者 False)来执行对应的ActionList,因此逻辑表达式与Actionlist需要进行mapping。
因此模式规则需要配置的内容有三部分:
1)BswMRuleFalseActionList,BswMRuleTrueActionList:BswMRuleFalseActionList为逻辑表达式结果为True时执行的ActionList,BswMRuleTrueActionList为逻辑表达式结果为False时执行的ActionList。填写相应的Actionlist的名称即可。
2)BswMRuleExpressionRef:这部分是对逻辑表达式的引用。
3)BswMRuleInitState:逻辑表达式初始值。逻辑表达式需要配置一个初始值,以在BswM初始化时执行默认ActionList。
3.模式控制
模式控制需要配置的内容分为三类:
1)模式动作列表
2)模式动作
3)模式切换接口
3.1BswMAction(模式动作)
模式动作分为两类,一类是BswM与其他BswM的固定动作,比如
ComM:设置对应通信接口的通信模式或允许在对应的通道上通信;
COM:实现IPDU报文的切换;(带有初始值或者不带有初始值);
COM: 使能或者关闭信号的deadline timeout monitoring;
NM:开启或者关闭NM通信
另一类是BswMUserCallout,这一类用作回调函数,可以用来进行Bsw模块的初始化工作。
3.2BswMActionLists(模式动作列表)
模式动作列表需要配置的内容分为两部分:
1.BswMActionListExcecution:这部分配置的是ActionList的触发方式,具体内容的解释已经在基础篇解释过了,简而言之就是配置Trigger或者Conditional两种。
3.3 BswMActionListItem
BswMActionListItem指的是ActionList中Action个体,以其中一个Item为例,Item需要配置的内容为:
1)BswMAbortOnFail:如果BswM模块在执行过程Action List过程中,收到返回值为E_NOT_OK,BswM应该停止Action List的执行。如果需要实现该功能,那么参数“BswMAbortOnFail”应该设置为"true"
2)BswMActionListItemRef:这个参数为具体的Action,需要填写Action的名称。
3)BswMSwitchPort:SwitchPort是BswM与SWC之间的接口,BswM将模式仲裁后具体的状态发送相应的SWC。
4.小结
对于大型项目(例如域控制器)的BswM的配置会及其繁琐,而且一旦出现问题也比较难分析和查找原因,所以在使用工具配置BswM之前建议使用Excel表格把模式请求端口(MRP)、模式状态( ModeCondions)、模式逻辑表达(LogicalExpressions)、模式规则(Rules)、动作(Action)、动作列表(Action List)管理起来,把每一个条件和状态都梳理清楚后在按照表格去工具(Davince/ISOLAR)上一条一条的配置BswM,这样能减少错误。具体可以参考AUTOSAR BswM(3)代码分析一文。
参考文献:
1. Specification of Basic Software Mode Manager
文章转载自公众号:汽车电子嵌入式
