当前位置: 首页 > news >正文

AUTOSAR_BSW_从入门到精通学习笔记系列_EcuM

好了,继续我们今天的学习分享,今天我们要学习的模块是EcuM,与BswM

模块一样都属于系统服务层级的模式管理,并且配置集成时都是同BswM一起的。

EcuM模块分为模块初始化和睡眠唤醒功能(很多汽车电子的国产项目中都用到了,当然用的标准部标准不知道,我们来看个标准的)

废话不多说,干货开始。

———————————————————————————————————————————

1. 模块初始化

1.1 模块初始化功能介绍:

上电时,EcuM模块负责基础软件模块的初始化(结合BswM),然后启动Os。

1.2 模块初始化功能实现:

针对模块初始化工作,需要配置EcuM实现,初始化列表中的项限定于Autosar中的模块注1 初始化列表分为EcuMDriverInitListZero、EcuMDriverInitListOne、EcuMDriverRestartList;其中EcuMDriverInitListZero与EcuMDriverInitListOne两者都在Os启动前进行初始化,意味这这些模块的初始化不能使用Os的任何接口,其中EcuMDriverInitListZero不能使用Post-build为配置参数的模块初始化;两者的初始化列表示例如下图

注1:若需要初始化其他模块,需要由修改发布配置工具

EcuMDriverRestartList则为唤醒后支持的初始化列表。

2. 睡眠唤醒功能

2.1 睡眠唤醒功能介绍:

睡眠唤醒是常用的Bsw功能之一,一般我们设计它用来达到产品低功耗的要求,各位还记得用万用表量休眠电流怎么接线不哈哈,将万用表档位切换至毫安挡,然后串入要测量的回路就可以了,应该有很多人一开始测的时候把万用表毫安挡的保险丝点爆了吧,

睡眠唤醒该部分功能的处理核心是在EcuM实现,对于睡眠唤醒的几种描述如下:

方式1.Mcu休眠,由中断唤醒(这种是最常用的,一般唤醒源是CAN/LIN通信,开关电平下降沿);

方式2:Mcu休眠,但周期唤醒(这种一般是根据项目需求,有些项目需要RTC定时唤醒);

方式3:Mcu掉电,由外部设备检测到唤醒事件直接给Mcu供电(这种一般配合板级的LDO电路使用,整个板子没有了供电,当然也就没有了功耗,然后唤醒源唤醒了LDO电路,也会直接唤醒板子的LDO功能使能);

睡眠:

睡眠可以降低Ecu的功耗,EcuM对于上述方式一,二都需要Mcu休眠,需要调用EcuM的Api:EcuM_GoDownHaltPoll,对应的处理流程如下图:

注:本节描述的时序图仅考虑单核情况,多核的睡眠时序需要参考EcuM的SWS文档。

其中GoSleep Sequence如下图:

对于方式三,睡眠的时候Mcu直接掉电,涉及到Shutdown状态的处理。

其中OffPreOS Sequence如下图:

OffPostOS Sequence如下图:

唤醒:

对于每个唤醒源Wakeup Source的状态与对应的描述如下所示:

状态描述
NONE唤醒事件未检测到,或者已被清除
PENDING唤醒事件检测到,但是未验证
VALIDATED唤醒事件检测到,并且验证通过
EXPIRED唤醒事件检测到,并且已经校验超时

对于状态的转换如下:

对于Wakeup Source的状态变化通过API: BswM_EcuM_CurrentWakeup
告知BswM。
Wakeup Source ID取值范围0~31,对应U32数据的每一个bit;其中EcuM默认支持的 Wakeup Source如下表:

默认唤醒源名称唤醒源ID
ECUM_WKSOURCE_POWER0
ECUM_WKSOURCE_RESET1
ECUM_WKSOURCE_INTERNAL_RESET2
ECUM_WKSOURCE_INTERNAL_WDG3
ECUM_WKSOURCE_EXTERNAL_WDG4

这些默认支持的Wakeup Source无需经过验证过程。

Wakeup Source处理过程的两个时间配置EcuMCheckWakeupTimeout、EcuMValidationTimeout。

EcuMCheckWakeupTimeout: 如果唤醒源的检查是异步完成的,则此参数是EcuM延迟ECU关闭的时间的初始值。计时的开始通过API:EcuM_StartCheckWakeup。

EcuMValidationTimeout:Wakeup Source从Pending检查是否Validate的持续时间。

2.2 睡眠唤醒功能实现:

针对唤醒主要涉及EcuM_CheckWakeup、EcuM_SetWakeupEvent以及EcuM_ValidateWakeupEvent等函数。

PB配置选择功能:

AUTOSAR支持PB配置数据刷写,有两种方式:

  1. Loadable。PB配置数据存放在固定某一个地址段,通过Bootload等方式在运行时去修改PB配置。

  2. Selectable。定义多套配置,在上电初始化的时候根据不同的条件选择不同的配置

ECUM中可实现Selectable方式的PB配置选择功能。

PB配置选择实现:

ECUM在EcuM_DeterminePbConfiguration函数中去确定使用那一套配置数据。实现选择多套PB配置的前提是,ECUM中事先存在多套配置。

温馨提示:以上为普华小满开源文档学习笔记

http://www.xdnf.cn/news/274627.html

相关文章:

  • 网络Tips20-003
  • 【学习笔记】深度学习:典型应用
  • ActiveMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 的选型参考(二)
  • LeetCode刷题链表
  • 自监督学习(Self-supervised Learning)李宏毅
  • FiLo++的框架图介绍
  • Oracle OCP认证考试考点详解083系列06
  • JavaWeb:SpringBootWeb增删改查案例
  • terraform resource创建了5台阿里云ecs,如要使用terraform删除其中一台主机,如何删除?
  • 【2025软考高级架构师】——2024年05月份真题与解析
  • 工程师 - 小米汽车尾部主动扩散器
  • 交互式智能体面临问题:回声陷阱,RL滚动塑造因素,感知推理的奖励信号
  • Docker 使用与部署(超详细)
  • 365打卡第R6周: LSTM实现糖尿病探索与预测
  • n8n 快速入门2:构建自动化工作流
  • LangChain4j +DeepSeek大模型应用开发——9 优化硅谷小鹿
  • FreeSwitch Windows安装
  • docker部署Open WebUI下载速度慢解决方法
  • Redis事务
  • Ubuntu 安装 Docker
  • 二叉搜索树的最近祖先(递归遍历)
  • 【神经网络与深度学习】生成模型-单位高斯分布 Generating Models-unit Gaussian distribution
  • Git 远程操作
  • SpringMVC详解
  • R绘图|3分钟复现瑞士“苏黎世大学”Nature全球地图——基于R包ggplot2+sf等
  • 集成算法学习
  • Ubuntu22.04及以上版本buildroot SIGSTKSZ 报错问题
  • Rockermq的部署与使用(0-1)
  • 理解计算机系统_并发编程(1)_并发基础和基于进程的并发
  • 【leetcode100】最长递增子序列