搞一下CP AUTOSAR 入门 | 05 CP AUTOSAR BswM 详解

编程知识 更新时间:2023-05-02 19:12:39

前言

本系列请点击:《搞一下CP AUTOSAR入门》


所有系列请点击:《汽车电子系列分享》


在上一篇中已经对AUTOSAR中模式管理相关的两个模块中的EcuM模块做了详细的介绍,这篇主要介绍的是AUTOSAR模式管理的另一个重要的模块BswM。顾名思义,BswM是Bsw Mode Manager的简称,是主要负责整个Bsw层的模式管理。


全系内容可在《搞一下汽车电子》后台回复 “系列”,或进入菜单栏 “分享平台” --> “系列分享”


一、BswM的模式管理和仲裁


BswM作为整个Bsw模式管理的控制模块,主要对整个ECU使用的软件模块进行状态管理和模式切换,在整个AUTOSAR架构下的BswM的模式转换和控制主要包括四个方面的内容:


Mode Source:
主要用于触发模式仲裁,Mode Source可以是APP层的 Indication/Request,也可以是BSW层其它模块的 Indication 和 Request 。Source主要源于Bsw层和App层定义的接口,这些接口可以是Bsw模块的回调函数,可以是Bsw模块与BswM之间的API,同时APP也会提供相应的接口或者函数作为Mode Source 使用。


Mode Arbitration:
根据 Mode Source 请求对模式进行特定规则的Rule仲裁,仲裁的机制主要是定义的一些状态判断条件,基于User设计的Rule进行判断。


Mode Rule:
包含了特定条件的逻辑表达,根据逻辑表达判断,确定True or false,并执行相应的Action。在使用的时候一般要自己建立相应的Rule,其中Mode Conditions and Logical Expressions主要定义Rule的仲裁表达式, 包含了模式仲裁的表达,通常使用AND、OR、XOR、NOT、NAND 等。


下图就是定义了一个Rule,在该Rule中根据MyModeRequestPort(Mode Source)以及ComMInitiateReset(Mode Source)的状态决定触发不同的操作。





Mode Action:
根据Mode Rule的True or False执行对应的函数操作,完成特定的Action,这些Action一般成组作为一个Action List操作,也可以单独操作。


下图展示了Mode Action对各个不同功能模块的引用和调用关系,最终通过调用不同的函数和接口实现相关的功能。根据Mode Rule的True or False执行对应的函数操作,完成特定的Action,这些Action一般成组作为一个Action List操作,也可以单独操作。下图展示了Mode Action对各个不同功能模块的引用和调用关系,最终通过调用不同的函数和接口实现相关的功能。





同时在BswM的模式管理和仲裁中提供了两种处理方式,用来对模式请求进行处理,分别是Deferred和Immediately。其中Deferred处理方式根据Mode Source的请求在BswM的MainFunction中进行模式仲裁和以及仲裁后的Action处理。


下图展示了Deferred下SWC接口进行模式请求和转换的状态切换。SWC通过RTE接口请求,由于选择的是Deferred模式,因此在BswM的MainFunction执行的时候对SWC的数据读取,然后根据设计的Rule进行仲裁处理,最终执行相应的Action。





而对于Immediately类型的处理,主要是接收到RTE的请求后直接执行仲裁函数,然后执行相应的Action,如下所示:





二、BswM的状态切换


BswM作为模式状态的管理模块,除了控制其他模块的模式和状态切换之外,它还有自己的状态机。BswM的主要状态切换如下:





BSWM_INIT
BswM被初始化,对于Immediately类型的仲裁方式进入到准备仲裁模式请求,Deferred类型的模式仲裁将在MainFunction中完成


BSWM_WAIT_IMMEDIATE_REQUEST
在该模式下BswM等待模式仲裁的请求,如果模式请求是Immediately模式,则立刻跳出该模式;在Deferred模式下,MainFunction被调用后离开该状态。


BSWM_MAIN_FUNCTION
一旦调用MainFunction,便会进入到该模式,执行Deferred模式下的模式仲裁,基于Queue的Immediately的模式仲裁也会在执行MainFunction的结束阶段完成。


BSWM_MODE_ARBITRATION_AND_CONTROL
在该模式下配置的Rule仲裁规则执行,同时根据仲裁的结果TRUE/FALSE切换配置的True Action List和False Action List,Immediately下基于Queue进行仲裁请求。


BSWM_EMPTY_QUEUE
在该模式下Queue模式仲裁请求执行


BSWM_DEINIT
BswM功能禁用,不能进行模式仲裁请求


三、BswM与其它模块的交互


