《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

news2024/10/4 20:26:44

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

  • 一、简介
  • 二、数据包格式
    • 2.1 服务请求格式
    • 2.2 服务响应格式
      • 2.2.1 肯定响应
      • 2.2.2 否定响应
  • 三、通信示例

Tip📌:本文描述中但凡涉及到其他UDS服务的,将陆续提供链接跳转方式以便快速了解他们。(各服务介绍持续更新中…)

学习UDS基础知识以及其他相关内容?>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

一、简介

  简单的说,该服务允许Tester通过发送请求提供起始地址和要读取的内存大小从目标ECU中请求内存数据。

  目标ECU将在正响应消息中返回内存中的实际数据。响应消息中的数据参数的格式和定义由车辆制造商具体决定。数据可能包括模拟输入输出信号、数字输入输出信号、内部数据和系统状态信息等,当然,前提是目标ECU支持这些数据的读取。

二、数据包格式

2.1 服务请求格式

  其请求消息里面包含了两个重要的参数:memoryAddress(内存地址)和memorySize(内存大小)。memoryAddress指的是数据开始的地址,而memorySize指的是要读取的数据的字节数。请求消息中还有一个参数叫作addressAndLengthFormatIdentifier,这个参数定义了内存地址和内存大小两个参数各使用多少字节表示。它由一个字节构成,低半字节表示内存地址使用的字节数,高半字节表示内存长度使用的字节数。

在这里插入图片描述

  本服务不支持sub-function,各个参数的详细含义如下所示:

  addressAndLengthFormatIdentifier(1Byte):这个参数是一个字节的值,用来定义接下来两个参数memoryAddress和memorySize的字节长度。它的每半字节都有独立的编码规则:

  • 高半字节(bit 7 - 4):表示memorySize参数的长度(即,读取的字节数的长度用几个字节表示)。
  • 低半字节(bit 3 - 0):表示memoryAddress参数的长度(即,内存地址的长度用几个字节表示)。

  通常情况下,针对特定的ECU,addressAndLengthFormatIdentifier的格式也是固定的。如果在memoryAddressmemorySize中有未使用到的字节,这些字节将一般会在高位用0x00填充。

  memoryAddress(不定长):指定了目标ECU内存中数据读取的起始地址。此地址的具体字节数由addressAndLengthFormatIdentifier的低半字节确定。

Tip📌:地址的高位字节可以用作内存标识符,用于在存在地址重叠的情况下区分不同的内存装置或处理器。
  例如,在一个具有16位地址的双处理器服务器上,如果某个地址对两个处理器都有效,但指向不同的物理内存装置或内部和外部闪存,这时可以使用内存地址参数中的一个未使用字节作为内存标识符来选择期望的内存装置。

  memorySize(不定长):这个参数指定了从memoryAddress开始要读取的字节数。该字节数由addressAndLengthFormatIdentifier的高半字节定义。

2.2 服务响应格式

2.2.1 肯定响应

在这里插入图片描述

  dataRecord(不定长):dataRecord包含的具体内容在UDS协议的文档中并没有定义。其格式由制造商定义,直接反映出Tester7请求读取的那部分内存内容。

Tip📌:尽管UDS协议没有定义dataRecord的具体内容,但数据的格式化方式应由车辆制造商或系统供应商事先定义。这是因为不同的车辆制造商或系统可能会以不同的方式存储和管理数据。

  例如,如果一个诊断工具请求从ECU的特定内存地址开始读取某个传感器的数据,那么ECU返回的dataRecord参数将包含该传感器数据的实际值。这些数据可能是原始的二进制值,也可能是经过一定处理的数值,具体取决于车辆制造商定义的格式。诊断工具需要依据制造商提供的数据格式指南来解析dataRecord中的数据,进而得到有意义的诊断信息。

2.2.2 否定响应

在这里插入图片描述

  可能出现的NRC及其含义如下:

NRC含义
0x13消息长度错误
0x22当前条件不满足
0x31请求参数不受支持,参数错误
0x33未通过安全访问

  NRC的处理流程如下所示(即推荐的错误情况检查顺序):

