AUTOSAR BSW标准解读 – BswM

发布: Edward  •  分类: AUTOSAR  •  June 17, 2017, 8:58 p.m.  •  编辑

BswM模块全称是BSW Mode Manager,这个模块有两个任务:

  1. 模式仲裁(Mode Arbitration):指的是通过仲裁规则/SWC的请求/其他BSW模块的请求来发起模式切换
  2. 模式控制(Mode Control):指的是通过执行动作列表(Action List)里边的动作实现模式切换

BswM模块是一个模式管理模块,它的行为完全由配置来决定和实现。BswM模块不要求对其他BSW模块制定的动作的返回值存储或者作出反应(但是错误返回值E_NOT_OK可以触发DEM事件或者触发动作列表执行取消),因此其他的状态管理模块的状态可以用作BswM的仲裁输入。模式仲裁和模式控制各司其职,模式仲裁以后如果确认要进行模式切换,那么模式控制就会执行定义好的这个模式切换需要执行的动作列表里边的动作(可以是动作,也可以是另外的动作列表)。

下边我们来分别看一下AUTOSAR里边对模式仲裁和模式控制都有哪些规定:

1. 模式仲裁

实现模式仲裁的基础是规则(Rules),规则由一系列的模式请求条件通过逻辑关系组合起来,规则是根据不同的需求配置的(也就是做AUTOSAR里边没有定义具体的规则是什么)。模式切换条件可以通过AND/OR/XOR/NAND来组合起来形成规则,而其中的每一个切换条件都可以设置是等于的时候满足还是不等于的时候满足。在BswM的实现中,规则会在下边三种情况下被检查:

  • 输入模式切换请求(来自SWC),即SWC通过调用BswM提供的模式切换函数(当然会通过RTE,最终会调用到AUTOSAR标准接口BswM_RequestMode来请求模式切换),BswM模式仲裁机制会根据当前已有的请求,以及当前请求的类型选择立即仲裁或者是推后仲裁。

  • 模式标识改变(来自其他BSW模块,比如EcuM,WdgM等),其他BswM模块来请求一个模式的仲裁。

  • BswM主函数,相当于BswM模块的周期任务,在主函数里会有周期性的模式仲裁,它一般用来处理被推后仲裁的请求。

我们上边已经提到一个概念:立即仲裁(Immediate)和推后仲裁(Deferred),这叫模式仲裁的执行方式,除了规则检查加执行方式和起来构成了模式仲裁机制。我们上文中也有提到,立即仲裁指的是在模式切换请求发生的时候就进行模式仲裁,而推后仲裁指的是将当前的请求放到仲裁队列中,在BswM主函数中进行仲裁。

下边我们来看这张图,模式仲裁最终的结果就是规则检查的结果,简单来说就是规则满足(True)和规则不满足(Flase),定义规则的同时会同时定义这个规则满足时执行动作列表或者规则不满足时执行动作列表,或者两者都执行(一般来说是两个不同的动作列表),然后模式控制就会去执行绑定的动作列表。

BswM_ModeAbitration

BswM模式仲裁中以上的这些都是可以配置的。

2.模式控制

模式控制是根据模式仲裁的结果执行相应的动作列表,动作列表(Action List)是一系列按顺序排列的动作(Action)
动作列表中的动作有三类(参考下图):

  • 调用其他的BSW模块或者调用RTE

  • 连接到其他的动作列表

  • 模式仲裁规则,这些规则将在对应的动作列表执行的时候被检查和评估

BswM_ModeControl

我们来看一个模式控制的信息交互路径示例:

BswM_ModeControl_Process

SWC发出模式切换请求给模式仲裁,然后仲裁结果被传给模式控制,然后模式控制根据结果执行相应的动作列表,动作列表执行完毕后,BswM模块可以通知请求发出的SWC和使用到这个模式的SWC模式切换完毕。

动作列表的执行有两种方式:

  • 每一次规则在被检查的时候,都会根据设定的期望结果来执行,称为条件执行(condition)

  • 当规则的检查结果跟上次规则检查的结果不同的时候才会执行,称为触发执行(Trigger)

为了简化ECU的配置和BswM模块的设计以及代码的生成,AUTOSAR预定义了一些动作列表:

  • ComM – 设置一个通讯接口的通讯模式
  • ComM – 限制通讯模式
  • ComM – 使能一个ComM通道的通讯
  • LinSm – 设置LIN调度表
  • FlexRay – 切换到“All Slot Mode”
  • COM – 激活和停用PDU Group
  • COM – 使能或禁用截至时间超时监控
  • COM – 触发I-PDU发送
  • EcuM – 设置ECU模式
  • EcuM – 关闭运行请求
  • Network Management – 使能或禁用网络管理通讯
  • PduR – 使用或禁用PDU Routing Path
  • RTE和BSW调度器的模式切换

3.BswM上的接口(端口类型)和端口

BswM的端口在RTE上边和下边都有,每个使用到BswM服务的SWC都需要创建相应的端口,这些接口都具有相同的接口类型,都会被连到BswM的端口上。

端口类型:

  • Mode Request端口,这是一个Sender Port,一个SWC作为模式的改变者可以用来请求BswM进行模式切换,在BswM中有对应的Recevie Port
  • Mode Switch端口,这是一个Receive Port,一个SWC也可以是模式的使用者,因此它需要知道BswM的仲裁结果,因此它需要有这样一个R-Port,在BswM中对应的要有Sender Port(这个端口用来实现Mode Notifications,端口类型同样是Mode Switch),另外BswM在需要知道当前的模式的话也需要Mode Switch R-Port

端口:

  • Mode Request端口:BswM读取请求的模式可以使用R-Port Rte_Read_modeRequestPort0_requestedMode(&)
  • Mode Switch端口:切换BswM的模式,可以是Rte_Switch_modeSwitchPort0_currentMode()或者SchM_Switch_modeSwitchPort0_currentMode()
  • Mode Notifications端口:SWC读取BswM的模式可以通过R-Port Rte_Mode_modeNotificationPort0_currentMode(&)或者SchM_Mode_modeNotificationPort0_currentMode(&)

BswM_Port

最后我们看一下上边这张端口连接图:
Application Mode Manager(SWC)通过modeRequestPort和BswM相连,Application Mode Manager(SWC)/Application Part(SWC)/BswM(如果需要知道当前的模式)会跟BswM(模式仲裁和模式控制)之间通过modeSwitchPort相连,用来得到BswM在模式切换以后的通知。

4.参考资料

AUTOSAR_SWS_BSWModeManager.pdf

标签: Architecture Automotive AUTOSAR Software 软件构架 汽车 软件

评论(0)

暂无评论

欢迎留言

This template was modified by Edward