Autosar之DCM模块

一、DCM介绍
DCM(Diagnostic Communication Manager)是AUTOSAR(汽车开放系统架构)基础软件BSW中服务层(Service Layer)的核心模块,其核心功能是为车辆电子控制单元(ECU)提供符合行业标准(如ISO 14229 UDS、ISO 15765 DoCAN、ISO 15031 OBD等)的诊断服务支持,为开发和生产阶段提供与诊断仪交互的诊断服务,如下图所示

在这里插入图片描述

Dcm模块实现依据ISO 14229-1和ISO 15031-5等标准规范中定义的UDS诊断和OBD诊断功能。在接收到一个诊断请求后,需要对诊断请求进行分析,包括请求的服务是否支持,寻址方式是否正确,会话级,安全级,长度,子服务等是否正确。
在这里插入图片描述

其主要功能包括:

诊断数据流
管理诊断状态(诊断会话状态和安全访问等级状态)
检查诊断服务的请求是否满足条件
DCM模块由三个子模块构成,分别是DSL(DiagnosticSession layer)、DSD(Diagnostic Service Dispatcher)、DSP(Diagnostic Service Processing),如下图所示,接下来将针对三个子模块功能进行讲解

在这里插入图片描述

二、诊断会话层(DSL)

DSL模块主要用于诊断请求的处理及诊断时序的控制,管理诊断状态(诊断会话和安全状态)等,具体存在几个功能如下:

处理诊断请求:收到请求时,PduR会调用Dcm_StartOfReception()和Dcm_CopyRxData()接口将诊断请求数据从下层的Buffer中Copy到DCM的接收Buffer中。PduR调用Dcm_TpRxIndication()接口通知Dcm模块接收到了新的诊断请求
处理诊断响应:当需要响应诊断请求时,DLS通过调用通过调用PduR_DcmTransimit()和Dcm_CopyTxData()接口,将数据传递至PduR中,其中PduR_DcmTransimit()接口只是传递长度信息、地址信息,数据是通过Dcm_CopyTxData()接口传递至PduR,当数据传输成功后,PduR通过调用Dcm_TpTxConfirmation()接口告知DCM数据接收成功。
管理安全等级:通过Dcm_GetSecurityLevel()和DslInternal_SetSecurityLevel()两个接口分别用于获取当前的安全等级和设置安全等级
在配置层面,DSL(Diag Session Layer)的配置参数主要包括以下几个方面:

诊断帧配置:涵盖物理寻址和功能寻址的设置
通信缓冲区配置:定义单次通信中允许的最大Buffer大小
时间参数配置:
回复0x78的时间设置
为防止诊断服务异常,允许0x78的最大次数。
这些参数的合理配置对于确保诊断通信的稳定性和可靠性至关重要

三、诊断分发层(DSD)

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

检查诊断服务:当诊断会话层(DSL)接收到新的诊断请求时,它会通过内部接口通知诊断服务调度器(DSD),如图所示。DSD 会调用 Dcm_GetSesCtrlType() 和 Dcm_GetSecurityLev

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94773.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HFSS许可证与版本兼容性

在电磁仿真领域,HFSS(High Frequency Structure Simulator)软件因其卓越的性能和广泛的应用而备受赞誉。然而,为了确保用户能够充分利用HFSS的功能并获得流畅的仿真体验,许可证与版本兼容性成为了不可忽视的重要因素。…

Java有几种文件拷贝方式,哪一种效率最高?

