PNC部分网络管理的基本介绍,可参考:
EIRA和ERA的使用场景
EIRA:如果某个ECU对应的PN组由内部请求或者外部请求,那么这个ECU需要将对应的I-PDU开启。如果PN被释放了,那么I-PDU将被关闭。
ERA:网关收集外部PN请求,将此外部PN请求镜像到请求的总线上。
不管是EIRA还是ERA,CanNm模块中会对应有数组记录EIRA和ERA状态。
网络管理报文的过滤
对于收到的网络管理报文,如果和当前ECU无关,那么应当由CanNm进行过滤,丢弃这些无关报文。
CanNm的过滤方法,就是对网络管理报文中的用户数据中的PN请求进行判断,在进行掩码运算之后,能够得出此报文中是否有相关PN请求的结果,只有结果为真的情况,才算通过过滤条件。

CanNmAllNmMessagesKeepAwake
对于网关来说,无论收到是否带PN信息的网络管理报文,都应当保持唤醒状态,那么就应当开启CanNmAllNmMessagesKeepAwake选项。即使在CanNmPnEnabled开启,但收到的网络管理报文中不包含PN bit的情况下,CanNm不会丢弃此报文,只是忽略部分网络管理的信息,仍旧触发事件进行状态机处理。
实际项目中也有遇到需求,不期望网关在接收到任何网络管理报文时保持唤醒状态,那么此时CanNmAllNmMessagesKeepAwake是不需要开启的。
EiraRxNSdu和EraRxNSdu
前文提到,EIRA对应于自身节点的(内部以及外部)PN请求,ERA对应于作为网关节点需要收集的外部PN请求,分别需要有一个数组来记录PN信息,对应到配置工具中的选项时,EIRA存在于CanNm全局设置,ERA存在于每个CanNm通道设置:

EIRA和ERA的信息都来自于CanNm的用户数据,这两个NSdu最终会给到Com模块,此信号为数组类型,当CanNm识别到有效PN信息并提交给Com模块后,Com模块调用ComM提供的回调函数(需要在ComM模块关联相关EIRA/ERA PNC Signal),ComM模块随后处理这些PN信息:


