UDS诊断 10服务

文章目录

  • 简介
  • 诊断会话切换
  • 请求和响应
    • 1、请求
    • 2、子功能
    • 3、肯定响应
    • 4、否定响应
    • 5、特殊的NRC
  • 为什么划分不同会话
  • 报文示例
  • UDS中常用 NRC
  • 参考

简介

10服务,即 Diagnostic Session Control(诊断会话控制)服务用于启用服务器中的不同诊断会话,可以通过会话模式赋予不同诊断服务 不同的执行权限。

诊断会话切换

诊断会话转换以及服务器转换到另一个会话时其应做出哪些反应。

流程序号会话切换前会话切换后描述
1默认会话默认会话 服务器处于defaultSession(默认会话)状态时,若客户端要求启动defaultSession(默认会话),则服务器应完全重新初始化defaultSession(默认会话)。
激活的会话期间,服务器应重置所有已激活的/初始化的/更改过的设置/控制。这不包括已编程入非易失性存储器中的长期更改。
2默认会话默认会话 服务器从defaultSession(默认会话)转换为defaultSession(默认会话)外的其他会话时,服务器应仅停止已在defaultSession期间通过ResponseOnEvent(基于事件响应)(Ox86)服务在服务器中进行配置的事件(类似于stopResponseOnEvent(停止基于事件响应))。
3其他会话相同会话或其他会话 服务器从defaultSession(默认会话)外的诊断会话转换为非defaultSession(默认会话)的其他会话(包括当前有效诊断会话)时,则服务器应(重新)初始化诊断会话,这意味着:
i) 应停止通过ResponseOnEvent(基于事件响应)(Ox86)服务在服务器中进行配置的所有事件。
ii) 应重新锁定安全性。注意,锁定安全访问应重置依存于待解锁的安全访问的任何有效诊断功能(例如,DID的有效inputOutputControl(输入输出控制))。
iii) 应维护好新会话中支持的且不依存于安全访问的所有其他有效诊断功能。例如,从一个non-defaultSession(非默认会话)转换为另一个或相同的non-defaultSession时,任何已配置的周期性调度器应保持活动状态,且不得影响CommunicationControl(通信控制)和ControIDTCSetting(控制DTC设置)的状态,这意味着,切换会话时若正常通信为禁用,则其应保持禁用状态。
4其他会话默认会话 服务器从非默认会话的任何诊断会话转换为defaultSession(默认会话)时,服务器应停止通过ResponseOnEvent(基于事件响应)(0x86)服务在服务器中已配置的所有事件,且应启用安全性。应终止defaultSession(默认会话)中不支持的任何其他活动的诊断功能。
例如,应禁用任何已配置的周期性调度器或输出控制,且应重置CommunicationControl(通信控制)和ControIDTCSetting(控制DTC设置)服务的状态,这意味着,会话切换为defaultSession(默许会话)时,若正常通信为禁用,则应重新启用正常通信。激活的会话期间,服务器应重置所有已激活的/初始化的/更改过的设置/控制。这不包括已编程入非易失性存储器中的长期更改。

在这里插入图片描述

除了发送请求可以使Server 切换会话,如果您进入了一个非默认会话的状态,一个定时器会运转,如果一段时间内没有请求,那么到时间(S3Server)后,诊断退回到默认会话01(最低权限)。当然,我们有一个$3E的服务,可以使诊断保持在非默认的状态。

请求和响应

1、请求

基本格式

归纳起来,诊断的request格式无非以下两种:

<SID> + <Sub-function> + <Parameter>

<SID> + <Parameter>

即有无sub-function的区别。Parameter可以是DID,可以是输入参数,可以是自定义的值,字节数视具体要求而定。
在这里插入图片描述

2、子功能

子功能参数定义(1字节数据):

  • Bit7:抑制肯定响应消息指示位 suppressPosRspMsgIndicationBit
    • 0=False:需要肯定响应
    • 1=True:禁止肯定响应
  • Bit6-0:子功能参数值(0x00~0x7F)

在这里插入图片描述
在这里插入图片描述

3、肯定响应

基本格式:

<SID + 0x40> + <Sub-function> + <Parameter>

<SID + 0x40> + <Parameter>

要注意,第一个字节是由SID和0x40的和构成。这里的Parameter项是optional的,具体要看协议规定。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、否定响应

基本格式:

<0x7F> + <SID> + <NRC>

看起来比较简单,格式比较固定,只要是Negative Response,第一字节就是0x7F,第二字节照抄原来的SID,第三个字节是错误响应码,指示具体错误响应的原因

在这里插入图片描述

5、特殊的NRC

这里提一下一个特殊的NRC——0x78,requestCorrectlyReceived-ResponsePending(RCRRP,请求已被正确接收-回复待定)。

这个NRC表明请求消息被正确地接收,请求消息中的所有参数都是有效的,但是要执行的操作还没有完成,Server端还没有准备好接收另一个请求。一旦请求的服务已经完成,服务器应该发送一个积极的响应或消极的响应,响应代码应与此不同。这个NRC的消极响应可以被Server端重复,直到被请求的服务完成并且最终的响应消息被发送。

