【Mode Management】BswM模块和其他模块的交互

目录

1.BSWM模块和COM模块

2.BSWM模块和ComM模块

3.BSWM模块和CanSM模块

4.BSWM模块和DCM模块

4.1 DCM通过BSWM控制通信

4.2 DCM通过BSWM控制ECU复位

5.BSWM模块和自定义SWC模块

6.BSWM模块和NVM模块

6.1 BswMNvMJobModeIndication

6.2 BswMNvMRequest

6.3 小结


1.BSWM模块和COM模块

I-PDU组的启动/停止状态处理不在AUTOSAR COM模块完成,一般在BSWM模块中处理。当I-PDU组状态发生变化时,管理I-PDU组状态的BSWM模块通过Com_IpduGroupControl将所有I-PDU组的一致状态传递给AUTOSAR COM模块,然后由AUTOSAR COM模块启动和停止单个I-PDU。

BswM是唯一一个控制I-PDU组的启动和停止,以及I-PDU组监视的启用/禁用的模块。一般在BswMActions配置容器下的BswMPduGroupSwtich子配置容器来配置BSW需要控制的IPDU Groups。也就是通过模式管理,当某个逻辑表达式满足后(例如:BswM Mode Start --> BswM Mode Run)调用控制IPUD Group开启的Action(BswM调用Com_IpduGroupControl引用BswMPduGroupSwtich配置容器里的IPDU Group参数来控制这一路CAN上的所有IPUD开启或关闭)。

2.BSWM模块和ComM模块

BSWM模块的BswMModeRequestPorts容器里面可以配置BswMComMIndication的MRP来获取ComM某个Channel的状态(ComM在通道发生切换的时候会调用BswM_ComM_CurrentMode)。

BSWM模块的BswMActions容器里面可以配置BswMComMAllowCom的Action来改变某个Channel的状态。

对于ComM的用户USER(SWC通过RTE)而言,ComM_RequestComMode是唯一影响ComM状态的接口。当ECU需要关闭(Shutdown)当前Channel的时候就需要调用ComM_RequestComMode。

问题1:ComM_RequestComMode(NO_COM)和Com_IpduGroupControl(Can_ChannelID, False)的区别?

1)ComM_RequestComMode(NO_COM)由SWC(USER)调用,SWC调用ComM_RequestComMode(NO_COM)后报文不一定停发,但是最后如果ComM控制的网络(如调用CanSM)关闭后,ECU对外的表现就是报文停发(关闭了收发器,报文发不出去了),但是Com可能还是在尝试往外发报文的。

2)Com_IpduGroupControl(Can_ChannelID, False)由BSWM模块的Action当中调用,也就是BWM仲裁到满足报文停发的条件后,调用Com_IpduGroupControl(Can_ChannelID, False)停发报文(Com_IpduGroupControl-->ComPrv_TxIPduStop),这种情况下ComM可能还是FULL_COMM的,只是Com不往外发报文了而已。

3)

如上图所示:

  1. 通道所在ComM的状态是FULL_COM是报文往外发的必要条件。
  2. 报文停止发送的充要条件中没有ComM的状态是NO_COM。

问题2:ComM其实也就是对CanSM,LinSM,EthSM的分装,为啥需要ComM模块了?

答:ComM分装了CAN,LIN,ETH等通信的物理特性,以一种统一的方式来管理所有的通信通道,对于用户(SWC)而言,只需要关注通道的状态而不需要考虑通道的物理硬件特性。

3.BSWM模块和CanSM模块

BSWM模块的BswMModeRequestPorts容器里面可以配置BswMCanSMIndication的MRP来获取CanSM某个Channel的状态(CanSM在通道发生切换的时候会调用BswM_CanSM_CurrentState)。

4.BSWM模块和DCM模块

4.1 DCM通过BSWM控制通信

BSWM模块的BswMModeRequestPorts容器里面可以配置BswMDcmComModeRequest的MRP来获取Dcm请求某个ComM通道的的通信状态(

DCM_ENABLE_RX_TX_NORM

DCM_ENABLE_RX_DISABLE_TX_NORM

DCM_DISABLE_RX_ENABLE_TX_NORM

DCM_DISABLE_RX_TX_NORMAL

DCM_ENABLE_RX_TX_NM

DCM_ENABLE_RX_DISABLE_TX_NM

DCM_DISABLE_RX_ENABLE_TX_NM

DCM_DISABLE_RX_TX_NM

DCM_ENABLE_RX_TX_NORM_NM

DCM_ENABLE_RX_DISABLE_TX_NORM_NM

DCM_DISABLE_RX_ENABLE_TX_NORM_NM

DCM_DISABLE_RX_TX_NORM_NM )。Dcm在发生通道状态切换的时候会调用BswM_Dcm_CommunicationMode_CurrentState()函数通知到BSWM。BswM获取到这个MRP的信息后回去停/发对应Channel的Ipdu_Group来实现通信的开关。

4.2 DCM通过BSWM控制ECU复位

BSWM中没有特别定义的BswMModeRequestPorts和DCM进行ECU复位(Reset)的交互,而是使用BswMSwcModeNotification的MRP来进行交互。

