码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • UDS诊断系列介绍03-DCM


    本文框架

    • 前言
    • 1. 缩写
    • 2. 模块概述
    • 3. 功能实现
      • 3.1 DSL/DSD/DSP子模块
      • 3.2 Dcm实现逻辑
    • 4. Dcm配置

    前言

    本系列Autosar 诊断入门介绍,会详细介绍诊断相关基础知识,如您对诊断实战有更高需求,可参见诊断实战系列专栏,快速链接:Autosar诊断实战系列导读

    如您MCAL配置,通信,诊断Autosar全栈等实战有更高需求,可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶系列导读

    1. 缩写

    在进行介绍前,先简单罗列几个用到的缩写及全称方便后续理解。

    DCM:Diagnostic Communication Manager
    DEM:Diagnostic Event Manager
    UDS:Unified Diagnostic Services
    SID:Service Identifier
    DID: Data Identifier
    DSL:Diagnostic Session Layer
    DSD:Diagnostic Service Dispatcher
    DSP:Diagnostic Service Processing

    2. 模块概述

    DCM模块主要用来处理,外部测试人员或机载测试系统的诊断请求并将诊断状态信息传输回到诊断工具,如通过读DID获取车辆相关信息,通过读取故障码辅助维修人员进行故障定位等。

    诊断仪与DCM之间的交互示意图如下所示:
    在这里插入图片描述
    DCM实现了OSI七层模型的应用层,其在Autosar架构中位于BSW,通过PduR一组同用的接口进行保温传输,但并不感知底层网络具体的实现类型。

    在这里插入图片描述

    3. 功能实现

    3.1 DSL/DSD/DSP子模块

    DCM从功能逻辑上可进一步划分为DSL、DSD、DSP三个子模块,各子模块之间各自负责请求的接受、分发及处理,具体看:
    DSL:诊断会话层,负责与PduR交互,处理报文的传输,同时监控诊断的状态、请求及响应时序;

    DSD:诊断分发层,负责处理报文的统一校验及报文分发到内外部处理模块;

    DSP:诊断处理层,负责处理并联合用户执行具体的诊断请求。
    在这里插入图片描述

    3.2 Dcm实现逻辑

    以10服务的会话切换请求为例,对Dcm实现逻辑进行介绍:

    1)PduR会先调用Dcm_StartOfReception向Dcm模块请求buffer,确定当前可以用于接收的Buffer的大小用于计算传输层的BlockSize
    返回值类型可能有:
    BUFREQ_OK:连接被接受,可继续传输
    BUFREQ_E_NOT_OK:连接被拒绝;
    BUFREQ_E_OVFL:Buffer不足,接收终止。

    2)调用Dcm_CopyRxData(),用于接收I-PDU数据;

    3)PduR会调用**Dcm_TpRxIndication()**用于通知接收数据是否成功;

    4)Dcm中的DSL将会话请求发送至DSD;

    5)Dcm中的DSD对请求进行校验,校验通过后会进一步分发至DSP,并在DSP中进行处理;

    6)当I-PDU经过Tp模块发送完成后,PduR通过**Dcm_TpTxIndication()**接口可以确认数据发送是否成功。
    在这里插入图片描述

    4. Dcm配置

    后续在实战篇会专门开设基于Vector Davinci配置教程。
    在这里插入图片描述

  • 相关阅读:
    Aeraki Mesh正式成为CNCF沙箱项目,腾讯云携伙伴加速服务网格成熟商用
    细说react源码中的合成事件
    心链7 ----Redis的引入和实现以及缓存和定时任务应用
    LinkedList与链表
    【2. 操作系统—中断、异常、系统调用】
    Cron表达式_用于定时调度任务
    Nginx优化与防盗链
    SpringBoot+POI方式导出excel【加水印】
    PHP比较漏洞, 代码审计, 字符串数字, “0e“字符串, 布尔值比较, 极限值, switch比较, in_array比较
    正确理解 lowbit
  • 原文地址:https://blog.csdn.net/initiallizer/article/details/126431553
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号