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

Autosar EcuM学习笔记-上电初始化执行函数及下电前执行函数

文章目录

    • 前言
    • Autosar标准
      • EcuM启动时的初始化
      • EcuM下电执行过程
    • 总结

前言

Autosar启动和下电过程由EcuM控制,本文介绍EcuM中的初始化和下电前的执行函数

Autosar标准

EcuM启动时的初始化

在标准中,主核启动流程如下:
在这里插入图片描述
从核启动流程如下:
在这里插入图片描述

EcuM_AL_DriverInitZeroEcuM_AL_DriverInitOne函数是在EcuM_Init中调用的,对应规范中的需求:
在这里插入图片描述
但目前ETAS的代码,InirtZero只在主核中调用。
在这里插入图片描述
EcuM_AL_DriverInitZero主要是初始化跟硬件相关的模块,是在校验EcuM的配置之前进行初始化的(通过调用EcuM_Prv_PBPointerConsistencyCheck函数)。目前项目中没有配置。
在这里插入图片描述
在这里插入图片描述

EcuM_AL_DriverInitOne也是初始化跟硬件相关的模块,只是在校验完EcuM的配置之后。

EcuM下电执行过程

在标准中,主核的下电流程如下:

OS关闭前:在这里插入图片描述
OS关闭后:
在这里插入图片描述
从核的下电流程如下:


OS关闭前:
在这里插入图片描述
OS关闭后:
在这里插入图片描述
由上图可知,EcuM_OnGoOffOne和EcuM_OnGoOffTwo的主要区别在于OffOne在OS关闭前而OffTwo在OS关闭后

EcuM_OnGoOffOne函数由EcuM_Prv_ProceedShutdown函数调用,而EcuM_Prv_ProceedShutdown函数运行需要GoDown Flag置true,这个置位是在BswM中完成的(实际调用EcuM_GoDown函数),标准中描述如下:在这里插入图片描述
EcuM_OnGoOffOne的函数原型如下:
在这里插入图片描述

EcuM_OnGoOffTwo函数由EcuM_Shutdown函数调用,EcuM_Shutdown在OS shutdown hook中运行。也就是在OS关闭之后运行,规范中描述如下:
在这里插入图片描述
EcuM_OnGoOffTwo的函数原型如下:
在这里插入图片描述
一般在这个阶段,进行Nvm_WriteAll函数调用。也就是说不管是复位还是正常下电,都会走Nvm_WriteAll

在正常下电的最后一个阶段,会调用EcuM_AL_SwitchOff
在这里插入图片描述
在这个函数中,需要实现使MCU休眠的逻辑

总结

EcuM还有很多细节,有空可以再研究,后面会介绍EcuM中的配置

相关文章:

  • 逆变器控制技术
  • 数据结构与算法——Java实现 24.中缀表达式转后缀
  • Python | 第八章 | 数据容器
  • 爬虫入门 Selenium使用
  • 906. 超级回文数
  • 算法复杂度-空间
  • JAVA红娘婚恋相亲交友系统源码全面解析
  • Java语法-类和对象之抽象类和接口
  • 【软件测试】详解软件测试中的测试级别
  • Stable Diffusion 优秀博客转载
  • Spark 中 任务集 TaskSet 详解
  • 青动CRM V3.2.1
  • 第十四届蓝桥杯真题Python c组F.棋盘(持续更新)
  • Linux 配置与管理 SWAP(虚拟内存)
  • 9月28日
  • (三)从jvm层面了解线程的启动和停止
  • Android 架构优化~MVP 架构改造
  • Angular 4.x 动态创建组件
  • Git 使用集
  • Java 23种设计模式 之单例模式 7种实现方式
  • javascript 哈希表
  • Java教程_软件开发基础
  • Lsb图片隐写
  • PHP变量
  • QQ浏览器x5内核的兼容性问题
  • Spring核心 Bean的高级装配
  • Wamp集成环境 添加PHP的新版本
  • Webpack入门之遇到的那些坑,系列示例Demo
  • zookeeper系列(七)实战分布式命名服务
  • 关于字符编码你应该知道的事情
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 你不可错过的前端面试题(一)
  • 前端代码风格自动化系列(二)之Commitlint
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 阿里云API、SDK和CLI应用实践方案
  • ​configparser --- 配置文件解析器​
  • ​flutter 代码混淆
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​ssh免密码登录设置及问题总结
  • ​虚拟化系列介绍(十)
  • #AngularJS#$sce.trustAsResourceUrl
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (区间dp) (经典例题) 石子合并
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .NET面试题(二)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [000-01-030].Zookeeper学习大纲
  • [AR Foundation] 人脸检测的流程