AUTOSAR EcuM学习(二)

article/2025/9/22 15:59:58
  • 前言

    本文以一个简化的示例看下ECU唤醒休眠的执行流程,通常不同项目因需求不同流程处理都会有所不同,本示例只是其中一种,并不是标准普适的流程。假设ECU休眠采用的是MCU掉电方式,且只有两个唤醒源:CAN和KL15,当有唤醒时两者通过线“或”的关系通知LDO/SBC给MCU上电。示意图如下:

    我们把KL15硬线作为主动唤醒源,CAN作为被动唤醒源,在EcuM中需要配置这两个唤醒源(EcuMWakeupSource),比如分别命名为EcuM_WakeupSource_KL15、EcuM_WakeupSource_CAN,对于CAN唤醒源需要指定对应的ComM通道,对于McuResetReason可以不作映射,因为我们会手动设置唤醒源。

  • 主动唤醒(KL15)

    KL15硬线拉高后触发LDO/SBC给MCU上电,开始执行初始化,当执行到StartPostOs阶段BswM已经初始化完成并且可以工作时,通过唤醒源判断调用EcuM_SetWakeupEvent(EcuM_WakeupSource_KL15)设置唤醒源为KL15。

    在本示例中可以把这一步作为进入UP阶段的前提条件之一,但如果这里存在设置无效的路径,就不适合这么做,需要在更靠后(EcuM_MainFunction运行起来)的位置进行设置。

    当进入UP阶段,各模块任务开始正常执行后,APP或BSW通过ComM_RequestComMode请求ComM进入正常通信状态(FULL_COMMUNICATION),ComM继而通过CanSM_RequestComMode请求CanSM进入正常通信状态,CanSM继续通过CanIf控制CanDrv将CAN模块设置为正常工作模式,之后,ComM通过NmIf模块(Nm_NetworkRequest)请求CanNM进入NetworkMode,至此,网络通信打开完毕。

  • 休眠过程

    当APP或BSW不再有通信需求,ComM会切换到READY_SLEEP状态,在此过程中会通过NmIf模块(Nm_NetworkRelease)请求CanNM释放网络,如果外部其它节点网络均满足休眠,CanNM切换到PrepareBusSleep状态时会通知ComM,ComM继而切换到SLIENT_COMMUNICATION,并且控制CanSM也进入静默通信,CanSM通过CanIf设置CAN模块为只收不发模式,当CanNM最终进入BusSleep状态,会再次通知ComM,此时ComM会进入NO_COMMUNICATION,并且通过CanSM及CanIf将CAN通信关闭。最后,等待其它条件(如果有的话)满足后整个ECU即可进入SHUTDOWN下电流程。

  • 被动唤醒(CAN)

    CanTrcv于Standby/Sleep模式下接收到CAN报文后,通过拉高INH通知LDO/SBC给MCU上电,当初始化执行到StartPostOs阶段BswM已经初始化且可工作时,通过唤醒源判断调用EcuM_SetWakeupEvent(EcuM_WakeupSource_CAN)设置唤醒源为CAN。

    同样的,可以把CAN唤醒也作为进入UP阶段的前提条件之一,这里由于只有两个唤醒源,硬线KL15又比较好判断(通常只要初始化完IO口即可读取状态),所以采用非此即彼的逻辑来判断是否是CAN唤醒,如果想通过检测报文来设置CAN唤醒的话,那么判断时机可能要靠后,因为检测报文的话至少要等到CanSM将Can/CanTrcv打开能够正常收取报文才行。

    还记得CAN唤醒在配置的时候指定了ComM通道,这时EcuM就会通知ComM有唤醒事件发生,和主动唤醒类似,ComM通过CanSM、CanIf、CanDrv设置CAN模块工作状态,然后再通过NmIf模块(Nm_PassiveStartUp)启动CanNM。

  • 休眠过程

    休眠过程和上面主动唤醒中的休眠过程类似,主要区别是被动唤醒下CanNM处于ReadySleep状态,不会进入Normal状态,一旦其它节点停发网络报文,CanNM的网络计时器超时后便会进入PrepareBusSleep模式,进入该模式会通知ComM,ComM会通过CanSM控制CAN工作状态,等到CanNM最后进入BusSleep后,ComM就会通过CanSM关闭CAN模块。

  • 唤醒验证(WakeupValidation)

    如果KL15硬线/CAN总线上出现干扰信号,导致LDO/SBC唤醒MCU,按照上面的做法ECU会正常启动起来然后再休眠下去,如果还有启动后维持最小执行时间一说的话,整个过程的持续时间还会更长。想要过滤掉唤醒源干扰、缩短ECU活动时间的话就可以使用唤醒验证功能。

    使用唤醒验证首先需要在配置中为唤醒源指定验证超时时间,然后在启动阶段设置唤醒源(参考前面的图示),这里就不能把唤醒源作为进入UP阶段的前提条件了,因为验证需要开启任务调度执行EcuM_MainFunction。

    EcuM_MainFucntion执行期间,对前面设置的唤醒源进行验证操作,首先通过EcuM_StartWakeupSources启动验证,这一步会做一些准备动作,比如校验CAN唤醒时,这里会通过CanSM开启CAN控制器/收发器,接着开启验证计时器,执行EcuM_CheckValidation检查唤醒源,该接口会根据实际要检测的唤醒源来调用相应模块的CheckValidation,对于CAN来讲,会调用CanIf_CheckValidation,在CanIf_CheckValidation中用户需要检测相应的唤醒源是否真实存在,如果存在就通过EcuM_ValidateWakeupEvent通知EcuM,EcuM知道是有效的唤醒后会停止验证计时器,EcuM正常运行。如果不存在有效的唤醒源,当验证计时器超时后,EcuM会知道没有唤醒源存在,通过EcuM_StopWakeupSources执行一些处理动作,比如通过CanSM关闭CAN控制器/收发器,然后EcuM执行SHUTDOWN/SLEEP动作。


