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

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

3天内不再提示

唤醒事件(也称唤醒源)有效性验证为什么要设置一段时间?

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

前言

上一篇中讲只有Transceiver、Controller处于正常工作模式以后才能有效的收发报文,进而才能识别报文的类型(NM Message、XCPMessage、Diagnostic Message、APPMessage)。但识别出这些报文需要一个前提:ECU上电同时整个主程序运行起来,且需要一定的时间去识别报文类型。

项目中,唤醒事件(也称唤醒源)有效性验证为什么要设置一段时间?ECU上电,整个主程序如何运行起来?

本篇就上述问题进行分析。

唤醒事件有效性验证时间分析

在实际的网络管理项目中,大家可能会遇到这样的需求:收到有效唤醒事件(如:网络管理报文),网络激活,报文正常收发;如果收到的报文是非网络管理报文,ECU需要保持一定时间后休眠(如:ECU保持5s,即5s内ECU处于供电状态)。注意后者网络仍然在BSM(BusSleepMode),只能此时间内接收报文,不能发送报文。如果ECU在该时间内收到有效唤醒事件(多数是网络管理报文,也可能是有效的Power ON信号报文),网络将激活,进而进行正常的报文收发。

注意:ECU唤醒是网络唤醒的前提条件,ECU唤醒并不一定网络唤醒,如果网络激活(进入NormalMode)则ECU一定唤醒(RUN模式)

为什么要ECU保持一段时间呢?这里说一下个人理解,ECU自身并不知道唤醒事件是不是有效,ECU只要被供电就从启动文件指定的位置开始执行程序。如果要识别该唤醒事件是不是有效需要上层模块(EcuM)识别,而EcuM从开始验证到确认该事件的有效性需要调用底层模块确认(如:Controller或者Transceiver),这需要时间,且EcuM的验证和确认一般是异步执行,这也需要时间。上述时间其实并不长,项目不同执行的时间不等(每个项目初始化模块数量和读NVM时间不同),但多数在几十毫秒内执行完,但又为什么会要求1s或者5s或者更长呢?个人理解:ECU被唤醒,整个冷启动(可以理解为与电压相关的启动)花费了“较长”的时间,废了这么大劲立马Shutdown有点“过分”,如果ECU下电又被干扰起来还需要重头再来(各个模块、外设初始化、读NVM等),既然这样还不如等待一段时间确定没有有效唤醒事件以后,ECU再走Shutdown流程,进而避免ECU频繁的唤醒->休眠->唤醒,注意是ECU,不是网络被唤醒->休眠->唤醒,网络只有有效唤醒源才能激活。

ECU上电,程序运行过程分析

ECU如果要正常的运行程序,则需要供电,之后程序开始执行:启动文件->BootLoader->Application,进入“main”函数,也就是我们熟知的用户代码程序。用户代码程序包含ASWC的runnable以及各个模块的mainhandler(如:CanTrcv_30_Tja1145_MainFunction),这些程序在OS的调度下周期性或者事件触发执行,这也是上层模块可以收到消息和处理消息的基础。

这里主要分析EcuM管理的上电到程序运行过程。AUTOSAR中,EcuM分为Flexible和Fixed两种类型,因为Fixed并不支持多核且不灵活,本文主要讨论Flexible类型的EcuM。

pYYBAGMESDyAX8xwAACoYJ2kfXY991.png

如上图(1)所示,CInitCode一般是应用程序的main函数,即EcuM_Init在应用程序的main函数被调用,EcuM将控制ECU的启动流程,EcuM调用StartOS,让Os完成Task的激活。

EcuM_Init并不能完成MCU所有的初始化动作,在StartPreOS Sequence阶段主要完成DET模块(最先完成初始化,以便其它模块可以上报开发错误)以及一些硬件外设的初始化,如MCU、Port、Internal Watchdog等(主要根据项目需求设置要初始化的外设模块)。

poYBAGMESFKAP1JDAADR9R37i-A697.png

