【AUTOSAR】 项目和代码详解(五)----AUTOSAR BswM

BswM

概要

 

BSWM的基本功能可以描述为两个不同的任务:模式仲裁和模式控制。模式仲裁部分从SW-Cs或其他BSW模块接收模式请求和模式指示的基于规则的仲裁产生模式开关。模式控制部分通过执行包含其他BSW模块模式切换操作的动作列表来执行模式切换。BswM应该被视为一个模式管理框架模块,其中的行为完全由其配置定义。

BswM执行的模式仲裁简单且基于规则。模式仲裁使用的规则在BSW模式管理器模块的配置中指定。规则由琐碎的布尔表达式组成,因此模式仲裁应该具有较低的运行时影响。为了知道要执行哪些操作列表,BswM需要检测模式仲裁结果中来自以前规则评估的更改。

规则是由一组模式请求条件组成的逻辑表达式。当输入模式请求和模式指示更改时,或者在执行BswM主函数期间,将对规则进行评估。评估的结果(真或假)用来决定执行相应的模式控制动作列表。

BswM的模式控制部分根据模式仲裁的结果执行所有需要的操作。这是通过操作列表完成的。操作列表是BswM在模式仲裁触发时执行的操作的有序列表。操作列表中的操作可以有三种类型:

1.调用其他BSW模块或RTE。

2. 链接到执行中包含的其他操作列表。

3.仲裁规则模式。当执行相应的操作列表时,将对这些规则进行评估。这样,就得到了规则的层次结构。

BswM不需要在其执行的操作上存储或对任何特定于BSW模块的返回值作出反应。因此,BSW中的不同状态管理器将其当前状态指示给BswM作为模式仲裁的输入。但是,如果返回一个错误(E_NOT_OK), BswM可以发出一个Det运行时错误和/或取消当前执行的操作列表。

 

模块配置

ETAS ISOLAR中主要配置或修改内容如下:

BswMGeneral

 

BswMCanSMEnabled

启用/禁用CanSM模块相关的BswM API

BswMCanSMIcomEnabled

启用/禁用CanSM Icom模块相关的BswM API

BswMComMEnabled

启用/禁用ComM模块相关的BswM API

BswMDcmEnabled

启用/禁用Dcm模块相关的BswM API

BswMDevErrorDetect

打开或关闭开发错误检测和通知。

BswMEcuMEnabled

启用/禁用EcuM模块相关的BswM API

BswMEthIfEnabled

启用/禁用EthIf模块相关的BswM API

BswMEthSMEnabled

启用/禁用EthSm模块相关的BswM API

BswMFrSMEnabled

启用/禁用FrSm模块相关的BswM API

BswMGenericRequestEnabled

启用/禁用与通用请求相关的BswM API

BswMJ1939DcmEnabled

启用/禁用J1939Dcm模块相关的BswM API

BswMJ1939NmEnabled

启用/禁用J1939Nm模块相关的BswM API

BswMLinSMEnabled

启用/禁用LinSm模块相关的BswM API

BswMLinTPEnabled

启用/禁用LinTp模块相关的BswM API

BswMMainFunctionPeriod

BswM的周期主函数的周期时间。以秒为单位定义。

BswMNmEnabled

启用/禁用Nm模块相关的BswM API

BswMNvMEnabled

启用/禁用NvM模块相关的BswM API

BswMSchMEnabled

启用/禁用SchM模块相关的BswM API

BswMSdEnabled

启用/禁用Sd模块相关的BswM API

BswMVersionInfoApi

切换使用服务BswM_GetVersionInfo()读取版本信息的可能性。

BswMWdgMEnabled

启用/禁用WdgM模块相关的BswM API

BswMGeneral\BswMUserIncludeFiles

BswMUserIncludeFile

头文件名称,应包括在BswM。根据ISO C90第6.10.2节“源文件包含”,此参数应使用的值为h-char-sequence或q-char-sequence。

BswMGeneral\ BswMRbGenericReqUser

BswMConfig\BswMArbitration

 

BswMLogicalExpression

此容器描述可用于模式仲裁的逻辑表达式。逻辑表达式由一组参数和一个逻辑运算符组成。每个参数可以是模式条件,也可以是子表达式,以便定义更复杂的逻辑表达式。每个逻辑表达式中可能有无限个参数。

BswMLogicalOperator

