[AutoSar]状态管理(三)单核BswM(一) 目录关键词平台说明一、BswM在架构中的位置二、 BswM的主要功能三、关联的模块3.1 3.1EcuM3.2 ComM3.3Rte3.4 Com3.5 PduR3.6 CanSM3.7LinSM3.8 FrSM3.9 ETHSM3.10 DCM3.11 NM3.12 NVM3.13 OS四、Init五、状态机5.1 BSWM_INIT5.2 BSWM_WAIT_IMMEDIATE_REQUEST5.3 BSWM_MAIN_FUNCTION5.4 BSWM_MODE_ARBITRATION_AND_CONTROL5.5 BSWM_EMPTY_QUEUE5.6 BSWM_DEINIT六、配置名称和内容定义6.1 Mode Source6.2 Mode Rule6.3 Mode Arbitration6.4 Mode Actions6.5 ModeRequestPorts七、Immediate、Forced、Deferred Mode Handling7.1 Immediate Mode Handling7.2 Forced Immediate Mode Handling7.2 Deferred Mode Handling八、ActionList九、 配置和BswM 处理流程关键词嵌入式、C语言、autosar、BswM平台说明项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言CC编译器HighTec (GCC)回到总目录一、BswM在架构中的位置二、 BswM的主要功能1.对来自SWC或者其他BSW模块的模式请求进行仲裁并根据仲裁结果执行相应动作。2.BswM主要分为模式仲裁Mode Arbitration和模式控制Mode Control两部分前者用来判断处于哪种模式后者则用来执行相应的动作。三、关联的模块3.1 3.1EcuMEcuM Flex可以向BswM通知唤醒源的状态BswM可以发送休眠到EcuM。3.2 ComMBswM请求ComM切换通信模式。3.3RteSWC之间的模式传递。3.4 Com控制Com中的 I-PDU group的使能。3.5 PduR禁止和使能I-PUD router group 功能。3.6 CanSM来自CanSM的模式切换指示可以通过BswM进一步传播到SW-C3.7LinSMLinSM中LIN调度表LIN Schedule Tables的切换和来自LinSM的模式切换指示可以通过BswM进一步传播到SWC。3.8 FrSM通过BswM将来自FrSm的模式转换传递到SWC。3.9 ETHSM通过BswM将来自ETHSM的模式转换传递到SWC。3.10 DCMDCM模块会根据所接收到的诊断请求向BswM执行相应地模式请求。3.11 NMBswM调用Nm_EnableCommunication和Nm_DisableCommunication来控制基于当前模式的NM通信。Nm模块可以使用BswM_Nm_CarWakeUpIndication来指示整车被唤醒。3.12 NVM向BswM报告NvM数据状态被BswM调用write和read。3.13 OS四、Init1.在EcuM初始化后再初始化BswM。2.如果再多核系统中对应多核Partition应注意对每个Partition都 初始化但是BswM_PreInit只能初始化一次。五、状态机5.1 BSWM_INITBswM已初始化并为立即模式仲裁请求做好准备。延迟模式仲裁在循环调用的函数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 Arbitrationemsp;emsp;当模式源触发器发生时BswM将在BswM_MainFunction() MainFunction()中立即或延迟仲裁特定于模式的规则。6.4 Mode Actionsemsp;emsp;根据仲裁结果执行的操作。6.5 ModeRequestPorts模式请求端口中定义了请求的源头例如CanSM、ComM、Dcm等。七、Immediate、Forced、Deferred Mode Handling7.1 Immediate Mode Handlingemsp;emsp;在模式请求的上下文中立即执行。如果在此期间有新的模式请求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时再处理。八、ActionListActionLists可以由Action、ActionList以及Rule组成通常都使用Action来构建ActionLists。ActionList有两种执行方式TRIGGER和CONDITIONTRIGGER是在规则Rule评估结果发生变化时执行CONDITION则是在每次规则Rule评估时执行。例如如果把TrueActionList(FalseActionList)设为TRIGGER方式当规则评估结果从FALSE(TRUE)变为TRUE(FALSE)时才会执行如果设为CONDITION方式那么每次规则评估结果为TRUE(FALSE)时均会执行。Action可以设置AbortOnFail如果action在执行过程中返回E_NOT_OK的话可以终止ActionList的执行。九、 配置和BswM 处理流程后续更新回到总目录

相关新闻

最新新闻

免费ai降重靠谱吗?免费额度的正确用法,降aigc检测双复核

免费ai降重靠谱吗?免费额度的正确用法,降aigc检测双复核

免费ai降重靠谱吗?免费额度的正确用法,降aigc检测双复核 先交代下背景。我表弟今年毕业,五月初把论文初稿发我,说学校知网检测出来AI率58.9%,学院红线30%,问我网上那些免费ai降重的方法靠不靠谱&#xff0…

2026/9/8 15:10:14
Ollama本地大模型部署全攻略:从下载到IDE与Web接入

Ollama本地大模型部署全攻略:从下载到IDE与Web接入

最近在本地折腾大模型部署,把 Ollama 从安装到对接 IDE、Web 和 API 完整跑了一遍,前前后后踩了不少坑。网上相关教程虽然多,但大部分要么只写安装,要么只讲某一个环节,真正把“下载模型 → 接入工具 → 开放接口”这条…

2026/9/8 15:10:14
小白无痛入门Docker!核心概念+手动配置+AI模型部署(全可复制指令)

小白无痛入门Docker!核心概念+手动配置+AI模型部署(全可复制指令)

一、Docker是个啥?(通俗人话版)1. 核心比喻以前开发项目:本地能跑、服务器炸、环境报错、依赖冲突,堪称玄学部署。Docker 项目专属打包盒你把代码、依赖、环境、配置全部打包进盒子,在哪打开都能完美运行&…

2026/9/8 15:10:14
AI全栈开发实战:从RAG到Agent的生产级落地路径与踩坑指南

AI全栈开发实战:从RAG到Agent的生产级落地路径与踩坑指南

最近帮几个团队评审AI应用架构,发现一个特别普遍的问题:大家把AI全栈开发当成普通全栈开发来做,设计接口、写CRUD、接个大模型API、页面套壳,Demo一跑通就以为完事了,结果一上生产就崩。崩的地方不是并发,不…

2026/9/8 15:10:14
阿里云PolarDB云数据库收费价格:MySQL、Postgre和PostgreSQL费用清单

阿里云PolarDB云数据库收费价格:MySQL、Postgre和PostgreSQL费用清单

阿里云提供云数据库收费价格, 其中涵盖 MySQL, 还有费用清单, 包含 Super MySQL、MySQL 标准版 2 核 4G 配置优惠价为每年 1116 元、分布式标准版收取每年 1243 元、标准版价格是每年 1116 元、MySQL 企业版价格为每年 3360 元, 阿里云数据库与 MySQL 完全兼容, 语法高度兼容, …

2026/9/8 15:10:14
STM32智能医疗输液点滴系统:嵌入式硬件与PID控制实践

STM32智能医疗输液点滴系统:嵌入式硬件与PID控制实践

我手里的这套STM32智能医疗输液点滴系统,算是我折腾过的嵌入式项目里比较有代表性的一个。它不光是单片机外设的堆砌,而是把传感器采集、电机控制、人机交互、通信协议这些嵌入式基本功串在了一起,正好能覆盖一个完整产品的核心链路。整个项目…

2026/9/8 15:05:14