嵌入式开发:如何理解ECU唤醒、休眠、Reset?

发布于 2023-11-8 10:45
浏览
0收藏

前面聊过ECU的启动、关闭流程,详情可以参考前文​​Autosar EcuM:ECU的启动、关闭流程​​。实际工程项目中,需要大量的人员参与其中,大家角色各异,对一些技术上的表达也可能各有不同。如果不同角色人员对某个概念理解不同,难免会造成沟通上的成本,即:未能真正捕获其意。这里举几个例子:

示例1:人员甲说:“ECU没有唤醒,没有CAN报文发送出来”

如何理解人员甲的表达?我之前强调过多次:ECU唤醒是网络唤醒的前提。所以,这里的人员甲是想说网络没有唤醒还是ECU没有唤醒?所以,这里准确说是网络没有被唤醒。

示例2:人员乙说:“ECU有电,没有报文发送出来,网络没休眠”

如何理解人员乙的表达?我们应该清楚,网络休眠是因为节点不想参与通信,停发报文是其最直接的表现。ECU有电,网络也可能休眠。eg:下电过程中,某些节点需要等网络休眠一段时间再进行ECU的Shutdown时序,这段时间内,ECU带电。

对于ECU和网络的关系,有时确实很迷糊人。本文,聚焦ECU的唤醒、休眠、Reset,看看是否和你的理解有所偏差?

1、ECU唤醒

如果要说清楚ECU的唤醒,我们不得不研究对应的硬件原理图。因为ECU唤醒的本质就是给ECU供电。为了便于理解ECU唤醒,本文简化了一个由Battery(KL30)、KL15、SBC(System Basic Chip)、uC、CAN Transceiver构成的电路原理图,如下所示:

嵌入式开发:如何理解ECU唤醒、休眠、Reset? -汽车开发者社区

(一)KL15唤醒ECU


如上图,SBC、CAN Trcv均与Battery(12V)常连。当KL15硬线使能以后,SBC的ENA Pin脚使能V_LDO_Com和V_LDO_uC电压输出,此时,CAN Trcv即可获取通信工作电压,一般是5V(Vcc)。同时,ECU获取3.3V或者5V电压,进而程序开始从复位向量位置运行,此时,ECU被唤醒

KL15唤醒ECU(供电)的流程,示意如下所示:

嵌入式开发:如何理解ECU唤醒、休眠、Reset? -汽车开发者社区

提示:Trcv与KL30常连,监听总线。SBC输出给Trcv 5V通信电压。


(二)BUS唤醒ECU


CAN BUS中,收到一帧有效的网络管理报文或者总线出现了符合唤醒CAN Trcv的Wakeup Pattern时,CAN Trcv使能INH Pin脚,一般,Trcv的INH Pin脚与SBC的WAK Pin脚连接,进而使能V_LDO_Com和V_LDO_uC电压输出,此时,CAN Trcv即可获取工作电压,一般是5V(Vcc)。同时,ECU获取3.3V或者5V工作电压,程序开始从复位向量位置运行,此时,ECU被唤醒

ECU被总线报文唤醒的流程,示意如下所示:

嵌入式开发:如何理解ECU唤醒、休眠、Reset? -汽车开发者社区

2、ECU休眠

对于不同功能的ECU,唤醒源的个数和方式会有所不同,eg:ECU1只能被总线唤醒(eg:网络管理报文),ECU2即可以被总线唤醒,也可以被KL15硬线唤醒。虽然,不同的ECU,唤醒源和唤醒个数会有所不同,但是,如果ECU想休眠,必须其对应的所有唤醒事件都不存在

之前提到过,EcuM的Phase中有SLEEP和OFF两种时序。如果ECU进入SLEEP Phase,ECU仍然被供电,此时,ECU会消耗一定的能量,以便于监控唤醒事件(eg:总线的NM Msg);如果ECU进入OFF Phase,ECU被完全断电,完全不消耗能量。不管ECU进入SLEEP Phase还是OFF Phase,工程上,我们都习惯称之为"ECU休眠"。在ECU休眠期间,ECU不再执行主要功能,等待被唤醒。

3、ECU Reset

ECU Reset更多的是在说软件程序的运行行为。Reset的类型有很多,这里我们聊聊工程中常说的"ECU Reset"。Reset发生时,不同于ECU休眠,此时,ECU仍然处于供电状态。Reset的动作会使得程序"重头再来",如下所示:

嵌入式开发:如何理解ECU唤醒、休眠、Reset? -汽车开发者社区

对于Reset,有些是合理的,eg:诊断服务$10 02/82、$11 xx。有些是非预期的,eg:程序跑飞,没在规定时间"喂狗"等。但是,不管预期的Reset,还是非预期的Reset,均是想让程序回到最初状态,再来一遍。


文章转载自公众号:开心果 Need Car

分类
收藏
回复
举报
回复
相关推荐