http://chatgpt.dhexx.cn/article/yPPwda1d.shtml

相关文章

KL15含义-- 汽车钥匙孔挡位

KL含义 KL是德文connector含义,芯片引脚的含义。 KL30 ,通常表示电瓶的正极。positive KL31,通常表示电瓶的负极。negative KL15, 通常汽车处于RUN模式 KL50,通常汽车处于crank模式 KLR,通常汽车处于的ACC模式 汽车钥…

浅谈汽车应用中的KL15与KL30

浅谈汽车应用中的KL15与KL30 身处汽车行业或者经常看汽车应用的原理图,就经常能看到KL30和KL15等网络标号,这是什么意思,来简单聊下。 KL15指点火信号 KL30指蓄电池供电电压 为啥叫KL呢 其实他是德语Klemme的缩写,指的是ECU的管…

KL15和汽车各个档位

KL是德语Klemme的缩写,意思是ECU的管脚、接线柱,和Pin意思相同,后面的数字代表不同的电源模式。 KL15表示发动机的点火信号和启动车辆的信号,驾驶循环以此为准 KL15R,其中R表示Radio,用于启动车辆的仪表盘…

为什么点火信号叫KL15,蓄电池电压叫KL30?

在刚进入汽车行业时,听到前辈讨论问题时偶尔蹦出来的KL15、KL30,那会内心一脸懵逼,这啥意思呢? 当时也没好意思打断大家的讨论,直接询问。 等他们讨论完后悄咪咪的问了一下坐我对面的同事。 才知道KL15是指点火信号…

在微信开发者工具导入整个weui的实例,查看weui的用法

方法 下载weui的源代码,https://github.com/Tencent/weui-wxss/ , clone or download > Download ZIP解压,找到dist文件夹,在./weui-wxss-master/dist/打开“微信开发者工具”,选择“小程序” > “导入项目” &…

WeUI实例(官方)

博主最近想用小程序画几个页面,于是想试试WeUI的样式。但是没找到WeUI的文档,只找到了在线的实例演示。还有的例子是在div上显示的,当时比较疑惑。后来发现,可能是公众号的页面。 实例演示的链接:传送门 其实这些实例…

WeUI—微信官方UI库

WeUI 为微信 Web 服务量身设计 概述 WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一。包含button、cell、dialog、 progress, toast、article、icon等各式元素。 使用 方法一&a…

HTML5 weui笔记

按钮 <a href"javascript:;" class"weui_btn weui_btn_primary">按钮-确定-可用</a> <a href"javascript:;" class"weui_btn weui_btn_disabled weui_btn_primary">按钮-确定-不可用</a> <a href"jav…

微信小程序引入原生组件——WeUI组件库,详细步骤

