AUTOSAR专项--实战问题:多路CAN配置后引发的休眠问题

1、问题背景

        在之前的工程中,一直用的是一路CAN;最近由于整车拓扑的变化,新增了一路子网CAN,且这路CAN不支持唤醒,但需要中转网络管理报文。

       在导入DBC之后,通过vector工具点点点,生成代码,下到板子上一看,出问题了。系统不休眠,且报文停发后电流始终在300mA左右。这到底是啥原因呢?

2、问题定位

        根据我们之前模式管理的介绍,我们知道MCU的休眠主要由BswM和EcuM协同控制。首先是BswM的状态需要切换,根据AUTOSAR专项--BswM状态分析我们知道,正常运行时,BswM处于RUN状态,而要休眠,就需要从RUN->POST_RUN->PRE-SHUTDOWN->WAIT_FOR_NVM->SLEEP,最后将控制权移交给EcuM,由EcuM选择进入Go Halt/Poll。

        很明显,系统没有休眠,就只能从BswM的状态迁移开始入手。首先在RUN之后的每个状态的ActionList入口处打断点,单步执行,最后发现BswM没有进入到NormalSleep状态,如下:

        很明显,上面代码中if条件没有满足,所以这

猜你喜欢

转载自blog.csdn.net/djkeyzx/article/details/131652713