【AutoSar】汽车诊断标准协议UDS详解

目录

  • 一、基本概念
  • 二、UDS诊断协议
    • 2.1 诊断服务的概念
    • 2.2常用的诊断服务
      • 2.2.1 诊断会话控制服务(10服务)
      • 2.2.2 会话访问0x27服务
      • 2.2.3 用于读写的DID的0x22/0x2E服务

一、基本概念

车辆的诊断需要有Tester端和ECU段通过应答的方式进行通信,他们使用同一协议进行诊断通信,比如ISO 14229协议就是UDS协议。在协议里定义了诊断需求、诊断响应的报文格式等等。下图描述了UDS在OSI七层模型中的应用。我们可以看到UDS可以建立在CAN网络上,也可以建立在FlexRay或者以太网上。

在这里插入图片描述

二、UDS诊断协议

2.1 诊断服务的概念

诊断服务的基本概念是:请求是由Tester发给ECU的,其中请求报文中带有SID(Services Identifier),根据具体的服务内容和含义后增加具体的数据。Tester会发送SID给到ECU,而ECU的响应报文也很有意思:肯定报文会在SID的基础上加40后返回;而否定报文则固定式7F,然后加上SID后加上NRC(Negative Response Code)。常用的NRC有:

  • 11表示服务不支持;
  • 12 subfunction不支持;
  • 13 请求的长度不正确,或者格式不正确
  • 31 是请求超出范围;
  • 7E 是在当前会话下subfunction不支持
  • 7F 是在当前会话下服务不支持
    在这里插入图片描述
    在请求报文的SID后面,紧跟的有两种情况,第一种是紧跟一个Subfunction,此时一个请求报文的格式就是SID+Subfunction+具体内容,而对应的肯定响应报文就是(SID+40)+Subfunction+具体内容。而部分UDS是不支持Subfunction的,则会使用DID(Diagnosis ID),其请求报文的格式是SID+DID+内容,肯定响应报文则睡觉哦(SID+40)+DID+具体内容

在这里插入图片描述
在支持Subfunction的UDS中,规定Subfunction的最高位为响应抑制位,当这个位为1的我时候,就会抑制肯定响应,也就是ECU将不会发送肯定报文,当然,否定报文还是会发送的。

ECU是很繁忙的,有时候ECU在忙更高优先级的事情,来不及响应UDS请求怎么办。答案就是使用Pending报文。当ECU收到请求但是无暇响应的时候,将会在规定的P2Server时间内给出一个NRC为78的Pending报文,表示正忙,如果ECU还是没时间回复,则会在规定的P2Server/*时间内继续发送Pending报文,直到可以回复响应报文。
在这里插入图片描述

2.2常用的诊断服务

诊断服务通过SID区分,常用的诊断服务包括:10会话控制、14清除诊断信息、22通过DID读取数据、27安全界所服务、2E通过DID写入数据

2.2.1 诊断会话控制服务(10服务)

ECU会有不同的会话控制,比如说ECU在开发、生产、售后阶段会使用不同的会话,每个会话能够使用的服务类型也不尽相同,因此10服务主要是用于会话控制。比如说刷写相关的34,36,37服务,在默认会话下是不支持的,这也很好理解:当车辆完成生产之后我们不能随便对ECU进行刷写
在这里插入图片描述
肯定响应不再赘述,主要是否定响应,10服务下的否定响应有3中NRC:7F, 7E, 31

当ECU发现发来的UDS报文的SID是当前会话下不支持的服务,则会发送7F这个NRC,比如在Default Session下尝试使用34、36、37服务进行刷包。

此外还有一个7E NRC,表示的是当前会话下Subfunction不支持。比如说10 02服务表示跳转到编程会话(SID:10, Subfunction: 02),但是ECU只支持从扩展会话跳转到编程会话,如果此时位于默认会话下执行10 02服务则会返回7E NRC,表示虽然我支持10服务,但是02子服务在当前会话下不支持。

还有NRC 31,NRC 31常用的用法是请求超出范围,比如说22服务,发送的DID,是ECU不支持的,比如说发送的请求22 01 01 ,因为ECU不支持01 01这个DID,会发送NRC 31的否定响应

刚才顺带也介绍了ECU的三个会话,其实ECU还有不少其他会话,具体和厂家标定有关,但是答题可以分为默认会话和非默认会话。刚上电的时候处于默认会话,然后此时我们可以通过10服务来切换会话,比如10 03切换为编程会话。当ECU处于非默认会话的时候,会有一个计时器S3 time,当这个计时器超时后,会自动从非默认会话切换到默认会话。为了保持非默认会话状态,Tester端需要周期发送3E服务(Tester Present),让ECU一直保持在非默认会话。

2.2.2 会话访问0x27服务

常用的一些服务,比如说22/2E之类的需要和ECU交换数据的,都会影响一些内存里的数据,所以这些服务是一个被保护的服务。这些服务只有在ECU处于解锁状态下才能执行,而ECU上电默认是锁定状态的,Tester端和ECU端进行27解锁服务之后,ECU才能够处于解锁状态。

首先由Tester端给ECU发送请求报文来请求种子,ECU收到这个报文后,回复肯定响应,肯定响应里带有种子数;Tester端收到这个种子数,根据自己安全算法算出来一个K1发送给ECU,ECU也有自己对应的安全算法,他由这个Seed算出来一个密钥K2,当ECU收到这个K1后和自身计算的K2进行比较,如果两者是一致的,那么ECU发送肯定响应给Tester端,告诉Tester端ECU已经解锁。
在这里插入图片描述
一个ECU可以同时拥有多个安全等级,多个安全等级之间可以是相互独立的,也可以是有依赖关系的,比如说要求先解锁安全等级1才能解锁安全等级2。当ECU处于解锁状态的时候Tester端再去请求种子的时候,回复的种子全为0。
在这里插入图片描述
请求种子的响应报文是27+01,肯定响应则是67+01+四字节种子。当Tester端计算得到密钥之后,则会使用27+02+4字节密钥发送给ECU,ECU对比自己的密钥和收到的密钥之后,会给Tester发送67+02,表示认证通过,ECU处于解锁状态。

2.2.3 用于读写的DID的0x22/0x2E服务

22服务用于根据DID读内容,请其格式是”22+两个字节的DID“,肯定格式是"62+DID+所读取的数据"。比如说DID为F1 86的时候代表读取当前诊断会话状态
在这里插入图片描述
具体在22中会使用到的DID以及对应功能在14229-1 2013的附录C中有写,可以去看看这个附录C
在这里插入图片描述
此外22服务的否定报文中带有NRC,其中13是格式不正确,14是读取的数据超过了传输最大值,31是请求的DID不支持,33则表示ECU未解锁。

2E是根据DID写入内容,基本流程都一样

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java线程认识和Object的一些方法

本文目标: 要对Java线程有整体了解,深入认识到里面的一些方法和Object对象方法的区别。认识到Java对象的ObjectMonitor,这有助于后面的Synchronized和锁的认识。利用Synchronized wait/notify 完成一道经典的多线程题目:实现ABC…

【漫话机器学习系列】067.希腊字母(greek letters)-写法、名称、读法和常见用途

希腊字母(Greek Letters) 希腊字母在数学、科学、工程学和编程中广泛使用,常用于表示变量、常量、参数、角度等。以下是希腊字母的完整列表及其常见用途。 大写与小写希腊字母表 大写小写名称(英文)名称(…

【Block总结】OutlookAttention注意力,捕捉细节和局部特征|即插即用

论文信息 标题: VOLO: Vision Outlooker for Visual Recognition作者: Li Yuan, Qibin Hou, Zihang Jiang, Jiashi Feng, Shuicheng Yan代码链接: https://github.com/sail-sg/volo论文链接: https://arxiv.org/pdf/2106.13112 创新点 前景注意力机制: VOLO引入了一种称为“…

Linux Samba 低版本漏洞(远程控制)复现与剖析

目录 前言 漏洞介绍 漏洞原理 产生条件 漏洞影响 防御措施 复现过程 结语 前言 在网络安全的复杂生态中,系统漏洞的探索与防范始终是保障数字世界安全稳定运行的关键所在。Linux Samba 作为一款在网络共享服务领域应用极为广泛的软件,其低版本中…

hive:基本数据类型,关于表和列语法

基本数据类型 Hive 的数据类型分为基本数据类型和复杂数据类型 加粗的是常用数据类型 BOOLEAN出现ture和false外的其他值会变成NULL值 没有number,decimal类似number 如果输入的数据不符合数据类型, 映射时会变成NULL, 但是数据本身并没有被修改 创建表 创建表的本质其实就是在…

Elasticsearch的开发工具(Dev Tools)

目录 说明1. **Console**2. **Search Profiler**3. **Grok Debugger**4. **Painless Lab**总结 说明 Elasticsearch的开发工具(Dev Tools)在Kibana中提供了多种功能强大的工具,用于调试、优化和测试Elasticsearch查询和脚本。以下是关于Cons…

Qt中Widget及其子类的相对位置移动

Qt中Widget及其子类的相对位置移动 最后更新日期:2025.01.25 下面让我们开始今天的主题… 一、开启篇 提出问题:请看上图,我们想要实现的效果是控件黄色的Widge(m_infobarWidget)t随着可视化窗口(m_glWidge…

【Unity3D】实现横版2D游戏——攀爬绳索(简易版)

目录 GeneRope.cs 场景绳索生成类 HeroColliderController.cs 控制角色与单向平台是否忽略碰撞 HeroClampController.cs 控制角色攀爬 OnTriggerEnter2D方法 OnTriggerStay2D方法 OnTriggerExit2D方法 Update方法 开始攀爬 结束攀爬 Sensor_HeroKnight.cs 角色触发器…

docker搭建redis集群(三主三从)

本篇文章不包含理论解释,直接开始集群(三主三从)搭建 环境 centos7 docker 26.1.4 redis latest (7.4.2) 服务器搭建以及环境配置 请查看本系列前几篇博客 默认已搭建好三个虚拟机并安装配置好docker 相关博客&#xf…

物联网智能项目之——智能家居项目的实现!

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于物联网智能项目之——智能家居项目…

Deep Seek R1本地化部署

目录 说明 一、下载ollama 二、在ollama官网下载模型 三、使用 后记 说明 操作系统:win10 使用工具:ollama 一、下载ollama 从官网下载ollama: ollama默认安装在C盘,具体位置为C:\Users\用户名\AppData\Local\Programs\O…

跟李沐学AI:视频生成类论文精读(Movie Gen、HunyuanVideo)

Movie Gen:A Cast of Media Foundation Models 简介 Movie Gen是Meta公司提出的一系列内容生成模型,包含了 3.2.1 预训练数据 Movie Gen采用大约 100M 的视频-文本对和 1B 的图片-文本对进行预训练。 图片-文本对的预训练流程与Meta提出的 Emu: Enh…

Java---入门基础篇(上)

前言 本片文章主要讲了刚学Java的一些基础内容,例如注释,标识符,数据类型和变量,运算符,还有逻辑控制等,记录的很详细,带你从简单的知识点再到练习题.如果学习了c语言的小伙伴会发现,这篇文章的内容和c语言大致相同. 而在下一篇文章里,我会讲解方法和数组的使用,也是Java中基础…

3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...

三、 实现; 三.三、编写应用程序; 此文主要是实现应用的主要编码工作。 1、 分层; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示;Helper主要是链接UI和数据库操作的中间层;DAL为对数据库的操…

Go学习:类型转换需注意的点 以及 类型别名

目录 1. 类型转换 2. 类型别名 1. 类型转换 在从前的学习中,知道布尔bool类型变量只有两种值true或false,C/C、Python、JAVA等编程语言中,如果将布尔类型bool变量转换为整型int变量,通常采用 “0为假,非0为真”的方…

爬虫基础(四)线程 和 进程 及相关知识点

目录 一、线程和进程 (1)进程 (2)线程 (3)区别 二、串行、并发、并行 (1)串行 (2)并行 (3)并发 三、爬虫中的线程和进程 &am…

V103开发笔记1-20250113

2025-01-13 一、应用方向分析 应用项目: PCBFLY无人机项目(包括飞控和手持遥控器); 分析移植项目,应用外设资源包括: GPIO, PWM,USART,GPIO模拟I2C/SPI, ADC,DMA,USB等; 二、移植项目的基本…

AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%

“AAPM: Large Language Model Agent-based Asset Pricing Models” 论文地址:https://arxiv.org/pdf/2409.17266v1 Github地址:https://github.com/chengjunyan1/AAPM 摘要 这篇文章介绍了一种利用LLM代理的资产定价模型(AAPM)…

新版231普通阿里滑块 自动化和逆向实现 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 补环境逆向 部分补环境 …

Autosar-Os是怎么运行的?(时间保护)

写在前面: 入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!! 1.功能概述 AUTOSAR OS 的四大可定制类型凸显了时间保护(Timing Protection)…