但是不像SWC中需要自己定义ModeDeclarationGroup及Mode Switch Interface,DCM模块中已经预定好ModeDeclarationGroup及Mode Switch Interface。

在Dcm_Cfg_SWC.arxml中就会有关于DcmEcuReset的Pport的定义描述,在BswM_Cfg_SWC.arxml中有关于DcmEcuReset的R-port的定义描述。

DCM和BswM通过DcmEcuReset这个Interface进行连接后,Dcm中关于ECU Reset复位的请求能过通过RTE传递到BswM模块的MRP作为模式仲裁的条件输入。

5.BSWM模块和自定义SWC模块

SWC模块和BSWM模块的可以通过BswMSwcModeRequest或者BswMSwcModeNotification配置进行交互。

至于二者的用法,在BswM模块详细介绍一文中有详细介绍,简单的概括就是:如果SWC是模式仲裁者和执行者,BSWM仅需要知道当前这个SWC的模式的状态,则使用 BswMSwcModeNotification将模式状态通知到BSWM模块;如果SWC仅仅是模式的请求者,BSWM获得模式请求后执行模式的仲裁和控制,则使用BswMSwcModeRequest。

当我们在BSWM模块配置了BswMSwcModeNotification后,在Components-->Services SW component-->BswM组件下就会生成对应的Mode Switch Port-R-port。

然后我们在SWC的配置当中需要配置对应的Mode Switch Port-P-port,同时在SWC中要定义ModeDeclarationGroup及Mode Switch Interface然后引用定义的ModeDeclarationGroup。

6.BSWM模块和NVM模块

6.1 BswMNvMJobModeIndication

BSWM模块的BswMModeRequestPorts容器里面可以配置BswMNvMJobModeIndication的MRP来获取NVM multiblock job的状态(NVM在multiblock job的状态发生变化得的时候会调用BswM_NvM_CurrentJobMode)。

NVM模块已经预定义了8种multiblock job的状态:

NVM_REQ_OK

NVM_REQ_NOT_OK

NVM_REQ_PENDING

NVM_REQ_INTEGRITY_FAILED

NVM_REQ_BLOCK_SKIPPED

NVM_REQ_NV_INVALIDATED

NVM_REQ_CANCELED

NVM_REQ_REDUNDANCY_FAILED

NVM_REQ_RESTORED_FROM_ROM

6.2 BswMNvMRequest

BSWM模块的BswMModeRequestPorts容器里面可以配置BswMNvMRequest的MRP来获取NVM special block(任意block)的状态(NVM在special block的状态发生变化得的时候会调用BswM_NvM_CurrentBlockMode,NVM的静态代码中没有这个实现,需要在集成Integration代码中实现)。

6.3 小结

BswM模块通过和NVM相关得MRP拿到NVM模块multi block或者special block的状态作为输入,通过模式状态判断及模式逻辑表达式进行仲裁后执行对应的模式Action。一般来讲,ECU下电Shutdown的时候NvMWriteAll完成是一个必要条件;ECU重启/上电的时候NvMReadAll完成是一个必要条件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/367907.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++初阶 内存管理和模板

目录 一、new 1.1什么是new? 1.2为什么要有new? 1.3使用new 1.4 new的超级好处 二、delete 2.1什么是delete? 2.2为什么要有delete? 2.3使用delete 三、 malloc / free和new / delete的共同点和区别 四、浅谈模板 4.1什…

可解释性AI(XAI):构建透明和值得信赖的决策过程

可解释性AI(XAI)旨在提高人工智能系统的透明度和可理解性,使人们更好地理解AI的决策过程和原理。随着AI技术的广泛应用,XAI成为了一个备受关注的重要领域。它不仅有助于建立人们对AI的信任,还可以帮助解决AI伦理和偏见…

系统添加多版本支持

记录一下最近做的一个需求: 前段时间做的【监狱点名系统】改成公司打卡考勤用的系统,里面的"服刑人员"、"监区"、"入监/出监"……等相关配置需要做改动,所以考虑加一个全局的标志,来区分一下版本。…

大数据本地环境搭建03-Spark搭建

需要提前部署好 Zookeeper/Hadoop/Hive 环境 1 Local模式 1.1 上传压缩包 下载链接 链接:https://pan.baidu.com/s/1rLq39ddxh7np7JKiuRAhDA?pwde20h 提取码:e20h 将spark-3.1.2-bin-hadoop3.2.tar.gz压缩包到node1下的/export/server目录 1.2 解压压…

EF Core入门例子(以SqLite为数据库)

测试环境: visual studio 2017 .net core 2.1 具体步骤如下: 1 新增名称为EFCoreDemo的.net core控制台程序,版本选择.net core 2.1,项目不能放到带中文的目录下,不然到后面执行Add-Migration命令时会报如下的错误…

关于ZYZ旋转和XYZ旋转

ZYZ旋转和XYZ旋转 概述1、XYZ旋转2、ZYZ旋转 概述 以下公式默认为右手坐标系;ZYZ通常可以避免死解情况,因此在六轴末端解算时常被用到;参考文章 1、XYZ旋转 XYZ旋转一般是绕固定轴旋转(外旋),旋转矩阵的构成为:RzRy…

