[AutoSar]状态管理(三)单核BswM(一)
目录
??
关键词
嵌入式、C语言、autosar、BswM
平台说明
项目 | Value |
---|---|
OS | autosar OS |
autosar厂商 | vector |
芯片厂商 | TI |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
一、BswM在架构中的位置
二、 BswM的主要功能
??1.对来自SWC或者其他BSW模块的模式请求进行仲裁并根据仲裁结果执行相应动作。
??2.BswM主要分为模式仲裁(Mode Arbitration)和模式控制(Mode Control)两部分,前者用来判断处于哪种模式,后者则用来执行相应的动作。
三、关联的模块
3.1 3.1EcuM
??EcuM Flex可以向BswM通知唤醒源的状态,BswM可以发送休眠到EcuM。
3.2 ComM
??BswM请求ComM切换通信模式。
3.3Rte
??SWC之间的模式传递。
3.4 Com
??控制Com中的 I-PDU group的使能。
3.5 PduR
??禁止和使能I-PUD router group 功能。
3.6 CanSM
??来自CanSM的模式切换指示可以通过BswM进一步传播到SW-C
3.7LinSM
??LinSM中LIN调度表(LIN Schedule Tables)的切换,和来自LinSM的模式切换指示可以通过BswM进一步传播到SWC。
3.8 FrSM
??通过BswM将来自FrSm的模式转换传递到SWC。
3.9 ETHSM
??通过BswM将来自ETHSM的模式转换传递到SWC。
3.10 DCM
??DCM模块会根据所接收到的诊断请求,向BswM执行相应地模式请求。
3.11 NM
??BswM调用Nm_EnableCommunication和Nm_DisableCommunication来控制基于当前模式的NM通信。
Nm模块可以使用BswM_Nm_CarWakeUpIndication来指示整车被唤醒。
3.12 NVM
??向BswM报告NvM数据状态,被BswM调用write和read。
3.13 OS
四、Init
??1.在EcuM初始化后再初始化BswM。
??2.如果再多核系统中对应多核Partition,应注意对每个Partition都 初始化,但是BswM_PreInit只能初始化一次。
五、状态机
5.1 BSWM_INIT
??BswM已初始化,并为立即模式仲裁请求做好准备。延迟模式仲裁在循环调用的函数BswM_MainFunction MainFunction中完成。
5.2 BSWM_WAIT_IMMEDIATE_REQUEST
??在该状态中等待仲裁请求,如果请求了立即模式仲裁或者BswM_MainFunction 函数被调用完成的时候会保持在该状态。
5.3 BSWM_MAIN_FUNCTION
??这个状态在BswM MainFunction被调用时进入。在BswM MainFunction中完成延迟模式仲裁。在执行BswM MainFunction期间发生的立即模式仲裁请求将排队,并将在BswM MainFunction结束时执行,此时所有延迟模??式仲裁和控制都已完成。“强制立即”类型的模式仲裁请求不排队,并中断延迟模式仲裁。延迟模式和立即模式下文中会有详细介绍。
5.4 BSWM_MODE_ARBITRATION_AND_CONTROL
??在此状态下,完成配置模式规则仲裁,并执行true- action /false-action列表。“立即”类型的新模式仲裁请求排队,“强制立即”类型的仲裁请求立即仲裁。
5.5 BSWM_EMPTY_QUEUE
??在此状态下,执行排队模式仲裁请求。
5.6 BSWM_DEINIT
??这个状态在函数BswM_Deinit被调用时进入。不接受任何模式仲裁请求,也不进行任何模式处理。这个状态只能在调用BswM_Init函数时保留。
六、配置名称和内容定义
6.1 Mode Source
??用于触发模式仲裁,触发源可以是SWC或BSW 或者BswM_MainFunction()请求。
6.2 Mode Rule
??如图所示,Mode Rule主要由LogicalExpressions、TrueActionList、FalseActionList和RuleInitState 组成。其中LogicalExpressions 为用户自定义,根据判定结果决定最终执行TrueActionList还是FalseActionList。RuleInitState用来定义规则的初始状态。 逻辑表达式由参数(ArgumentRef)和运算符(LogicalOperator)构成,参数一般为ModeCondition,也可以是LogicalExpression,运算符包括AND(与)、OR(或)、XOR(异或)、NOT(非)及NAND(与非)。
6.3 Mode Arbitration
  当模式源触发器发生时,BswM将在BswM_MainFunction() MainFunction()中立即或延迟仲裁特定于模式的规则。
6.4 Mode Actions
  根据仲裁结果执行的操作。
6.5 ModeRequestPorts
??模式请求端口中定义了请求的源头,例如CanSM、ComM、Dcm等。
七、Immediate、Forced、Deferred Mode Handling
7.1 Immediate Mode Handling
  在模式请求的上下文中立即执行。如果在此期间有新的模式请求,BswM会将新的请求放入队列,当该模式仲裁完成后请求队列会被清空。
7.2 Forced Immediate Mode Handling
??在模式请求的上下文中打断其他的Immediate Mode或者 deferred Mode请求并立即执行。
注意,在使用 Immediate Mode Handling 或者Forced Immediate Mode Handling的时候应避免危及系统性能(performance)或一致性(consistency)。
7.2 Deferred Mode Handling
??延迟模式仲裁在BswM_MainFunction() MainFunction()的执行中循环完成。在执行MainFunction期间如果收到模式请求,BswM会推迟处理,直到MainFunction执行结束,如果推迟的是IMMEDIATE请求,当MainFunction执行结束时会立刻处理,如果推迟的是DEFERRED请求,那么要等到下一次执行MainFunction时再处理。
八、ActionList
??ActionLists可以由Action、ActionList以及Rule组成,通常都使用Action来构建ActionLists。
??ActionList有两种执行方式:TRIGGER和CONDITION,TRIGGER是在规则(Rule)评估结果发生变化时执行,CONDITION则是在每次规则(Rule)评估时执行。例如:如果把TrueActionList(FalseActionList),设为TRIGGER方式,当规则评估结果从FALSE(TRUE)变为TRUE(FALSE)时才会执行,如果设为CONDITION方式,那么每次规则评估结果为TRUE(FALSE)时均会执行。
?? Action可以设置AbortOnFail,如果action在执行过程中返回E_NOT_OK的话可以终止ActionList的执行。
九、 配置和BswM 处理流程
??后续更新
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!