AUTOSAR 通信服务-Dcm子模块DSD详解

汽车安全 3年前 (2021) admin
1,308 0 0


前言

AUTOSAR Dcm模块的分享分为Dcm模块概念详解和Dcm模块配置及代码分析,具体的项目实战请关注本号的后续文章,本篇为Dcm模块下的DSD子模块概念详解篇

AUTOSAR 通信服务-Dcm概念及DSL详解

AUTOSAR 通信服务-Dcm子模块DSD详解

正文

3.3 诊断服务调度层(DSD)

3.3.1 DSD功能概述

DSD模块主要用于诊断服务的分配、服务执行环境及条件,会从接收的数据识别请求的服务类型(0x10、0x27、0x22),主要功能:

1)检查诊断服务:用于检查诊断服务执行的条件,如当前会话模式、诊断服务是否支持、安全访问等级。当判断条件不支持是会相应0x7F和具体的NRC否定响应码,通过后会由上一层处理服务(具体处理也可以给出否定响应)

2)汇总响应数据:将判断得到的响应数据或者由DSP发送的响应数据发送给DSL,由DSL向外发送数据

 

3.3.2 使用场景

1)接收诊断请求信息传输积极响应信息

DSD模块接收到诊断请求信息后会校验其有效性(session, security)。这种场景下,数据都是有效的,同时会反馈积极响应。DSD模块会将数据传递给DSP子模块下对于的服务处理器。当DSP子模块下的服务处理器完成了数据处理后会触发DSD模块传输积极响应信息。

 

如果数据处理器将服务作为请求指示函数的一部分立即处理,则数据处理器可以在此指示函数(“同步”)中触发传输。如果处理需要较长的时间(例如等待EEPROM驱动程序),则数据处理器将延迟某些处理(“异步”)。DSL子模块包含响应挂起机制。数据处理器显式地触发传输,但是从数据处理器的上下文中触发的。

 

一旦接收到请求消息,相应的DcmPduId就会被DSL子模块阻塞。在此请求的处理过程中,不能再接收其他相同协议类型的请求(例如,增强的会话可以通过OBD会话结束),直到发送相应的响应消息,并再次释放DcmPduId。

 

2)接收诊断请求信息抑制积极响应

这是前一个用例的子用例。在UDS协议中,可以通过在请求消息中设置一个特殊的位来抑制正响应。这种特殊的抑制处理完全在DSD子模块中执行。

 

3)接收诊断请求信息抑制否定响应

功能寻址的场景下,DSD模块将抑制否定响应码为0x11,0x12,0x31,0x7E的否定响应。

 

4)接收诊断请求信息传输否定响应信息

拒绝请求消息并发送否定响应有许多不同的原因。如果诊断请求无效,或者请求在当前会话中不能执行,DSD子模块将拒绝处理,并返回一个否定响应。

 

有许多理由拒绝执行一个格式符合的请求message,例如,如果ECU或系统状态不允许执行。在这种情况下,DSP子模块将触发一个消极的响应,包括NRC提供额外的信息,也就是否定响应的原因。

 

对于由多个参数组成的请求(例如,一个UDS Service ReadDataByIdentifier (0x22)请求有多个需要读取的标识符),每个参数被单独处理。每个参数都可能返回一个错误。如果至少一个参数被成功处理,这种请求将返回一个正响应。

 

5)没有接收诊断请求发送积极响应

UDS协议中包含两个服务,一个请求发送多个响应。通常,一个服务用于启用(和禁用)另一个服务的事件或时间触发传输,ECU在没有相应请求的情况下再次发送该服务。这些服务包括:

. 0x2A服务,周期传输诊断响应服务。

. 0x86服务,基于事件触发的响应服务。

 

6)分段响应

在诊断协议中,一些服务允许交换大量的数据,例如UDS Service ReadDTCInformation (0x19)和UDS Service TransferData (0x36)。

 

在传统的方法中,ECU内部缓冲区必须足够大,以保存最长的数据消息要交换(最坏的情况),并在传输开始之前填充完整的缓冲区。

 

ECU中的RAM内存通常是一个关键的资源,特别是在较小的微型计算机中。在一种更节省内存的方法中,只填充部分缓冲区,传输部分缓冲区,然后再填充部分缓冲区,以此类推。这种分页机制只需要大幅减少的内存量,但需要定义良好的缓冲填充反应时间。

用户可以决定是否使用“线性缓冲区”或页面缓冲区进行诊断。

 

3.3.3 DSD模块和其他模块的交互

DSL模块接收到诊断数据后,DSD模块的服务就会被调用,DSD模块将会执行以下的操作:

1)委托DSP子模块或Dcm 外的外部模块处理请求。

2)跟踪请求处理。

3)将应用程序的响应发送给DSL子模块

 

AUTOSAR 通信服务-Dcm子模块DSD详解

 