第一步&#xff1a;查看是否可使用npm命令&#xff0c;没有则安装&#xff1a; 我这里已经安装了&#xff0c;如果没有则安装node.js node官网下载地址&#xff1a;https://nodejs.org/en/ 注意这个windows 64位的&#xff1a; 其他系统看这里&#xff1a;点击dowloads 先点击L…

微信小程序UI框架之【weui】怎样使用

介绍 官网&#xff1a; https://weui.io/ 这是一套基于样式库weui-wxss开发的小程序扩展组件库&#xff0c;同微信原生视觉体验一致的UI组件库&#xff0c;由微信官方设计团队和小程序团队为微信小程序量身设计&#xff0c;令用户的使用感知更加统一。 官方文档&#xff1a;…

第一次使用weui

今天在做微信公众号开发时&#xff0c;用了一下weui&#xff0c;发现很好用。 1、怎么下载weui.css 例如&#xff0c;进入了该链接页面&#xff1a;https://weui.io/#input&#xff0c;然后右键查看源码&#xff0c;在源码中有这样一行&#xff1a; <link rel"style…

微信小程序引入weui

一、执行步骤 1.根目录下执行 npm init -y npm install --save weui-miniprogram --production npm install express 2.文件配置 project.config.json 找到 packNpmManually 和 packNpmRelationList 修改成如下内容&#xff1a; "packNpmManually": true, &quo…

WeUI for 小程序--使用教程

WeUI for 小程序–使用教程 weUI 是一套同微信原生视觉体验一致的基础样式库&#xff0c;由微信官方设计团队为微信 Web 开发量身设计&#xff0c;可以令用户的使用感知更加统一。包含button、cell、dialog、 progress、 toast、article、actionsheet、icon等各式元素。 预览 …

WeUI基础样式库

WeUI包含button、cell、dialog、toast、article、icon等各式元素。 按钮&#xff08;Button&#xff09; 按钮可以使用a或者button标签。wap上要触发按钮的active态&#xff0c;必须触发ontouchstart事件&#xff0c;可以在body上加上ontouchstart""全局触发。 按…

WeUI - 微信官方推出的免费开源 UI 组件库,上手简单,风格简约,在微信生态开发轻量项目的绝佳选择

微信早年发布的 UI 框架&#xff0c;对想要创建让微信用户感到熟悉的应用来说&#xff0c;是一个好选择。 关于 WeUI WeUI 一款由腾讯微信团队开发的 UI 组件库&#xff0c;是一套同微信原生视觉体验一致的基础样式库&#xff0c;由微信官方设计团队为微信 Web 开发量身设计&…

weui学习总结——1、weui表单常用标签

前言&#xff1a;weui是一个专门用于开发手机移动web或微信的样式库。但是官方只提供了demo没有提供相关文档&#xff0c;所以这篇博客就当是方便以后开发而使用吧。 weui资源下载&#xff08;也可以从官网下载&#xff09;&#xff1a; http://download.csdn.net/download/z…

微信小程序-weUI组件库

微信小程序的开发过程中&#xff0c;常常会出现很多重复性的功能翻来覆去地使用&#xff0c;那么直接用一套封装好的组件库&#xff0c;就能大大提升开发速度。 微信小程序的UI组件库有很多&#xff0c;可以参考下面这个内容&#xff1a; 微信小程序UI组件库合集 | 微信开放社…

微信小程序之WeUI组件库的使用

本文主要介绍微信小程序中的 WeUI组件库的具体使用方法&#xff0c;通过具体的示例代码进行介绍&#xff0c;相信能够对大家的学习和工作都有一定的参考学习意义&#xff0c;欢迎大家一起学习进步。 WeUI组件库 官方文档 一、前言 WeUI 是一套同微信原生视觉体验一致的基础样…

WeUI使用步骤

先去下载 小程序版weui下载地址&#xff1a;https://github.com/Tencent/weui-wxss可以将整个文件下载下来&#xff0c;将其中的dist文件夹导入到独立的小程序中作为参考如下图 注意&#xff1a;样式文件可直接引用dist/style/weui.wxss&#xff0c;或者单独引用dist/style/wi…

npm引入小程序官方WeUI组件库weui-miniprogram

1、打开cmd&#xff0c;在小程序根目录内&#xff0c;初始化npm npm init2、执行命令安装 npm 包&#xff1a; npm install --save weui-miniprogram3、安装完成后&#xff0c;在微信开发者工具中的菜单栏&#xff1a;工具 ------ 构建 npm &#xff1a; 4、在微信开发者工具中…