在这里插入图片描述

三、通信示例

  假设目标ECU是32位寻址的,及其flash访问地址支持4个字节的寻址空间(换句话说就是地址占用4个字节),我们希望通过该服务从目标ECU的地址0x20481392处读取259字节的数据,请求及响应过程如下所示:

诊断仪 目标ECU 23 24 20 48 13 92 01 03 1 诊断仪发送请求: 第一个字节为SID, 紧接着四个字节是内存地址, 0x0103是要读取的大小, 转换为十进制就是259字节 63 00 ... ... 8C (除了63总计还有259字节) 2 目标ECU给出正响应: 第一个字节为SID+0x40 剩下的259字节为对应内存位置的数据 诊断仪 目标ECU

  这个服务比较简单,UDS协议中还给出了地址为两字节的和三字节的示例,没什么大的区别,有需要的可以再去协议中找对应例子再看看,这里不再赘述。

>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

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

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

相关文章

electron自定义顶部

我的项目是采用的electron-vite搭建的,希望下面的内容可以给你带来帮助 自定义菜单栏Vue <template><div class"title-bar"><div class"left-section"><img src"../assets/icon.png" alt"Icon" class"icon…

idea 常用插件推荐

文章目录 1、Lombok2、Convert YAML and Properties File3、Grep Console4、MyBatisX5、Free MyBatis Tool6、MyBatis Log EasyPlus &#xff08;SQL拼接&#xff09;7、MyBatisPlus8、Eclipse theme9、Eclipse Plus Theme10、Rainbow Brackets Lite - Free and OpenSource&…

在大模型落地这件事上,智谱玩出花了

大数据产业创新服务媒体 ——聚焦数据 改变商业 2024年6月5日&#xff0c;仅仅用了一上午的功夫&#xff0c;智谱就连发了三个产品&#xff0c;分别是智谱清言、GLM4-9B、智谱MaaS平台。 在这次的发布会与智谱在2024年1月16日开的发布会不太一样&#xff0c;后者更注重技术分享…

计算机网络 期末复习(谢希仁版本)第1章

大众熟知的三大网络&#xff1a;电信网络、有线电视网络、计算机网络。发展最快起到核心的是计算机网络。Internet是全球最大、最重要的计算机网络。互联网&#xff1a;流行最广、事实上的标准译名。互连网&#xff1a;把许多网络通过一些路由器连接在一起。与网络相连的计算机…

QT 使用信号和槽,让QLabel的内容实时与QLineEdit同步,类似vue框架的双向绑定

在窗口里放置一个单行文本编辑器&#xff08;QLineEdit&#xff09;和一个标签控件&#xff08;QLabel&#xff09;&#xff0c;实现的效果就是当编辑器的内容被编辑时&#xff0c;标 签控件同步显 示编辑控件里的内容 1&#xff09;当 lineEdit 控件被用户编辑时&#xff0c;它…

【Java数据结构】二叉树详解(四)

&#x1f512;文章目录&#xff1a; 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 2.1第一种思路 2.2第二种思路 3.根据一棵树的前序遍历与中序遍历构造二叉树 4.根据一棵树的中序…

【Web API DOM03】事件监听

一&#xff1a;什么是事件监听 指程序检测有无某一事件发生&#xff0c;如果发生&#xff0c;就调用一个函数做出反应&#xff1b;也称为绑定事件或注册事件 比如鼠标经过显示下拉菜单、点击侧边栏播放轮播图 二&#xff1a;怎么用事件监听 1 语法规范&#xff1a; 元素对…

Python 全栈体系【四阶】(五十七)

第五章 深度学习 十三、自然语言处理&#xff08;NLP&#xff09; 2. 传统NLP处理技术 2.4 关键词提取 关键词提取是提取出代表文章重要内容的一组词&#xff0c;对文本聚类、分类、自动摘要起到重要作用。此外&#xff0c;关键词提取还能使人们便捷地浏览和获取信息。现实…

