Autosar Nm开发问题-部分网络管理报文无法维持网络唤醒
文章目录
- 前言
- 问题描述
- 原因分析
- 问题处理
- 总结
前言
Nm唤醒一般都是在一个报文网段内,例如0x500-0x53f,也就是这些报文都是可以唤醒ECU的,本文介绍在项目开发过程中遇到的Nm唤醒的问题及解决方案
问题描述
项目需求是0x500-0x53f都可以唤醒ECU,但是实际表现为:
收到0x522,可以正常唤醒,进入PNC控制
收到0x53e,可以正常唤醒,然后又进入休眠
原因分析
0x53e报文可以正常唤醒ECU,说明SBC配置没有问题。
在CanIf_RxIndication打断点,发现0x53e报文可以收到。说明Candriver配置没有问题
在CanNm_RxIndication打断点,发现进不去。说明就是canif到cannm pdu传递有问题
检查配置:
CanIfRxPduCfg:配置正常
CanIfHrhCfg:配置的list,而且只有一个报文,导致实际上只有0x522的报文能到CanNm模块,最终导致Nm没有正常维持网络唤醒,进入休眠流程。这个是之前cfggen生成的,没有check这个地方的问题。此处需要修改
问题处理
将CanIfHrhCfg配置为Range,以支持多个网络管理报文接收
对应的mailbox也要修改,配置为basic can,及对应的Filter code和mask.否则生成BSW会报错(虽然实际can不是这个影响的)
总结
Nm报文中的后两位表示Node ID,每个节点的Nm报文不同,配置网段内的Nm报文都可以唤醒ECU,也就是说本ECU可以被多个其他ECU唤醒了。