文章目录一、Java文件拷贝的5种方式1. 传统IO流(字节流/字符流)手动拷贝2. NIO的FileChannel拷贝(transferTo/transferFrom)3. Java 7的Files.copy()工具类4. 缓冲流(BufferedInputStream/BufferedOutputStream&#x…

【前端教程】JavaScript 基础总结

JavaScript 的三种使用方式 内部引入(常用)外部引入(一个 js 文件可以被多个页面共同使用)行内(少用) 区别: 内部引入只能够使用单页面外部引入可以应用到多个页面行内是直接在 HTML 标签内写&a…

学习-XMind 思维导图

XMind 是 2006 年诞生的思维导图软件,全球超 1 亿用户,能可视化呈现复杂信息,适用于学习、工作场景。它功能全(支持多图表结构)、易操作、颜值高、跨平台且安全,因此受青睐。其界面有菜单栏(含各…

Ubuntu下MySQL、MongoDB与Redis:从安装到协同的完整指南

目录 一、MySQL:稳定可靠的关系型数据库 1.1 安装与配置 1.2 性能优化实战 二、MongoDB:灵活的文档数据库 2.1 安装与配置 2.2 性能优化策略 三、Redis:高性能内存数据库 3.1 安装与配置 3.2 高级应用场景 四、协同实战&#xff1a…

【传奇开心果系列】Flet框架带图标带交互动画的办公用品费用占比统计饼图自定义模板

Flet带图标带交互动画的办公用品费用占比统计饼图自定义模板 一、效果展示GIF动图 二、应用场景介绍 三、 特色说明 四、小结 五、源码下载地址 一、效果展示GIF动图 二、应用场景介绍 该应用是一个基于 Flet 框架开发的交互式办公用品费用占比统计饼图。适用于以下场景: 企业…

docker镜像在containerd为底座的k8s中使用

docker镜像和container镜像为什么不能直接共通 Docker 镜像和 containerd 镜像本质上格式兼容(都遵循 OCI 镜像规范),但默认情况下 “不能互相识别”,核心原因是存储位置、命名空间和工具链的隔离,而非镜像格式本身的差…

Java-反射机制

在 Java 编程中,“反射” 是一个贯穿基础与进阶的核心概念,它允许程序在运行时动态获取类的结构、调用方法、操作属性,甚至创建对象 —— 无需在编译期明确知道类的具体信息。一、反射是什么?首先明确一个关键定义:Jav…

ARM相关的基础概念和寄存器

目录 1、机器码 2、汇编指令 3、汇编指令集 4、架构 5、内核(CPU中的核心) 6、处理器 7、复杂指令集和精简指令集 7.1复杂指令集 7.2精简指令集 7.3修改 8、内核中的寄存器阻值 8.1溜达存储类型 8.2、AMR处理器(内核&#xff09…

PPT处理控件Aspose.Slides教程:在 C# 中将 PPTX 转换为 Markdown

将您的PowerPoint幻灯片转换为Markdown格式,使其兼容 AI 技术。在这个人工智能驱动的时代,GPT和Claude等大模型能够读取和生成基于 Markdown 的内容。此外,Markdown 还可用于博客文章和文档。因此,作为一名 .NET 开发人员&#xf…

Python 多进程(multiprocessing)

文章目录1. 多进程概述1.1. 多进程的概念1.2. 多进程注意事项2. 进程调用方式2.1. Process 类2.1.1. 构造方法2.1.2. 实例方法2.1.3. 属性2.2. 面向过程2.3. 面向对象3. 进程间通讯3.1. Queues3.2. Pipes3.3. Managers(进行共享数据)4. 进程同步5. 进程池…

推荐系统王树森(五)重排多样性提升

重排01:物品相似性的度量、提升多样性的方法_哔哩哔哩_bilibili github-PPT 前面的讨论中提到 在链路的最后进行重排,重排要插入广告和运营笔记,还要做规则打散,提高推荐的丰富性,比如说一个人特别爱看足球&#xff…

Axios多实例封装

Axios多实例封装方案 我将为您提供一个完整的Axios多实例封装方案,包含基础封装、多实例管理和使用示例。 设计思路 创建基础axios实例封装,支持请求/响应拦截器实现多实例管理器,支持不同API端点配置提供统一的错误处理机制支持请求取消功…

为量化从业者提供免费稳定的股票数据源:免费股票数据API获取实时数据、历史数据与技术指标(含多语言代码指南)实例代码演示与API文档说明

​ 近年来,股票量化分析因其科学、系统的研究方法,日益成为市场热点。而进入这一领域的首要步骤,正是获取全面、准确的股票数据——无论是实时交易行情、历史走势记录,还是企业财务与基本面信息,都是支撑量化策略的核心…

[Sync_ai_vid] UNet模型 | 音频特征提取器(Whisper)

第2章:LatentSync UNet模型 在第1章:唇形同步推理流程中,我们了解到唇形同步推理流程如同电影导演,协调各"专家模块"生成完美唇形同步视频。 本章将深入解析这个"工作室"中最核心的专家——LatentSync UNet…

工业级TF卡NAND + 北京君正 + Rk瑞芯微的应用

目录前言一:操作CS创世 SD NAND的常用命令1.查看SD设备2.挂载分区3.卸载分区4.分区管理5.格式化分区6.简单读写二:SD底层协议简要介绍三:对CS创世 SD NAND进行读写操作的三大方式1. 使用dd命令2. 使用块设备的标准接口3. 使用ioctl产生系统调…

深入解析Java并发编程与单例模式

目录 一、调度(四) 1.随机调度大环境 二、锁(二) 1.位置 2.无锁阻塞 3.重入锁 4.连续锁 4.1措施 三、线程方法(二) 1.wait 2.notify 3.wait-notify指位后移 3.1可能时再检查 3.1.1join(二) 3.1.1.1可能时再检查死亡 四、单例模式 1.实现 1.1private构造器 1…

java通过redis简单实现分布式锁

目录 一、简介 二、代码实现 1、maven添加依赖 2、核心逻辑代码 3、使用方式 三、总结 一、简介 我们知道在Java中可以通过关键字synchronized来防止并发引起的问题,而分布式中就需要考虑分布式锁了,今天来讲一个比较简单的实现,通过re…

网络编程--TCP/UDP Socket套接字

网络编程 程序员主要操作应用层和传输层来实现网络编程,也就是自己写一个程序,让这个程序可以使用网络来通信,这个程序属于应用层,实现通讯就需要获取到传输层提供的服务 这就需要使用传输层提供的api UDP: 无连接,不可…

claude-code订阅方案

Claude Code 订阅方案对比 编写日期:2025 年 08 月 20 日 🏷️ 专业版 Pro ($20/月,$200/年) 主要特性 可用模型:Claude Sonnet 4(Claude Opus 4成本太高,谨慎选择)适用场景:适合轻度…