0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

EcuM是如何知道有唤醒事件呢?

冬至配饺子 来源:开心果 Need Car 作者:开心果 Need Car 2022-08-23 11:39 次阅读

前言

在AUTOSAR中,Ecu的唤醒流程并不能简单的看作是对各个外设模块的供电动作。Autosar给了软件开发人员很大的自由度去设计目标项目Ecu的唤醒动作,而自由度越大的代价就是开发人员需要很好的设计Ecu的唤醒时序,提供Ecu唤醒过程的鲁棒性。

唤醒源的状态

在EcuM中规定了唤醒源的4中状态:NONE、PENDING、VALIDATED、EXPIRED。四种状态关系的切换关系如下所示:

poYBAGMES7WAJoCFAADeSJyKHwM989.png

当Ecu上电时,唤醒源的初始状态是NONE,当唤醒源状态切换到NONE时,需要通知到BswM模块,上图也可以看出,唤醒源的每次状态切换都需要通知到BswM模块,通知接口:BswM_EcuM_CurrentWakeup。

EcuM是如何知道有唤醒事件呢?EcuM如果想知道有唤醒Ecu的事件,最好的方式就是给底层提供一个接口或者注册一个回调,Autosar里规定了标准接口:EcuM_SetWakeupEvent。当有唤醒事件发生时,底层的硬件模块(例如:Transceiver、Sensor)最先识别到,之后通过该接口上报给EcuM。

EcuM主函数会轮询检测底层上报的唤醒事件,如果想进一步的分析唤醒事件是不是有效的总线唤醒源(网络管理报文),需要Ecu有正常的收发报文能力,想要收发报文,Transceiver和Controller两个模块均需要启动。一般来讲,Transceiver会在程序初始化时进入正常的工作模式,而Controller进入正常的工作模式是EcuM调用EcuM_StartWakeupSources的结果,而该接口的内部功能的实现由开发者自行把控,autosar并未做硬性的要求。

启动Transceiver和Controller,建立了报文的正常收发能力,Ecu即可进一步的将报文上报上层模块,如:CanIf,即此时Ecu可以拿到总线的RawData,不管是不是网络管理报文,Ecu都可以做进一步的功能实现,如收到诊断报文唤醒网络等。

一般来说,会在EcuM模块配置两个时间参数,CheckWakeup和ValidateWakeup时间,如果CheckWakeup时间走完走完没有判断到有效的唤醒源,则调用EcuM_StopWakeupSources关闭唤醒源,这里多数关闭controller,进而Ecu失去通信能力。

ValidateWakeup时间参数配置与否决定了是否使用唤醒事件的验证功能,如果配置该参数,且验证唤醒事件有效后则通知ComM使能通信,调用ComM接口:ComM_EcuM_WakeupIndication。如果该参数没有配置,则EcuM不在绕圈,直接通知BswM唤醒事件有效,通知ComM开启通信。个人理解:该参数配置较合理。

第一:可以验证唤醒事件的有效性,避免因总线抖动等干扰造成的非预期Ecu唤醒;

第二:如果使用的Transceiver没有Pn功能,Ecu会因总线的扰动而不断的唤醒,假设总线有应用报文没有网络管理报文,ValidateWakeup时间给0,Ecu将会不断的走上下电流程,如果下电选择OFF流程(实际项目中很多开发人员没有开启Reset流程的Operation,即直接冷启动,这不符合autosar规范,也不安全),将会带来未知问题(如果Ecu内核有一定时间内唤醒次数限制,超过阈值则可能上锁保护),设置该参数可以有效的延迟Ecu唤醒频率。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7643

    浏览量

    148520
  • 总线
    +关注

    关注

    10

    文章

    2713

    浏览量

    87225
  • AUTOSAR
    +关注

    关注

    9

    文章

    330

    浏览量

    21138