此参数指定要在逻辑表达式中使用的逻辑运算符。如果将逻辑运算符设置为BSWM_NOT以外的值,并且表达式只包含一个条件,那么这个参数将不起作用。

BswMArgumentRef

这是对模式条件或子表达式的选择引用。

如果是BswMLogicalExpression。BswMLogicalOperator = BSWM_NAND只支持两个操作数。如果是BswMLogicalExpression。BswMLogicalOperator = BSWM_NOT只支持一个操作数。

 

BswMModeCondition

该容器描述了BswM模式条件,这些条件可以单独用于形成规则,也可以作为逻辑表达式的一部分。

BswMConditionType

此参数指定对模式条件的求值进行何种比较。

对于BSWM_EQUALS和BSWM_EQUALS_NOT,将BswMConditionMode引用的bswmmoderport端口与BswMConditionValue中配置的值进行相等或不相等的比较。

对于BSWM_EVENT_IS_SET和bswm_event_is_clear,将检查BswMConditionMode引用的BswMEventRequestPort端口是否被设置或清除。

BswMConditionMode

此参数引用模式请求端口或事件请求端口。

BswMBswRequestedMode

此参数包含BSW模块可以请求/指示的特定模式/状态的符号名称(作为字符串)

BswMModeDeclaration

当模式对应于模式请求或模式指示接口时,模式由模式声明定义。模式声明在SW-C模板中定义,因此使用对应模式声明的外部引用。

BswMModeDeclaration

这是用于对应于此条件的模式请求的模式声明的外部引用。

 

BswMEventRequestPort

该容器的每个实例都定义了一个可以发送到BswM的事件。基本的软件模块可以通过调用相应的BswM C-API(例如:BswM_ComM_InitiateReset())将这些事件发送给BswM。每个实例都定义一个模式请求接口,该接口用于请求或指示从/到BswM的模式。如果请求是由SW-C或BSW模块发出的,则这些接口被实现为端口或普通的c -函数。有不同类型的模式请求:来自SW-C的模式请求:s2。来自其他BSW模块(如DCM)的模式请求。3.来自RTE或其他BSW模块(如总线特定的状态管理器)的状态/模式指示。

BswMEventRequestProcessing

此参数定义模式仲裁的处理是在接收到事件请求时立即执行,还是延迟到BswM的主要功能处理。

BswMModeInitValue

此参数定义初始化后BswM用于对应模式请求的初始模式值。

BswMEventRequestSource

此选择容器指定模式请求或状态/模式指示的源。模式的请求者可以是SW-C:s和其他BSW模块,例如总线特定的状态管理器。

 

BswMRule

此容器的每个实例都描述了BswM仲裁规则。规则要么由简单的模式条件组成,要么由更复杂的逻辑表达式组成。该容器还引用了将规则计算为True或False时调用的操作列表。

BswMNestedExecutionOnly

如果该规则是独立规则或从属规则,则该参数为其相关规则定义。

false:一个独立的规则,即每次应用时都要进行评估(既作为独立的规则,由它自己的bswmmoder源驱动,又被另一个规则引用)。

true:一个从属规则,仅作为一个或多个操作列表中引用的结果进行评估。

BswMRuleInitState

此参数是BswM的重置/初始化行为的一部分。当规则求值的结果自上次求值后发生更改时,将执行操作列表。此参数定义了在初始化BswM之后使用的规则的“先前评估结果”。如果将该参数设置为BSWM_UNDEFINED,则在初始化后第一次计算规则时,始终将计算结果视为已更改。如果该参数被设置为BSWM_TRUE,那么如果规则被赋值为false,则计算结果将被视为已更改。如果将该参数设置为BSWM_FALSE,则如果将规则计算为true,则将计算结果视为已更改。

BswMRuleExpressionRef

这是对每个规则求值的逻辑表达式的引用。

BswMRuleFalseActionList

这是对操作列表的引用,当规则被赋值为False时将执行该操作列表。

BswMRuleTrueActionList

这是对操作列表的引用,当规则被赋值为True时将执行该操作列表。

BswMConfig\BswMDataTypeMappingSets

BswMDataTypeMappingSetRef

数据类型引用。

BswMConfig\ BswMModeControl

 

BswMAction

每个容器定义一个动作。这些操作可以是一个或多个操作列表的一部分。

BswMAvailableActions

