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