收藏 人收藏

    评论

    相关推荐

    操作FreeRTOS时,执行__WFI()导致系统滴答中断无法唤醒设备怎么解决?

    内核时钟全部关闭了,导致滴答中断无法触发,不知道是不是这样的原因 2、如果__WFI()无法使用滴答中断唤醒,那能否用普通定时器唤醒,怎么样能够让普通定时器去替代系统滴答 希望
    发表于 04-24 08:29

    PC端打开串口助手,怎么会影响到STM32的WKUP唤醒

    。 问题: PC端 打开串口助手,怎么会影响到 STM32 的 WKUP 唤醒? 难道是串口什么信号引脚干扰了内核唤醒? 非常感谢!
    发表于 04-24 08:26

    stm32进入stop模式后,为什么uart还能触发中断并唤醒stm32

    我的理解是stm32进入stop模式后,外设时钟都停掉了,比如uart的时钟,也就是说uart无法收数据了,为什么uart还能触发中断并唤醒stm32
    发表于 03-15 08:16

    STM32WL55启用Radio初始化,RTC待机唤醒模式失效的原因?

    排查了很久,发现使用了Radio.Init();函数后原本使用的Standby模式被一直唤醒(程序使用的是RTC5秒唤醒),老哥知道原因吗?
    发表于 03-12 08:34

    电动汽车的ECU进入休眠后,目前有3种唤醒模式,CAN总线和AC电压的唤醒设计原理是什么?

    电动汽车的ECU进入休眠后,目前有3种唤醒模式,我想知道CAN总线和AC电压的唤醒设计原理是什么?
    发表于 02-02 06:19

    aducm360进入低功耗无法唤醒是什么原因导致的?如何解决?

    ,NVIC_EnableIRQ(EINT4_IRQn); EiCfg(EXTINT2,INT_EN,INT_RISE);//外部中断2,NVIC_EnableIRQ(EINT2_IRQn); 可是实际工作时,串口可以唤醒CPU,返回相应指令, 但外部中断4,却无法唤醒
    发表于 01-11 07:45

    STM32实例-待机唤醒实验

    STM32实例-待机唤醒实验
    的头像 发表于 10-26 15:48 1218次阅读
    STM32实例-待机<b class='flag-5'>唤醒</b>实验

    MSP430的中断唤醒模式哪些唤醒源?

    MSP430的中断唤醒模式哪些唤醒
    发表于 10-25 07:49

    理一理AUTOSAR架构下的唤醒源事件

    最近的项目负责网络管理部分,网路唤醒和ECU系统的休眠关系紧密,对系统的唤醒源事件感觉理解的不是很透彻,今天就来理一理AUTOSAR架构下的唤醒源事件。
    的头像 发表于 07-14 09:11 1621次阅读
    理一理AUTOSAR架构下的<b class='flag-5'>唤醒</b>源事件

    Arduino Nano唤醒词检测

    电子发烧友网站提供《Arduino Nano唤醒词检测.zip》资料免费下载
    发表于 07-11 16:21 0次下载
    Arduino Nano<b class='flag-5'>唤醒</b>词检测

    唤醒您的Android手机

    电子发烧友网站提供《唤醒您的Android手机.zip》资料免费下载
    发表于 07-11 11:35 0次下载
    <b class='flag-5'>唤醒</b>您的Android手机

    唤醒词检测开源设计

    电子发烧友网站提供《唤醒词检测开源设计.zip》资料免费下载
    发表于 06-28 14:39 0次下载
    <b class='flag-5'>唤醒</b>词检测开源设计

    语音识别唤醒词的技术与应用

    语音识别唤醒词是指一种特定的语音指令,能够唤醒智能语音助手或语音识别系统。这种特定的语音指令通常是一个关键词或短语,例如“Ok Google”、“Alexa”或“Hello Siri”等。唤醒
    的头像 发表于 06-24 04:02 896次阅读

    基于STC单片机的5个唤醒唤醒MCU编程实例

    STC单片机5个唤醒唤醒MCU源代码
    发表于 05-12 16:03 1次下载

    ECU系统休眠后通过诊断报文唤醒ECU且唤醒网络后快发NM报文

    在一文中我们分析并实现了通过诊断报文唤醒ECU且唤醒网络的需求,但是经过测试发现网络唤醒
    的头像 发表于 05-09 09:36 3496次阅读
    ECU系统休眠后通过诊断报文<b class='flag-5'>唤醒</b>ECU且<b class='flag-5'>唤醒</b>网络后快发NM报文