一、背景

在汽车电子系统的开发中,诊断功能是确保车辆安全和性能的重要组成部分。诊断服务允许技术人员通过诊断设备与车辆通信,读取故障代码、监控系统状态以及执行特定的操作命令。其中,19 0A服务请求是一种常见的诊断服务,用于报告车辆系统支持的DTC(故障诊断码)。

在一次实际项目中,我们的团队在处理19 0A服务请求时遇到了一个棘手的问题。客户报告说系统无法正确响应这一请求,并且返回了错误代码。这个问题不仅影响了车辆的诊断和维护工作,还可能导致车辆在出现故障时无法及时检测和修复,从而影响到车辆的安全和性能。

为了找出问题的根源,我们进行了详细的调试分析。经过一系列排查和测试,我们发现问题出在PDU(Protocol Data Unit)长度配置上。默认情况下,系统中配置的PDU长度为64字节,但实际诊断请求需要传输227字节的数据。这种不匹配导致系统在处理诊断请求时无法正确传输完整的数据,从而返回错误代码。

这个问题的解决不仅需要对AUTOSAR诊断配置的深入理解,还需要丰富的工程经验和系统调试能力。通过解决这个问题,我们积累了宝贵的经验,也为未来处理类似问题提供了重要的参考。

接下来,我们将详细介绍我们如何发现问题、分析问题并最终解决问题的全过程,希望这些经验能够为其他在汽车电子系统开发和诊断功能实现过程中遇到类似问题的工程师提供帮助和启示。

二、问题分析

初步调试

通过调试服务调用函数

Dcm_Prv_DspReadDTCInformation发现

DoIP_TpTransmit这里返回值异常

06-28 19:35