供应链系统架构的设计与实践

供应链系统是现代企业管理中不可或缺的一部分,它涉及到从原材料采购到产品销售的整个生产流程。一个高效的供应链系统可以帮助企业实现成本控制、库存优化和客户满意度提升等目标。在本文中,我们将讨论供应链系统的设计与实践。 一、供应链系统设计 1.…

kerberos+kafka(2.13)认证(单节点ubuntu)

一:搭建kerberos。 1. 运行安装命令 apt-get install krb5-admin-server krb5-kdc krb5-user krb5-config2. 检查服务是否启动。 systemctl status krb5-admin-server systemctl status krb5-kdcsystemctl start krb5-admin-server systemctl startkrb5-kdc3. 修…

GrayLog踩坑历险记

背景 GrayLog作为ELK的替代产品,是新生代的日志采集框架。在一个采集节点日志的需求中,因为节点很多,产生的日志也很多,因此尝试了使用GrayLog进行日志的采集。下面记录一下使用GrayLog中遇到的坑和解决方案。 一、部署与启动 …

【开源】WordPress一键崩溃宕机插件(整活娱乐)

插件介绍 可一键实现Wordpress崩溃宕机的整活向插件(请勿用于非法途径,仅供整活娱乐)。鼓励关注网站性能的提升,以提供更好的用户体验,提倡为用户提供良好体验和高效速度的原则。 介绍 长期以来,人们都在…

iOS图像处理----OpenGL ES之大长腿特效

目录 一、代码部分概括 二、实现流程概括 1、第一次加载图片 ①、GLKView初始化数据 这部分内容主要是初始化顶点数组、上下文以及顶点数组缓存区,需要在加载图片之前做好准备​编辑 ②、加载图片 ③、绘制 2、拉伸图片 ①、滑块调整 ②、图片拉伸过程 3、…

【React】react组件传参

【React】react组件传参 一、props:父组件向子组件传参1、将普通的参数作为props传递2、将jsx作为props传递(组件插槽) 二、自定义事件:子父组件向父组件传参三、context进行多级组件传参四、redux全局状态管理 一、props&#xf…

Redis客户端有哪些:你了解吗?

一、分类 Redis客户端工具是用来连接和管理redis服务器的软件,它们可以有不同的类型,如桌面客户端、web客户端和IDE插件。不同的客户端工具有各自的优缺点和特色,你可以根据你的需求和喜好选择合适的工具。 1、Redis 命令行工具 redis-cli官…

智慧商城(continue)

文章目录 1.静态页面结构准备和动态渲染2.搜索 - 历史记录管理1. 写好基础静态页面,可以先往里面加一点假数据2. 上面基本的渲染直接利用history渲染就可以了3. 搜索历史基本渲染结束了,开始点击搜索添加历史4. vant内用v-model" ",可以快速拿到搜索框的值5. 往历史记…

【DevOps】产品需求文档(PRD)与常见原型软件

文章目录 1、PRD介绍1.1、概述1.2、前提条件1.3、主要目的1.4、关键内容1.5、表述方式1.6、需求评审人员1.7、一般内容结构 2、需求流程3、常见原型软件3.1、Word3.2、Axure3.2.1、详细介绍3.2.2、应用分类3.2.3、优缺点 3.3、摹客RP3.4、蓝湖3.5、GUI Design Studio 1、PRD介绍…

TQ15EG开发板教程:在VIVADO2023.1 以及VITIS环境下 检测DDR4

打开VIVADO2023.1 创建一个新的工程,设置工程名称和地址 选择RTL工程,勾选不添加文件 搜索15eg,选择xqzu15eg-ffrb1156-2-i 完成创建工程 添加设计模块 设置模块名称 在模块中添加mpsoc器件 双击器件进行配置 若有配置文件预设可以直接导入配…

分布式任务调度框架XXL-JOB详解

分布式任务调度 概述 场景: 如12306网站根据不同车次设置放票时间点,商品成功发货后向客户发送短信提醒等任务,某财务系统需要在每天上午10天前统计前一天的账单数据 任务的调度是指系统为了完成特定业务,基于给定的时间点,时间间隔&#…

C# SSH.NET 长命令及时返回

在SSH中执行长时间的命令,SSH.NET及时在文本框中返回连续显示结果。 c# - Execute long time command in SSH.NET and display the results continuously in TextBox - Stack Overflow 博主管理了一个服务器集群,准备上自动巡检工具,测试在…

计算机网络实验二

目录 实验二 交换机的基本配置 1、实验目的 2、实验设备 (1)实验内容: (2)练习: 1.实验内容一:(交换机的配置方式) 2.实验内容二:(交换机…

LabVIEW汽车自燃监测预警系统

LabVIEW汽车自燃监测预警系统 随着汽车行业的飞速发展,汽车安全问题日益受到公众的关注。其中,汽车自燃现象因其突发性和破坏性,成为一个不可忽视的安全隐患。为了有效预防和减少自燃事故的发生,提出了LabVIEW的汽车自燃监测预警…