问题现象
启动阶段 KL15 尚未接通时,系统也会触发 0x300 报文超时监控。
原因分析
1. DaVinci 自动生成的 Rx Rule 同时开启报文接收和 DM 超时监控
开启 IPDU 接收通道时,DaVinci 自动生成的规则会执行报文接收及报文超时监控相关操作。
从生成代码可以看到,BswM_ActionList_CC_AL_CN_DBCNetWork_05d62413_RX_EnableNoinit() 同时调用 BswM_SetIpduGroup() 和 BswM_SetIpduDMGroup(),使能对应的 Rx PDU Group 和 DM PDU Group。因此,Rx Rule 被触发后,报文接收和 DM 超时监控会一起开启。
c
BswM_SetIpduGroup(
ComConf_ComIPduGroup_XB_SUP_F_oDBCNetWork_Rx_2e39ec3a,
TRUE);
BswM_SetIpduDMGroup(
ComConf_ComIPduGroup_XB_SUP_F_oDBCNetWork_Rx_2e39ec3a,
TRUE);
BswM_SetIpduGroup(
ComConf_ComIPduGroup_ComIPduGroup_WithKL15,
TRUE);
BswM_SetIpduDMGroup(
ComConf_ComIPduGroup_ComIPduGroup_WithKL15,
TRUE);

2. Rx DM 规则的 Action List 配置为 Trigger
Rx DM 规则的 Action List 执行方式配置为 BSWM_TRIGGER。
规则表达式初始值为 FALSE。当 KL15 等前置条件未满足时,表达式结果仍为 FALSE,没有发生从 FALSE 到 TRUE 的变化,因此 Trigger 类型的 Action List 不会执行。

修复方案
将 DM 规则的 Action List 执行方式由 Trigger 改为 Condition,配置为周期监控。
这样,Action List 会根据表达式的当前结果持续执行;即使前置条件尚未满足,也可以执行对应操作,避免启动阶段 KL15 未接通时误触发 0x300 报文超时监控。