AUTOSAR 通信服务-Dcm子模块DSD详解


3.3.4 DSD模块功能描述

3.3.4.1 检查诊断服务标识符

DSL接收到诊断信息后触发DSD模块去校验诊断信息ID的有效性。DCM模块可以配置当前ECU支持多个诊断ID,不过一般情况下,一个ECU仅支持一个物理寻址ID和一个功能寻址ID,如果收到的诊断信息中的ID信息不是ECU配置好的物理/功能寻址ID,则DCM返回否定响应码NRC:0x11。

 

3.3.4.2 处理正响应抑制响应位

诊断报文的第二个字节的bit7如果置位1(suppressPosRspMsgIndicationBit = TRUE),DSD模块不用发送积极正响应(抑制正响应)。

 

3.3.4.3 校验功能

DSD模块将会对一个诊断请求做一下6个方面的校验,如果全都通过了才会继续处理诊断请求,否则返回对应的否定响应码。

1)制造商许可的校验。实际项目中基本没有这个校验。

2)SID的校验。服务ID的校验,也就是是否支持当前接收到的诊断ID。

3)诊断会话校验。在诊断配置阶段,会预先定义每个诊断请求在什么会话下才支持。测试时,只有在支持的诊断会话下才会积极响应对应的诊断请求,否则返回NRC:0x7E的否定响应码。所以在诊断请求前,可以先通过0x10服务将诊断会话切换到需要的会话状态,同时通过0x3E服务维持诊断会话。

4)安全访问等级的校验。在诊断配置阶段,会预先定义每个诊断请求在安全等级下才支持。测试时,只有在支持的安全等级下才会积极响应对应的诊断请求,否则返回NRC:0x33的否定响应码。所以在诊断请求前,可以先通过0x27服务将安全等级切换到需要的安全等级。

5)供应商许可的校验。实际项目中基本没有这个校验。

6)服务ID的模式规则状态校验。如果DcmDSD模块引用的DcmDsdSidTabModeRuleRef模式规则不支持当前诊断ID服务或其子服务,则返回否定响应码。

 

3.3.4.4 检查格式及是否支持子服务

DSD模块将会检查接收到的诊断信息的长度是否大于配置的最小长度,不满足则返回否定响应码NRC:0x13。DSD模块将会检查诊断信息的子服务是否支持,如果不支持则返回否定响应码NRC:0x12。

 

3.3.4.5 将诊断消息分发到DSP子模块

DSD子模块应为新接收的诊断服务标识符搜索DSP子模块的可执行功能,并调用相应的DSP服务解释器。

 

3.3.4.6 组装积极或者消极响应

当DSP子模块完成了重新请求的诊断服务的执行时,DSD子模块将组装响应消息。

3.3.4.7 开始传输诊断响应

DCM模块完成诊断操作后,DSD模块通过调用PduR模块的信息发送接口将诊断响应(积极响应或者否定响应)发送出去。

 

DSL子模块应将收到的来自PduR模块的确认转发给DSD子模块。

 

DSD子模块应通过内部函数DspInternal_DcmConfirmation()将确认转发给DSP子模块。

 

在没有发送诊断(响应)消息(抑制响应)的情况下,DSL子模块不发送任何响应。在这种情况下,没有数据确认从DSL子模块发送到DSD子模块,但DSD子模块仍将调用内部函数DspInternal_DcmConfirmation()。

 

如果Dcm已经完全处理了请求,DSD子模块应该通过调用DspInternal_DcmConfirmation()来完成诊断tic服务调度程序的一条诊断消息的处理。

 

DSP子模块正在等待DspInternal_DcmConfirmation()功能的执行。所以它必须被发送,也是在没有数据确认提供。总之,这意味着在下列任何情况下:

.积极响应

.否定响应

.抑制积极响应

.抑制否定响应

DSD子模块将通过调用DspInternal_DcmConfirmation()来完成。


推荐阅读

Autosar架构下的模块详细设计及代码实现–基于配置的编程方法

AUTOSAR 通信服务-CanSM概念详解

AUTOSAR BswM(3)代码分析

AUTOSAR 通信服务-ComM配置及代码分析

AUTOSAR 通信服务-PDU Router

AUTOSAR CAN通信协议栈分析(2)-CanIf

Can通信协议栈分析(1)-Can Driver

Lin通信协议栈分析(2)-LIN Driver

C语言编程技巧(1)-表驱动法

CANoe工具使用(1)-实现CAN通道的收、发、录、回放报文

S32K平台学习(1)-S32K144启动流程分析

End




欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信扫描二维码,关注我的公众号

原文始发于微信公众号(汽车电子嵌入式):AUTOSAR 通信服务-Dcm子模块DSD详解

版权声明:admin 发表于 2021年12月7日 下午11:00。
转载请注明:AUTOSAR 通信服务-Dcm子模块DSD详解 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...