请添加图片描述

https://zhuanlan.zhihu.com/p/37310388?utm_source=com.alibaba.android.rimet

为什么划分不同会话

因为权限问题。默认会话权限最小,可操作的服务少;扩展模式通常用于解锁高权限诊断服务,例如写入数据/参数、读写诊断码;编程模式用于解锁bootloader相关的诊断服务,即程序烧录。

题外话,讲个故事。这三个会话模式好比普通项目成员(默认会话)、项目组长(扩展会话)和会计(编程会话)的关系,小职员权限最小,小职员有的权限项目组长全有,项目组长还多了些其他的高端权限(如写数据、例程控制)。会计则不同,它有些自己独有的权限(刷写程序),但项目组的很多权限它没有(读/擦故障码),因为它只干会计相关的事,本身不参与项目。

下图仅供参数:
在这里插入图片描述

报文示例

Tx / RxCan Data描述
Byte 7 - Byte 0
Tx02 10 02 XX XX XX XX XX 0:单帧
2:2个有效字节长度
10:10服务
02:编程会话
请求切换到编程会话
Rx06 50 02 00 32 01 F4 XX 0:单帧
6:6个有效字节长度
50:SID + 0x40
00 32:P2server_max = 50ms
01 F4:P2*Server_max = 5000ms
回复肯定响应,并且回复 P2server、P2*Server 时间参数

UDS中常用 NRC

在这里插入图片描述

参考

  • https://blog.csdn.net/wto9109/article/details/121345955
  • https://zhuanlan.zhihu.com/p/37310388?utm_source=com.alibaba.android.rimet
  • http://www.360doc.com/content/12/0121/07/30375878_1052846532.shtml

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

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

相关文章

(四) python门面模式

文章目录 4.1 结构型设计模式4.1.1 简介4.1.2 常见的几种结构型设计模式 4.2 理解门面设计模式4.2.1 门面设计模式概述4.2.2 门面设计模式的作用 4.3 UML类图4.3.1 门面4.3.2 系统4.3.3 客户端 4.4 门面模式的代码实现4.4.1 场景&#xff1a;4.4.2 python实现 4.5 原理&#xf…

Compose for iOS:kotlin 与 swift 互操作

前言 类似于 Android 上的 compose&#xff0c;在 iOS 上的 compose 同样支持嵌套显示 compose UI 和 swiftUI 或是 uikit 。 但是不同于 Android 原生就是使用 kotlin 作为开发语言&#xff0c;iOS 的开发语言是 swift 或者 object-c 。虽然大多数业务逻辑都可以直接使用 ko…

渲染(iOS渲染过程解析)

渲染 渲染原理 一个硬核硬件科普视频 CPU和GPU CPU&#xff08;Central Processing Unit&#xff09;&#xff1a;现代计算机整个系统的运算核心、控制核心&#xff0c;适合串行计算。GPU&#xff08;Graphics Processing Unit&#xff09;&#xff1a;可进行绘图运算工作的…

安防音频接口选型的高性能国产芯片分析

在人工智能兴起之后&#xff0c;安防市场就成为了其全球最大的市场&#xff0c;也是成功落地的最主要场景之一。对于安防应用而言&#xff0c;智慧摄像头、智慧交通、智慧城市等概念的不断涌现&#xff0c;对于芯片产业催生出海量需求。今天&#xff0c;我将为大家梳理GLOBALCH…

springboot_3.2_freemark_基础环境配置

springboot_3.2_freemark_基础环境配置 一、前言二、环境三、相关资料四、目标五、默认配置项六、构建springboot 3.2项目6.1 pom.xml 内容&#xff1a;6.2 启动类6.3 添加ftlh模板6.4 controller内容6.5 bootstrap.yml配置 七、总结 一、前言 FreeMarker 是一款模板引擎&…

Linux——缓冲区与实现C库的fopen,fwrite,fclose

目录 一.缓冲区 1缓冲区的概念 2.缓冲区存在的意义 3.缓冲区刷新策略 4.什么是刷新&#xff1f; C语言的缓冲区在哪里&#xff1f; ​编辑 仿写C库里的fopen&#xff0c;fclose&#xff0c;fwrite。 mystdio.h mystdio.c main.c(向文件中写入20次msg) 一.缓冲区 1…

b站pwn的学习总结

写的很乱 1.c语言的运行过程 了解了c语言需要经过以上2个过程&#xff08;编译和汇编&#xff09;&#xff0c;才能让机器按指令运行。机器只能听得懂机器码&#xff0c;所以要“汇编”。 那问题就来了&#xff0c;“编译”这个动作有啥用&#xff0c;c语言这种高级语言&…

玩转大数据10:深度学习与神经网络在大数据中的应用

