问题描述
测试提了个bug,说DTC错误状态异常。应该是0x2B的时候,变成了0x23。应该是0x2A的时候,变成了0x22。应该是0x28的时候,变成了0x20。
问题分析
结合上面的几个现象,都有一个共同特点------确认错误位未置起。分析当前错误和确认错误之间的关系,没有滤波直接产生确认故障,这俩应该要同时置起的。对比了手写代码和配置,跟其他DTC都是同样的逻辑,没有太大的区别。并且在我的开发环境当中,没能把问题复现出来。
问题结论
跟测试同学拿到了测试DTC的脚本,发现测试同学写的脚本在几乎同一时间触发了非常多的DTC。DTC的相关信息是需要存储到NVM当中的,但是NVM的位置有限,只能够让确认故障的DTC存储进去,新产生的DTC因为无法存储进去,就会把确认错误位清掉。