深入学习Autosar之BswM模块
Auosar之BswM模块上一篇文章讲到的基本概念,它的职责是根据简单的规则对来自应用层 SW-C 或其他 BSW 模块的模式请求进行仲裁,并根据仲裁结果执行操作。
如下图BswM在AUTOSAR上跟很多模块有关联的,例如EcuM、ComM、OS,DCM,Can_sM等等;BSWM的操作功能可以描述为两部分:Mode Arbitration 和Mode Control
(1)Mode Arbitration部分启动模式切换,SW-C 或其他 BSW 模块接收的模式请求和模式指示基于规则的仲裁会触发模式切换。
(2)Mode Control部分通过执行包含其他 BSW 模块的模式切换操作的Action List来执行模式切换。
BswM 应该被视为一个模式管理框架模块,其中的行为完全由其配置定义;对于Mode Arbitration 和Mode Control,我们可以简单粗暴地理解为前者是条件判断的,后者是动作执行的。
如下时BSWM模块的源码,包含了所有相关的模块以及需要调用的函数:
之前的章节讲到过这个模块,可能只是理论上的一个了解,这里打开代码可以更加深入地接触BswM的模块的内核
下面是配置工具中BSWM的配置项;主要是配置两部分 Mode Arbitration 和Mode Control;
实现仲裁需要配置BswMRule、BswMLogicalExpression、BswMModeCondition以及BswMModeRequestPort(或者BswMEventRequestPort)如下图所示:其中BswMRule指需要仲裁的规则,BswMLogicalExpression提供仲裁逻辑表达式,逻辑表达式的条件由RequestPort和BswMModeCondition构成。
生成的文件 如下:
BswM有关联的模块很多如下,的当然这些也是可以配置,主要是根据项目需求来配
打开代码可以看到BSWM的执行函数也是很简单,就是调用其他模块的API