如上图,EcuM_StartupTwo将完成SchM(Os),BSW模块的初始化,其中各个模块的初始化(Can_Init、CanIf_Init等)在BswM中完成。程序所需的所有外设、模块初始化之后,启动Scheduler 定时,即周期性的执行BSW/SWCs任务,至此Application程序得以运行。



审核编辑:刘清

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

    关注

    146

    文章

    16227

    浏览量

    345519
  • AUTOSAR
    +关注

    关注

    9

    文章

    334

    浏览量

    21288
  • ecu
    ecu
    +关注

    关注

    14

    文章

    835

    浏览量

    54047
  • DET
    DET
    +关注

    关注

    0

    文章

    3

    浏览量

    8545
收藏 人收藏

    评论

    相关推荐

    ESP32 CAM板子在light_sleep模式唤醒时有定概率重启的原因?

    我使用ESP32-CAM板子,程序逻辑是每工作一段时间(比如60s)然后进入light sleep模式100s,设置light sleep的唤醒方式为timer。 但是程序有定概率
    发表于 06-18 08:29

    esp32使用esp_http_client时过了一段时间就会出现报错,为什么?

    每次都是使用了一段时间后出现这个问题,甚至连wifi都异常断开,无法重连
    发表于 06-17 07:17

    VL53L0在使用一段时间后无法读取数据如何解决?

    VL53L0在使用一段时间后无法读取数据,已经有好几个模块了,返回的错误代码有-6,-7和-20,这个到底是怎么回事?如何解决?
    发表于 05-28 08:07

    STM3218B20读取一段时间后出0是怎么回事?

    18b20读取一段时间后出0
    发表于 04-22 06:58

    STM8串口工作一段时间后出现通讯异常的原因?

    能串口。发送数据前先发送几个0x00唤醒对方再发有用数据。通讯速率很低。 产品在终端客户手上使用一段时间后可能会出现通讯不上的问题。出现问题后过一段时间可能会自行恢复。通过对STM8L052R8T6
    发表于 04-15 08:05

    两个控制器间SPI通信片选使能后为什么一段时间才收发数据?

    求助各位大佬,[抱拳]:两个控制器间SPI通信片选使能后为什么一段时间才收发数据?收发完数据后为什么过一段时间才拉高片选?如附图示时间段1和时间
    发表于 03-13 08:13

    tc264隔一段时间会复位有些什么原因呢?

    tc264隔一段时间会复位有些什么原因呢
    发表于 02-02 07:31

    LTM4700负载满载时,运行一段时间电源会掉电下如何解决?

    您好, 使用LTM4700遇到个问题:在负载不满载时,没有问题,负载满载时(电流约60A),运行一段时间电源会掉电下,怀疑是过流导致电源保护,环路补偿设置不合适,但是环路补偿如何
    发表于 01-04 08:01

    AD7655芯片工作一段时间后异常是什么原因引起的?

    一段时间后,AD7655芯片会急剧增温,AVDD电平拉低。 不知道这是什么原因引起的? 在线等。。那位大神指点下啊?谢谢!
    发表于 12-14 06:00

    一段时间内有100个离散的加速度,如何通过C语言求出这一段时间里的位移?

    一段时间内 有100个离散的加速度如何通过C语言求出这一段时间里的位移?
    发表于 11-07 08:17

    STC使用一段时间后真的会掉固件吗?

    STC使用一段时间后真的会掉固件?
    发表于 10-31 08:29

    MSP430的中断唤醒模式有哪些唤醒

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

    W5500过一段时间就无法ping通了怎么解决?

    但过一段时间,就无法ping通了,而且,复位不行 只能重新上电才可以 怎么解决
    发表于 09-27 06:11

    SPI接的TF卡运行一段时间就会识别不到卡是为什么?

    SPI接的TF卡,运行一段时间,就会识别不到卡
    发表于 09-25 08:24

    按键唤醒系统验证方法

    验证方法 在内核中,休眠方式有很多种,可以通过下面命令查看 # cat /sys/ power /state 常用的休眠方式有freeze、standby、mem、disk freeze:冻结
    的头像 发表于 07-30 15:53 628次阅读
    按键<b class='flag-5'>唤醒</b>系统<b class='flag-5'>验证</b>方法