BswM由于是对整个AutoSAR架构下软件模式管理的协调器,因此与各个模块之间有很强的关联性。下面主要从四个方面介绍下BswM与其它模块之间的关联和交互。


01 BswM与APP


BswM与APP的交互,主要是通过RTE将相应的模式转换的接口或者回调函数与APP建立模式请求和Action处理,其中用到的主要接口包括Mode Request Interface、Mode Switch Port以及Mode Notification。


同时在EcuM为Flex模式下,BswM中可以定义Rte的Start和Stop相关的功能。用户可以根据需要在BswM中定义User Callout函数,在使用的时候定义特定的 *.h 文件作为BswM与User APP的接口,在BswM生成代码的时候便会引用这些 *.h 定义的函数或者接口,然后User APP定义 *.h 中函数或者接口的实体即可。同样也可以在BswM生成的Callout文件中根据需要自己添加User Code。


下图展示了BswM与APP的一个交互实例:SWC通过Sender Port请求模式,Rte通过Receiver Port将模式请求传递给BswM;BswM基于Rule仲裁请求;
BswM定义的Rule根据仲裁结果执行Action List;对Action List的函数调用不同的APP或者BSW模块或者User Callout执行。





02 BswM与EcuM


EcuM在与BswM使用的交互主要体现在EcuM_Flex模式,EcuM下Flex模式下如果使能了Mode Handling,那么BswM自动会生成EcuM相关的状态控制和转换条件。BswM会设置Ecu的状态,同时会接受EcuM的请求模式。


BswM与EcuM之间的交互控制主要包括:
BswM中初始化Bsw相关的模块,直接调用EcuM相关初始化阶段的List
控制EcuM的Sleep模式下Halt和Poll的转换
关联EcuM Shutdown的Target
控制EcuM的状态切换
得到EcuM当前的状态
得到EcuM Run请求相关的模式
通知当前EcuM的唤醒源


如果在使用CP AUTOSAR 的工具链进行BswM开发的时候,可以采用CP AUTOSAR 配置工具,对BswM与EcuM之间的交互进行自动生成EcuM的各个状态以及状态之间的Rules,在使用的时候注意根据实际需要选择RUN和POST的Request和Release的接口数目,该接口一般会在APP的模式管理使用,用来控制APP模式管理与BswM模式管理的状态切换。


03 BswM与Communication


BswM能够创建Rule和Action控制ECU通信的开启和关闭,主要包括:


控制Com协议栈的模块的初始化,控制通信模式的转换,获得BusSM通信状态,对通信通道的Allow控制。


配置PDU Group来控制CAN、LIN、ETH、FR等通信PDU的打开和关闭,


重新初始化通信的接收和发送


对NM功能的使能和禁用控制,配置PNC相关的I-PDU,根据PNC的状态控制I-PDU Group的开启和关闭


在Eth的SomeIP协议中控制SD相关的服务,控制SD中服务端或者客户端的Request或者Release,控制相关的Event Group的Request或者Release


控制PduR中Table的使用


控制LIN的调度表


04 BswM与其它Bsw模块


除了以上主要模块外,BswM与DCM、NVM、WdgM等模块也有密切的关系。其中BswM会接收来自DCM的请求控制和DCM相关的通信诊断;


在下上电阶段通过NvM WriteAll以及NvM ReadAll调用实现对NvM中数据的读写操作,同时BswM可以对NvM的超时功能监控,避免读写NvM数据的时候超时;


BswM与WdgM之间通过相应的接口获得WdgM程序监控的结果,根据结果对相关的Partition执行复位操作。


四、Multi Partition下的BswM


考虑到功能安全使用的过程中,需要对Application进行多Partition的分区操作,同时多数的Bsw模块也支持Partition的选择,因此在定义好多个Partition后,BswM根据Partition的分配,建立多个Instance,每个Instance会产生自己的BswM配置实体,用于可以根据需要将BswM产生的模式控制功能分配到不同的Partition中。

本期分享就到这里,欢迎大家一起交流学习,如果有不合理的地方也请大家指正,愿和大家一起学习进步,一步步做好汽车电子软件开发。

如果大家有想分享的内容,欢迎大家一起来分享! 更多内容请关注微信公众号《搞一下汽车电子》


更多 CP&AP AUTOSAR的其他内容,也可以随时与我们联系。


联系我们

微信:shactiontech
邮箱:support@shactiontech

更多推荐

搞一下CP AUTOSAR 入门 | 05 CP AUTOSAR BswM 详解

本文发布于:2023-04-28 05:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/eed6fbb617564076829e15ae743c033a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:详解   入门   AUTOSAR   CP   BswM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 107797文章数
  • 27247阅读数
  • 0评论数