
Autosar网络管理:为什么需要2帧网络管理报文唤醒网络?
Autosar网络管理开发中,大家是否遇到这样的工况:“一帧网络管理报文无法唤醒DUT(device under test),有时需要两帧网络管理报文才能唤醒节点网络。”带着这个疑问,本文从需求和网络唤醒时序上进行分析。
1、网络管理唤醒需求
工程开发中,很少约束几帧网络管理报文唤醒网络。也就是说,需求没有明确指定:必须一帧网络管理报文唤醒网络。两帧或者三帧网络管理报文唤醒网络也符合需求。为什么这么说呢?答:一个网段内,至少会有一个主动唤醒网络的节点处于快发模式,也就意味着:网络唤醒阶段,同一网段内会存在多帧网络管理报文,eg:20ms间隔发送20帧。所以,主动唤醒节点的快发模式是想确保网段内,所有节点都能收到网络管理报文,进而实现网络状态的同步。对于被动唤醒节点(eg:收到其他节点发送的网络管理报文唤醒的节点),没有快发模式,也不承担主动唤醒网段的责任,可不做约束。
提示:CP Autosar架构开发中,对于主动网络节点,多数会要求第一帧外发报文是网络管理报文;对于非主动唤醒节点,外发的第一帧报文可以不做严格约束,即:第一帧报文可以是网络管理报文,也可以是应用报文。
2、网络唤醒时序
了解网络的唤醒时序,自家产品的硬件原理必须要有所了解,本文简化一个uC、SBC、Battery、CAN Trcv、CAN Driver构成的硬件原理示意图,如下所示:
如上图,假设SBC、CAN Trcv、uC均处于休眠状态。
1. 当总线上收到一帧网络管理报文(或者任意有效的Wakeup Pattern)时,CAN Trcv被唤醒,INH拉高;
2. INH的拉高,意味着SBC的唤醒,SBC给CAN Trcv和uC等器件输出工作电压,此时uC唤醒,软件程序开始运行。也就是说,
3. uC唤醒以后,执行软件程序,首先使能CAN Trcv,即:让CAN Trcv进入工作模式。同时,软件程序进行软件初始化动作,其中,CAN Module(CAN Driver)完成初始化以后,方可有效地接收CAN Trcv传递过来的CAN Frame;
4. 只有当CAN Trcv和CAN Module都正常工作以后,CAN报文才能被uC有效地接收,进而被网络管理模块识别,eg:CanNM。
所以,如果第一帧网络管理报文只是唤醒了SBC、CAN Trcv、uC等器件,软件还没有有效接收到此网络管理报文,网络不会唤醒,需要uC在唤醒的状态下,收到一帧网络管理报文才能唤醒网络,也就是总线上的第二帧或者第三帧网络管理报文。
(一)一帧网络管理报文能否唤醒网络?
一帧网络管理报文能否唤醒网络呢?答:能。本文讨论一种实现方式:硬件过滤。硬件过滤,也就是常说的PN(Partial Network)功能,如果CAN Trcv支持PN功能,即:设置特定的报文唤醒,也就能实现一帧网络管理报文唤醒网络。比如:使能TJA 1145的PN功能,配置CAN NM Msg唤醒。只有CAN Trcv(TJA 1145)收到NM Msg,才能拉高INH,进而使能uC,此时uC可以在初始化流程中确认唤醒源的有效性,而不必再检查唤醒源。如此,一帧NM Msg也可以唤醒网络。
如上讨论,基于uC的冷启动过程,如果uC在休眠过程中,收到一帧网络管理报文,一帧网络管理报文即可唤醒网络。
当然,也有的小伙伴可能会说,没有使用TJA 1145的PN功能,也能实现一帧网络管理报文唤醒网络。这个就需要看具体项目、具体实现了,每家产品设计方案不同,出现的问题也千差万别,不能一概而论。
文章转载自公众号:开心果 Need Car
