AUTOSAR的BswM模块详解_autosar bswm-CSDN博客
部分内容为上述链接摘抄,感谢CSDN的无私分享;
一、BSWM介绍
BswM即BSW Mode Manager,它是实现位于 BSW 中的车辆模式管理(Vehicle Mode Management )和应用程序模式管理概念(Application Mode Management )的一部分的模块。
它的职责是根据简单的规则对来自应用层 SW-C 或其他 BSW 模块的模式请求进行仲裁,并根据仲裁结果执行操作。
二、BSWM功能
BswM在AUTOSAR上跟很多模块有关联的,例如EcuM、ComM、OS等等;
BSWM的操作功能可以描述为两部分:Mode Arbitration 和Mode Control
(1)Mode Arbitration部分启动模式切换,SW-C 或其他 BSW 模块接收的模式请求和模式指示基于规则的仲裁会触发模式切换。
(2)Mode Control部分通过执行包含其他 BSW 模块的模式切换操作的Action List来执行模式切换。
BswM 应该被视为一个模式管理框架模块,其中的行为完全由其配置定义;对于Mode Arbitration 和Mode Control,我们可以简单粗暴地理解为前者是条件判断的,后者是动作执行的。
以下内容,我们会接触到以下概念:Rules(规则)、Mode Request(模式请求)、Expression(表达式)、Action List(执行列表)等等,从下图可以看出,这几个东西都是AUTOSAR Configurator的BswM里面配置项。
1. Mode Arbitration
BswM 执行的Mode Arbitration是基于规则(rule-based)的而且很简单。用于Mode Arbitration的rules在 BSW Mode Manager模块的配置中指定。
这些规则由简单的布尔表达式组成,因此Mode Arbitration对运行时的影响很小。
为了知道要执行哪些Action List,BswM 需要检测来自先前规则评估的Mode Arbitration结果的变化。
(1)Expressions:意为表达式,我理解是模式触发的条件表达式,引用BSWM MC(Mode Conditions);
(2)ModeConditions:意为模式条件,在这里配置条件的与或非,引用 RequestPorts;
(3)ModeRequestPorts:意为模式请求接口,指明请求来自哪里和配置请求类型为immediate还是deferred,我理解immediate和deferred的区别为 请求的模式切换在上下文中进行还是在周期循环中进行;
(4)Rules:指向相应Expressions和AL(Action list),并规定Rule的规则,如下图,若配置为初始值为False,生成的规则代码如下图,评估结果(True or False)用于决定执行相应的模式控制Action List。
2. Mode Control
BswM的Mode Control部分根据Mode Arbitration的结果执行所有必需的操作。这是使用Action List完成的。Action List是由Mode Arbitration触发时BswM执行的动作的有序列表。
Action List中的Action可以分为三种类型:
-
调用其他BSW模块或 RTE。
-
链接到要包含在执行中的其他Action List。
-
Mode Arbitration规则。当执行相应的Action List时,将评估这些规则。这样可获得规则的层次结构。
BswM不需要在其执行的操作上存储或响应任何 BSW 模块特定的返回值。因此,BSW 中的不同状态管理器将它们的当前状态给BswM,以用作Mode Arbitration的输入。但是,如果返回错误 (E_NOT_OK),BswM 可以发出 DEM事件和/或取消当前正在执行的Action List。