目录 1. 引言&#xff1a;深度学习和神经网络在大数据中的重要性和应用场景 2. 深度学习的基本概念和架构 3. Java中的深度学习框架 3.1. Deeplearning4j框架介绍及Java编程模型 3.2. DL4J、Keras和TensorFlow的集成 4. 大数据与深度学习的结合 4.1. 大数据与深度学…

电脑端同时登录多个微信

1、建立一个txt文件 2、右击微信查看应用的属性&#xff0c;记录文件的位置 3、将步骤二得到的路径按照下方的格式输入到步骤一的文本中 4、保存之后将文本后缀名的.txt改成.bat 5、在未登录微信的情况下&#xff0c;双击即可得到两个微信登录窗口

Python高级算法——回溯法(Backtracking)

Python中的回溯法&#xff08;Backtracking&#xff09;&#xff1a;高级算法解析 回溯法是一种通过尝试所有可能的解来找到问题解的算法设计方法。它通常应用于组合问题、排列问题、子集问题等。在本文中&#xff0c;我们将深入讲解Python中的回溯法&#xff0c;包括基本概念…

解决oracle.sql.TIMESTAMP序列化转换失败问题 及 J2EE13Compliant原理

目录 报错现象报错内容处理方法Oracle驱动源码总结 报错现象 oracle表中存在TIMESTAMP类型的列时&#xff0c;jdbc查出来做序列化时报错 报错内容 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframewo…

x86和ARM中配置无线网SSID和PASSWORD

提供一个可行的方法 1.准备文件 hostapd.conf &#xff1a;是用户控件的守护进程用于无线接入点&#xff08;AP&#xff09;和授权服务器&#xff08;authentication servers)&#xff0c;存放路径&#xff1a;/etc/hostapd/hostapd.conf interfacewlp5s0 drivernl80211 chan…

Java中多线程中 synchronized 锁升级的原理是什么?

Java中多线程中 synchronized 锁升级的原理是什么&#xff1f; 在 Java 中&#xff0c;synchronized 锁的升级是指在不同的场景下&#xff0c;锁的性能优化。Java 的锁有多个状态&#xff0c;主要包括偏向锁、轻量级锁和重量级锁。 偏向锁&#xff1a;当只有一个线程访问同步块…

acwing算法提高之动态规划--背包模型(三)

目录 1 基础知识2 模板3 工程化 1 基础知识 暂无。。。 2 模板 暂无。。。 3 工程化 题目1&#xff1a;潜水员。 解题思路&#xff1a;DP。 状态定义f[i][j][k]&#xff1a;从前i个物品中选&#xff0c;氧气至少为j&#xff0c;氮气至少为k的最小方案数。 状态转移&…

解决idea 通过build project 手动触发热部署失败

在debug运行项目的过程中&#xff0c;并且保证&#xff08;不添加方法&#xff0c;不修改方法名&#xff09;一定的规则的情况下&#xff0c;可以通过build project 来手动热部署项目&#xff0c;也就是会交换class文件与resouces文件。 设置项 Edit Configurations Modify Op…

计算机图形学理论(1):建模基础

本系列根据国外一个图形小哥的讲解为本&#xff0c;整合互联网的一些资料&#xff0c;结合自己的一些理解。 场景的组成部分 场景相当于一个或多个模型的集合。模型包含以下内容&#xff1a; 结构描述&#xff1a;几何形状&#xff0c;如顶点、纹理坐标等表面描述&#xff1a…

Vue3中的defineModel

目录 一、vue3的defineModel介绍 二、defineModel使用 &#xff08;1&#xff09;在vite.config.js中开启 &#xff08;2&#xff09;子组件 &#xff08;3&#xff09;父组件 一、vue3的defineModel介绍 为什么要使用到defineModel呢&#xff1f;这里有这样一种场景&…

“快速排序:一种美丽的算法混沌”(1.hoare)

欢迎来到我的博客&#xff01;在今天的文章中&#xff0c;我将采用一种独特且直观的方式来探讨我们的主题&#xff1a;我会使用一幅图像来贯穿整篇文章的讲解。这幅精心设计的图表不仅是我们讨论的核心&#xff0c;也是一个视觉辅助工具&#xff0c;帮助你更深入地理解和掌握本…

学习深度强化学习---第2部分----RL动态规划相关算法

文章目录 2.1节 动态规划简介2.2节 值函数与贝尔曼方程2.3节 策略评估2.4节 策略改进2.5节 最优值函数与最优策略2.6节 值迭代与策略迭代2.7节 动态规划求解最优策略 本部分视频所在地址&#xff1a;深度强化学习的理论与实践 2.1节 动态规划简介 态规划有两种思路&#xff1…

前端 Web Workers 简介

简介 以前我们总说&#xff0c;JS 是单线程没有多线程&#xff0c;当 JS 在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验&#xff0c;从而需要设置把任务放在任务队列中&#xff1b;执行任务队列中的任务也并非多线程进行的&#xff0c;然而现在 HTML5 提供了…