【C++进阶】深入STL之vector:深入研究迭代器失效及拷贝问题

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;初步了解vector &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀STL之vector &#x1f4d2;1. 迭…

【Java基础】线程的五大状态

新建状态 使用 new 关键字和 Thread 类或其子类建立一个线程对象后&#xff0c;该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。 就绪状态 当线程对象调用了start()方法之后&#xff0c;该线程就进入就绪状态。就绪状态的线程处于就绪队列中&#xff…

【机器学习基础】Python编程04:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些…

(学习笔记)数仓建模

数仓建模 OLAP数仓分层数据模型数据模型建设方法模型建设具体流程模型数据域事实表设计事实表拉链表 数据模型规范表命名(采用阿里one-data设计)字段命名(采用阿里one-data设计)数据模型标注规范 数据模型发展周期 OLAP OLTP&#xff1a;概念全称OnLine Transaction Processin…

【大模型】Ollama+open-webui/Anything LLM部署本地大模型构建RAG个人知识库教程(Mac)

目录 一、Ollama是什么&#xff1f; 二、如何在Mac上安装Ollama 1. 准备工作 2. 下载并安装Ollama 3. 运行Ollama 4. 安装和配置大型语言模型 5. 使用Ollama 三、安装open-webui 1. 准备工作 2. Open WebUI ⭐的主要特点 3. Docker安装OpenWebUI&#xff0c;拉去太慢…

操作系统教材第6版——个人笔记3

2.1 处理器 2.1.1 处理器与寄存器 处理器部件的简单示意 用户程序可见寄存器 可以使程序员减少访问主存储器的次数&#xff0c;提高指令执行的效率所有程序可使用&#xff0c;包括应用程序和系统程序数据寄存器&#xff1a;又称通用寄存器地址寄存器&#xff1a;索引、栈指针…

妙手ERP接入TEMU美国本土店,支持高效产品刊登、订单管理、库存管理

​​​​​​​ 众所周知&#xff0c;拼多多向来是低价卷王&#xff0c;而TEMU完美继承了拼多多的基因&#xff0c;靠着全托管模式一路狂奔&#xff0c;两年多便扩展至全球60个国家与地区&#xff0c;市场规模预计达到450亿美元&#xff0c;吸引着越来越多的卖家入驻。 在平台…

32C3-2模组与乐鑫ESP32­-C3­-WROOM­-02模组原理图、升级口说明

模组原理图&#xff1a; 底板原理图&#xff1a; u1 是AT通信口&#xff0c;wiif-tx wifi-rx 是升级口&#xff0c;chip-pu是reset复位口&#xff0c;GPIO9拉低复位进入下载模式 ESP32-WROOM-32 系列硬件连接管脚分配 功能 ESP32 开发板/模组管脚 其它设备管脚 下载固件…

Unity DOTS技术(八)状态组件

文章目录 一,简介二.实例 一,简介 因为在ECS中没有回调,因而无从得知组件是否被销毁.所以我们需要使用ISystemStateComponentData. 什么时ISystemStateComponentData状态组件? 当物体被销毁时ISystemStateComponentData组件不会被销毁.因而我们可以在组件被销毁时在该组件中…

搭建大型分布式服务(三十八)SpringBoot 整合多个kafka数据源-支持protobuf

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

Clo3D导出服装动画,使用Unity3D展示

1.前言 Clo3D是一款应用于时装行业的3D服装设计软件,其强大的布料模拟算法可在3D空间中实现设计、制版、试衣和走秀,大幅提升数字作品逼真度和制作效率。为了让服装动画效果展示在Unity3D上模拟效果&#xff0c;需要Clo3D模拟出逼着的衣服动画。总体流程为Clo3D - Mixamo -Blen…

废酸再生工艺的稳定性强优势

废酸再生工艺&#xff0c;作为现代工业中一项重要的环保技术&#xff0c;其核心目的是将工业生产过程中产生的废酸进行回收、处理和再利用&#xff0c;以实现资源的节约和环境的保护。这一工艺不仅有助于减少废酸对环境的污染&#xff0c;还能为企业带来显著的经济效益。 一、废…