【小猫爪】AUTOSAR学习笔记15-BswM模块
【小猫爪】AUTOSAR学习笔记15-BswM模块
- 前言
- 1 BswM模块简介
- 2 BswM功能简介
- 2.1 模式仲裁
- 2.2 模式控制
- END
前言
上一节介绍了一个非常夸张的EcuM模块,其中多次提到了BswM模块,这两个模块通常狼狈为奸,共同策划且并操作了整个ECU的状态切换。细细研究EcuM模块后就会发现它是比较别动的,都是当一些条件满足或者事件发生时,EcuM才会控制系统进行状态切换,它更像是一个大兵,只会吭哧吭哧干活,而这一节的BswM模块则是真正的指挥。
1 BswM模块简介
BswM 模块位于 AUTOSAR 基础软件架构中的服务层,实现对 BSW层和 SW-C的模式管理。BswM的处理流程如下图所示:
Module
BswM 模块主要提供两项功能:模式仲裁与模式控制。模式仲裁是把各个 BSW 模块和 SW-C 模块的模式请求和模式指示收集起来,按一定的模式规则进行计算,得到仲裁结果。模式控制是指根据仲裁结果,调用不同的动作列表,在动作列表中调用各个模块的函数或接口。模式仲裁的规则和模式控制的动作列表都是用户可配置的,因此 BswM 的功能极大程度上依赖用户配置。
2 BswM功能简介
在上面提到BswM主要就是干两个事情,一个是模式仲裁,一个则是模式控制。
2.1 模式仲裁
ModeRequestPort
每个 BSW 模块或 SW-C 都可以通过 API 或服务向 BswM 报告或者申请状态,这里提到的接口或服务称为端口(Port),而状态则被称为模式(Mode)。申请状态则被称为模式请求(Mode Request),报告状态则被称为模式指示(Mode Indication)。模式请求通常来源于SW-C,也有可能来源于BSW模块,比如Dcm模块;模式指示则总是由BSW模块发出,比如<bus>Sm模块,EcuM模块等。每个端口需要配置一个默认模式,如果未配置则视为未定义。端口和模式两者拼合起来那就是ModeRequestPort。ModeCondition
模式条件(ModeCondition)是模式仲裁时候的最小判断单元,如果模式条件关联了一个ModeRequestPort,则该条件会验证请求的模式或者指示的模式是否EQUAL或者NOT_EQUAL于某个模式,然后每一个ModeCondition判断完成后会返回TRUE或者FALSE。Logical Expressions
使用AND、OR、XOR、NOT和NAND这些逻辑符将ModeCondition组合起来就是一则逻辑表达式,即Logical Expressions。Rules
Rules就是当一则Logical Expressions计算结果为真后,BswM模块应该要采取什么样的措施,将措施和Logical Expressions对应起来,这就叫一条Rule。当模式发生变化时(这种叫做BSWM_IMMEDIATE)或者在BswM主函数运行时(这种叫做BSWM_DEFERRED)就会对Rules进行评估,评估Rules的这个过程即叫做模式仲裁,模式仲裁满足条件之后,则开始进行模式控制。下图就是一条简单Rule的的仲裁:
2.2 模式控制
Action和Action List
在前面模式仲裁的Rules中,提到了当一条Rule评估满足条件后BswM模块会执行相应的措施,这里的措施在模式控制中称为Action List。Action List是一组有序的Action,BswM 按顺序依次执行动作列表中的每个元素。元素有三种类型:1. 一个特定的动作(函数),BswM 会简单地执行该动作;2. 指向其他Action List的链接,BswM 将从被指向的Action List起始处依次执行到最后一条元素,这意味着Action List可以级联;3. 指向一条Rule的链接,BswM 对该Rule进行运算,根据结果执行其对应的Action List。
如果Action List的某一条Action执行失败,则根据其属性 BswMAbortOnFail 决定是否继续执行。若配置为真,则中止整个Action List的执行;若配置为假,则继续依次执行后续的Action项。如果Action List配置了 BswMReportFailToDem,则 BswM 会在动作执行失败时向 Dem 模块报告事件,该事件需要在 BswM 模块中预先配置。
基于Rule评估,动作列表有两种方式被执行:1. BSWM_CONDITION:条件执行,即每次评估规则时被执行。2. BSWM_TRIGGER:触发执行,即每次评估结果发生变化时才执行。
如果为触发执行配置了一个True的动作列表,则BswM仅在相应规则的评估从False变为True时才会执行此动作列表。如果为触发执行配置了一个False的动作列表,则BswM仅在相应规则的评估从True变为False时才会执行此动作列表。如果为条件执行配置了一个True的动作列表,则BswM应在每次将相应规则评估为True时执行此动作列表。如果为条件执行配置了False的动作列表,则BswM应在每次将相应规则评估为False时执行此动作列表。SwitchPort和RteModeRequestPort
RteModeRequestPort请求端口是请求更改应用程序模式,而SwitchPort是在BswM执行模式更改时用来接收通知。
END
【小猫爪】AUTOSAR学习笔记15-BswM模块相关推荐
- 【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块
[小猫爪]AUTOSAR学习笔记06-Communication Stack之ComM模块 前言 1 ComM简介 2 ComM功能介绍 2.1 PNC 状态管理 2.2 Channel状态管理 2. ...
- 【小猫爪】AUTOSAR学习笔记14-EcuM模块
[小猫爪]AUTOSAR学习笔记14-EcuM模块 前言 1 EcuM模块简介 2 EcuM功能简介 2.1 EcuM的状态机 2.2 RUN和POST_RUN 2.3 Startup阶段 1. St ...
- 【小猫爪】AUTOSAR学习笔记16-Memory Stack之Nvm模块
[小猫爪]AUTOSAR学习笔记16-Memory Stack之Nvm模块 前言 1 Memory Stack结构 2 NvM模块 2.1 Block 2.2 数据结构 2.3 Redundant B ...
- 【小猫爪】AUTOSAR学习笔记03-Communication Stack之CanIf模块
[小猫爪]AUTOSAR学习笔记03-Communication Stack之CanIf模块 前言 1 CanIf简介 2 功能介绍 2.1 发送缓冲区 2.2 CAN Controller 模式控制 ...
- 【小猫爪】AUTOSAR学习笔记12-功能安全之E2E模块
[小猫爪]AUTOSAR学习笔记12-功能安全之E2E模块 前言 1 E2E模块简介 2 E2E功能简介 2.1 五种保护机制 2.2 E2E的状态机 2.3 E2E Protection Wrapp ...
- 【小猫爪】AUTOSAR学习笔记10-Communication Stack之CanTsyn模块
[小猫爪]AUTOSAR学习笔记10-Communication Stack之CanTsyn模块 前言 1 时间同步的引入 2 时间同步的角色 3 时间同步过程 3.1 四种报文 3.2 时间同步过程 ...
- 【小猫爪】AUTOSAR学习笔记00-目录
[小猫爪]AUTOSAR学习笔记00-目录 因为一个偶然的机会让我接触到了AUTOSAR,所以就花一点小小的时间来记录一下学习它的坎坷大道.这其中复制粘贴了很多,也包括了我的一些个人的小小见解和废 ...
- 【小猫爪】AUTOSAR学习笔记02-Communication Stack简介
[小猫爪]AUTOSAR学习笔记02-Communication Stack简介 前言 1 简介 2 CAN消息的传播路径 2.1 Com服务 2.2 Dcm服务 2.3 SM服务和NM服务 3 补充 ...
- 【小猫爪】AUTOSAR学习笔记01-AUTOSAR架构简介
[小猫爪]AUTOSAR学习笔记01-AUTOSAR架构简介 前言 1 背景介绍 2 基本概念 3 方法论 4 分层软件架构 4.1 Application Layer(APP) 4.2 Basic ...
最新文章
- jsp页面怎么调用的servlet
- android 等待圈_Android ProgressDialog 转圈圈-阿里云开发者社区
- 剑指offer 求1+2+3+...+n
- java多线程 -- 同步鎖
- 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复
- 【Codeforces - 977D】Divide by three, multiply by two(思维构造)
- Django路由(url)
- 非法操作 login.php,阅文游戏中心 h5游戏接入wiki
- Express 结合 multer 上传图片
- 6月14日Linux设备驱动开发免费讲座PPT
- linux下安装vmware tools的方法
- 0028-如何在CDH未启用认证的情况下安装及使用Sentry
- C++ 多线程系统编程精要
- 【IT职业】IT人的职业规划
- 阿里云cdn设置不缓存
- brconfig bridge0 add emac0 add vp0 up
- 帝国塔防2 empire defence 2的攻略
- SATA硬盘性能测试软件,趣味测试:实测SATA线对硬盘性能的影响
- 如何防止恶意扫码点餐
- IDEA使用教程一:下载安装IDEA以及idea的常用设置
热门文章
- 用C语言实现整形数据的数位分离和逆序输出
- 梦幻西游手游服务器维护公告,《梦幻西游》手游2019年2月27日维护公告:梦幻狂欢月来临_
《梦幻西游》手游官网-人人都玩,无处不在...
- macbook pyenv 安装 python3.6.8 报错
- 说说中科院研究生的毕业出路问题
- 那通过什么方式可以锻炼右脑?
- MySQL库迁移到达梦的过程中,出现列长度超出定义的问题导致中断
- phpbb风格模板_phpBB3风格(Style)定制
- vtiger 5.1 中SO中 issue date数据源
- 干货,5种跨境平台卖家站外引流方式
- 视频教程-自然语言处理实战——情感分析-NLP