Bootstrap

AUTOSAR&UDS 理论要点及isolar实战

1.AUTOSAR 诊断模块梳理

1.1UDS 诊断框架说明

AUTOSAR 中诊断模块的核心是 DCM, DEM 两个模块。同时与诊断功能强关联的其他 BSW 模块包括通讯模块( PduR, CAN/Eth... )、 FiM 模块(发生故障时功能禁止)、NvM 模块(存储 DTC DID 等数据)等。其基本架构如下图所示:

1.2 DCM 模块

DCM 模块包含三个子模块:
1 Diagnostic Session Layer (DSL) :处理诊断请求和诊断响应数据,并且对诊断的时序进行监控。
2 Diagnostic Service Dispatcher (DSD) :处理诊断数据流。
3 Diagnostic Service Processing (DSP) :分发不同的诊断服务请求。
AUTOSAR 配置中,可以看到, DSL 模块配置项主要与 PduR 交互的数据相关。 DSD 模块主要是配置 UDS 服务( service )。 DSP 主要配置诊断模式管理、DID 等相关项。
具体功能如下所示:

1.2.1 DSL(Diagnostic Session Layer)

DSL 位于 Dcm 的链路层中,主要功能如下:
1. 负责接收诊断请求和发送诊断请求,收到诊断请求后,将请求发送给 DSD 模块进行诊断请求分发。
2. 负责配置 Dcm 接收和发送数据的缓存,用于存储接收的诊断消息和发送的响应消息。
3. 需要配置关联的 ComM 通道信息,当收到诊断消息时,需要通知 ComM 开启此通道;如果诊断仪在线超时,则需要通知 ComM 关闭此通道。
4. 对于 DSL 的协议连接,支持关联主连接和周期性发送的连接。对于主连接,支持配置功能寻址和物理寻址的通道。对于 0x2A 服务, DSL 支持配置周期性发送的连接。

1.2.2 DSD(Diagnostic Service Dispatcher)

DSD 位于 Dcm 的服务转发层,包含如下功能:
1. 当接收到诊断请求后,需要实现功能:
(1) 检查服务和子服务是否支持,如果服务不支持,则返回错误码 NRC11 ;如果子服务不支持,则返回错误码 NRC12
(2) 诊断会话的验证:在收到服务请求时,检查请求的服务或子服务是否在当前会话下支持,如果服务不支持,则返回错误码 NRC7F ;如果子服务不支持,则返回错误码 NRC7E
(3) 安全等级的验证:在收到服务请求时,检查请求的服务是否在当前安全模式下支持,如果不支持,则返回错误码 NRC33
(4) 格式校验:最小的消息长度检查,如果错误,则返回错误码 NRC13
(5) 分发诊断服务到 DSP :如果如上检查合法,则 DSD 会调用相应的 DSP 服务处理单元。
(6) 回复肯定 / 否定响应消息:当 DSP 子模块完成了诊断服务的处理后, DSD 子模块会回复响应消息,填 充的消息类型有如下三种:Positive Response( 肯定响应 ) Negative Response( 否定响应 ) Suppression of response(抑制肯定响应 ) 抑制肯定响(“SuppressPosRspMsgIndicationBit”)是子功能参数的一部分, 位于子服务所在字节的 bit7 位,如果该位为 1,DSD 不会发送肯定响应消息。 该位只有服务具有子功 能时才可用。
2. DSD 的周期性任务中,检查如下事件:
(1) 如果诊断仪在线超时,则会执行切换默认会话操作,释放当前 Dcm 占用的资源,通知 ComM 释放网 络。
(2) 如果存在发送请求,停止 Pending 消息发送,并调用 PudR 接口,将数据发送。
(3) 如果某些任务需要拆分为多个 Dcm 周期执行,则会触发周期性调用事件,需要在 DSD 的周期性函数中处理。

1.3.3 DSPDiagnostic Service Processing

DSP 位于 Dcm 的服务层,用于实现不同服务的处理,当接收到 DSD 请求处理诊断服务, DSP 的处理 过程如下:
1 .分析接收的请求信息,调用不同的诊断服务函数;
2 .检查格式以及是否支持所寻址的子功能;
3 .获取数据或者调用 Dem SWC(Software Component) 或者其他 BSW(Basic Software) 模块的接口。比 如 0x22 0x2E 服务需要调用 SWC (应用层) 的数据接口进行读写; 0x28 服务需要调用 BswM 的接口实现关闭不同 CAN 网络的功能(禁言); 0x19 服务需要调用 Dem 模块获取快照数据和扩展数据。(故障码)
DCM 子模块交互示意图
DSD 配置项

DSL 配置项

 DSP配置项

具体配置和服务讲解后续会继续更新! 

;