赞
踩
参考网址:嵌入式开发:如何理解ECU唤醒、休眠、Reset?
(1)ECU唤醒是网络唤醒的前提。
(2)网络休眠是因为节点不想参与通信,停发报文是其最直接的表现。ECU有电,网络也可能休眠。
(3)下电过程中,某些节点需要等网络休眠一段时间再进行ECU的Shutdown时序,这段时间内,ECU带电。
(4)只要有一个唤醒源触发,即可唤醒MCU,但是,如果MCU想下电,则必须检查每一个唤醒源,当所有的唤醒源都不再请求通信时,MCU才能执行下电流程。
(5)工程常见的下电检查:
所有触发唤醒的硬线状态,即:KL15等硬线是否拉低(Off状态);
是否还有诊断请求;
是否还有网络管理报文;
是否还有上层用户通信请求等。
当上述的所有请求都不满足时,程序开始执行MCU的下电流程。
(6)ECU≠节点。一个ECU可以包含多个节点Node。举例来说:一个ECU有3路CAN,2路Flexray,1路Ethernet,应该说该ECU有6个节点。也可以具体说,该ECU有3个CAN节点,2个Flexray节点,1个Ethernet节点。
- 节点唤醒≠网络唤醒。节点唤醒后,才有可能发生网络唤醒。
节点唤醒后,若有网络主动请求 或 网络有被动唤醒请求,才会发生网络唤醒。
(7)VCC:C=circuit表示电路的意思,即接入电路的电压
Vreg:voltageregulator regulator是电压调整,就是稳压器的意思
前提:SBC(System Basic Chip)、CAN Trcv均与Battery常连。
说ECU连KL30电,其实是给该ECU的SBC、收发器(监控电压)连KL30电,而不是MCU直连KL30电。
1、SBC给外围器件输出其所需的工作电压。器件除了正常工作电压以外,还有一些监控电压,eg:CAN Trcv会常连KL30(Battery),用于自身电压和总线扰动的监控。
2、MCU通过监控硬线电平、监控收发器的INH电平状态,知道此次ECU唤醒是由于硬线还是CAN报文。
SBC系统基础芯片(SBC,System Basis Chip):
一种包含电源、通信、监控诊断、安全监控等特性以及GPIO的独立芯片。
汽车电子硬件设计中,电源、通信,包括一些监控(例如看门狗/复位/定时器),都是通过多个电路来实现的。这不仅增加了电路设计的难度,也不利于在可靠性、系统成本、PCB空间以及电路功耗等方面做出优化提高。使用了SBC之后,由于SBC内部高度集成了一个基本硬件系统模块的基础电路功能模块(电源和通信),因此使得外部电路得以大大的简化。这也就体现了SBC这类器件的强大优势,因此有了广泛的使用。
别称:主动唤醒、本地唤醒
主动唤醒:来自模块内部对网络的请求。主动唤醒节点的网络管理报文必须先于应用报文发送。
(理解:因为主动唤醒节点必须确保网段上ECU被唤醒了,此时他再发应用报文才有人收)
(1) 唤醒源:
和硬线相关的唤醒方式,如:
(2) 特点:
例子:KL15唤醒ECU
当KL15硬线使能以后,SBC的ENA Pin脚使能V_LDO_Com和V_LDO_uC电压输出,此时,CAN Trcv即可获取通信工作电压,一般是5V(Vcc)。同时,ECU获取3.3V或者5V电压,进而程序开始从复位向量位置运行,此时,ECU被唤醒。
提示:Trcv与KL30常连,监听总线。SBC输出给Trcv 5V通信电压。
有的SBC不仅仅受一个KL15硬线使能,还可能受其他硬线(Other Line)的使能。不管SBC受多少外部硬线作用,一般来说,这些硬线之间是或的关系。
别称:远程唤醒、被动唤醒
被动唤醒:来自总线上其他模块对该模块的网络请求。被动唤醒的节点,发送网络管理报文和应用报文的先后顺序无特别要求。
(1) 唤醒源:
和总线信号相关的唤醒方式,如:
若采用AUTOSAR直接网络管理:
ECU必须选择符合 ISO 11898-5 标准的高速 CAN 收发器。若ECU处于低功耗模式,仅在总线上出现符合ISO 11898-5标准定义的唤醒序列,且该 ECU成功接收到该网段定义的唤醒报文时才能够被总线唤醒。这里这条唤醒报文必须是该网段中 ECU 的网络管理报文。
(2) 特点:
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被唤醒。
电路设计中,收发器的INH引脚需要与SBC的WAKE Pin连接或者μc的供电电路连接,进而给μc供电,唤醒MCU(此时并未唤醒NM)。MCU会进一步判断收到的远程唤醒源是否是有效的网络唤醒源,如果不是则ECU走下电流程,网络没有唤醒;如果是有效网络唤醒源,则唤醒网络。(FAW不会进一步判断是否为有效唤醒源,会直接唤醒网络)
如果一个节点使用多种或者多个同类型Trcv时,每个Trcv的INH与SBC WAK是并联关系,也就是说,任何一个Trcv的INH均可使能SBC,进而唤醒MCU。
对于不同功能的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不再执行主要功能,等待被唤醒。
ECU Reset更多的是在说软件程序的运行行为。Reset的类型有很多,这里我们聊聊工程中常说的"ECU Reset"。Reset发生时,不同于ECU休眠,此时,ECU仍然处于供电状态。Reset的动作会使得程序"重头再来"。
对于Reset,有些是合理的,eg:诊断服务$10 02/82、$11 xx。有些是非预期的,eg:程序跑飞,没在规定时间"喂狗"等。但是,不管预期的Reset,还是非预期的Reset,均是想让程序回到最初状态,再来一遍。
保证同一网段基于KL.30电工作(即钥匙在点火锁的OFF位置时仍然工作)的节点能够协同睡眠和唤醒,以实现各节点在需要通信时可以正常收发报文,在不需要工作的时候可以进入低功耗状态。
网络管理的目的就是为了汽车上各个ECU节点能够同起同睡。
可以根据NM报文状态判定特定ECU的运行状态,从而根据需求定义处理相应信息。
做了网络管理的ECU,当整车下电到OFF档时,一段时间内没有操作车辆的话,所有这些ECU都会进入低功耗状态,此时每个ECU的电流非常小,几乎会小于2mA,整车静态功耗基本能控制在20mA左右,即使将车辆放置一个月,到时候也能正常启动。
当汽车上的所有节点都处于休眠状态,这时候节点A被触发了唤醒机制(比如车子被车主踩下踏板------这个栗子也不知道合不合适,反正就是假设节点A是主动起来的)。现在的情况是:节点A主动唤醒了,但车子正常工作不能就一个节点A醒来干活啊,其它几十个节点还全部处于休眠状态,这可咋整?他需要其他节点协同工作。
直接网络管理:节点醒了之后发NM报文,其他所有节点收到NM报文全都唤醒。(同起同睡)
节点A向外喊一声(发送网络管理报文)不就行了。就像大学宿舍那样,大家要么在睡觉,要么出去玩,而且格外团结,每次有人出去玩都会叫人其他人一起。好了,现在你想出去玩了,你要怎么让在睡觉的他们跟你一起出去?很简单,你只需要大声吼一句:“兄弟们,走了,出去耍”,然后宿舍所有人听到了就起床一起出去玩了(都唤醒了)
间接网络管理:节点醒了之后发应用报文,其它节点就会上一下子电,然后跑到检测唤醒源代码,检测到不是有效唤醒,最后就会马上又休眠下去。
但是注意,节点A要是向外广播的不是网管报文而是别的报文呢?用上面那个栗子,就会是这样:你叫大家去玩,但是,你不是吼要出去玩,而是吼一句:“兄弟们!看我看我!我是个帅比!”。那么效果就是舍友已迅雷不及掩耳之势把你丢出去,然后马上回去继续睡大觉。所以,要是节点A广播应用报文出去,那么其它节点就会上一下子电,然后跑到检测唤醒源代码,检测到不是有效唤醒,最后就会马上又休眠下去。
例子:Autosar CAN开发05(Autosar的CanNM----网管报文在汽车上的作用、“同起同睡”)_嵌软小白呗的博客-CSDN博客
使用专用的网络管理CAN报文做网络状态管理,通过网络上是否有专用的报文及报文的值来做整个网络的协同
不设定专用的网络管理CAN报文而是通过ECU节点发送的应用报文的状态做网络协同
直接网络管理:节点醒了之后发NM报文,其他所有节点收到NM报文全都唤醒。(同起同睡)
节点A向外喊一声(发送网络管理报文)不就行了。就像大学宿舍那样,大家要么在睡觉,要么出去玩,而且格外团结,每次有人出去玩都会叫人其他人一起。好了,现在你想出去玩了,你要怎么让在睡觉的他们跟你一起出去?很简单,你只需要大声吼一句:“兄弟们,走了,出去耍”,然后宿舍所有人听到了就起床一起出去玩了(都唤醒了)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。