选择容器,包括要在操作列表中使用的可用操作。

 

BswMActionList

此容器的每个实例都定义了一个基于BswM规则调用的操作列表。操作列表包含要处理的已编号操作项的列表。一个动作列表还可以包含其他动作列表。

BswMActionListExecution

此参数控制是否在每次计算规则时或仅在计算结果更改时执行相应的操作列表。当此操作列表在另一个操作列表中执行时,此参数没有效果。

BswMAbortOnFail

此参数定义如果此特定操作返回E_NOT_OK,则操作列表的执行是否应该中止。注意,这只适用于E_NOT_OK作为可能的返回值的操作。

BswMActionListItemIndex

此参数定义操作列表中操作的索引。它用于定义操作执行的顺序。

BswMReportFailRuntimeErrorId

如果配置了此参数,并且此特定操作返回E_NOT_OK,则BswM将报告一个Det运行时错误。运行时错误中报告的ErrorId由该参数中配置的值给出。

BswMActionListItemRef

操作项可以是原子操作,也可以是对另一个操作列表或规则的引用。

BswMRteModeRequestPort???

此容器定义一个模式请求端口,BswM可以利用该端口将模式请求发送到充当模式管理器的SW-C。如果此容器由BswMRteModeRequest引用,则BswM应在其服务描述中创建相应的PPort。

BswMRteModeRequestPortInterfaceRef

这是用于模式请求的变量数据原型的实例引用。

BswMRteModeRequestVariableDataPrototypeSRRef

这是用于模式请求的VariableDataPrototype的外部引用。

BswMSwitchPort

该容器包含一个对模式切换接口的引用,BswM必须对该接口进行实例化,以便在其SWCD中创建PPortPrototype。

BswMModeSwitchInterfaceRef

引用BswMModeSwitchPort的ModeSwitchInterface。

RB Spec

BswMRbBswModeDeclarationGroup

在此参数中,提供对模式声明组的引用。

例如:

/ TestCd_ComM_BSWMD ModeDeclarationGroups / MDG_TestCd_ComM_BSWMD_Modes。

BswMRbGenericReqUserRef

该参数是对BswMGeneral容器中配置的BswMRbGenericReqUser之一的引用。

BswMRbModeRequestQueueSize

此元素指定模式通信是否排队。队列通信——当队列长度配置为非零值,并维护一个缓冲区来读取模式时。UnQueued沟通-当queuelength未配置或配置为0时,直接读取模式。

BswMRbModeRequestQueueEnabled

此元素指定发送方和接收方通信是否排队。

BswMRbRteModeRequestPortInterfaceRef

这是用于模式请求的变量数据原型的外部引用,例如:

/ TestCd_BswM_RteModeReq_SWC_SWCD / SRI_TestCd_BswM_RteModeReq_1 /Mode

BswMRbModeGroup

在这个参数中,提供对模式组的引用,例如:

/ TestCd_ComM_SWCD MSI_TestCd_ComM_SWCD / ModeDeclarationGroupPrototype。

BswMRbModeSwitchQueueLength

指定模式切换通信是否排队,提供程序端口上的模式切换队列的长度(由RTE生成)。无队列通信——当模式管理器启动模式开关时,RTE将开始处理请求。当模式实例的模式开关当前正在进行时,RTE将丢弃/覆盖任何后续的模式开关。队列通信——当模式管理器启动模式开关时,RTE将开始处理请求。当模式实例的模式切换当前正在进行时,任何后续的模式切换都将排队。模式切换队列的大小由BswMRbModeSwitchQueueLength决定。

BswMRbMaxNumOfRules

此参数指定可以为BswM模块中的每个变体配置的规则的最大数量。

BswMRbDebugEnable

启用:BswM记录进入NvM,如果任何模式请求中断;禁用:不记录任何信息。另外,RAM变量的第一个元素BswM_Rb_ctrInterrupt_au8将指示一个请求被中断的次数。

BswMRbIntrptQueueMaxSize

在一个对BswM的多个请求更频繁的系统中,BswM一次处理一个请求,并延迟队列中的任何其他请求。需要相应地配置参数BswMRbIntrptQueueMaxSize,该参数决定可以在队列中延迟的请求数量

自动配置生成

参考文档

[1] AUTOSAR_SWS_BswModeManager.pdf

[2] RTA-BSWReferenceGuide.pdf

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值