概述
AUTOSAR的DCM模块是诊断通讯模块,只要遵循的协议就是ISO 14229-1,包括UDS会话层和应用层,对底层通讯协议没有要求,可以是CAN、Lin或以太网(DoIP)等。
DCM模块里面主要有三个子模块:DSL、DSD和DSP:
DSL-Diagnostic Session Layer
诊断会话层主要有以下三个作用:
处理诊断请求和响应数据流。
管理诊断状态(会话状态和安全状态)。
管理时间参数。
DSD-Diagnostic Service Dispatcher
诊断服务调度程序是 DSL 和 DSP 之间的桥梁,处理 DSL 的诊断请求数据,经过处理后调用 DSP 中的处理程序;将 DSP 处理完成后发送的响应数据传递给 DSL。
DSP-Diagnostic Service Processor
诊断服务处理程序,包含每个诊断服务具体的处理函数。如0x10服务、0x11服务的具体实现函数都是在这个模块里。
三个模块之间的交互关系如下图所示:
DSL层负责接收和发送诊断报文,并将诊断数据或发送结果传递给DSD层,同时还会维护诊断会话、安全等级等诊断状态;DSD层接收到DSL发送的诊断请求后,会进行初步判断和处理,分配给每个诊断服务,然后调用DSP中的诊断服务处理函数进行诊断处理;DSP中的诊断处理函数在执行过程中可能会控制诊断会话或安全访问状态,所以又会通过接口函数来控制DSL层的状态。