【UDS刷写章节】

目录

一、UDS刷写的两种方式:

1.1普通刷写原理:

1.2强制刷写:

二、刷写流程图

2.1 刷写前(设置刷写网络)

2.1.1 切换到扩展模式(10 03)

2.1.2 检查刷写前提条件(31 01 XX XX)

2.1.3 停用故障码存储功能(85 02)

2.1.4 停止发送一般通讯报文(28 01 01 XX XX)

2.2 刷写中(认证&下载数据)

2.2.1 切换到编程会话(10 02)

2.2.2安全访问-请求种子(27 01)

2.3 安全访问-发送与验证Key(27 02)

2.2.4 写入指纹(2E XX XX YY YY ...)

2.2.5 擦除内存(31 01 FF 00 XX XX YY YY)

2.2.6 请求下载(34 XX YY ZZ ZZ AA AA)

2.2.7 传输数据(36 XX YY YY ...)

2.2.8 请求传输退出 (37)

2.2.9 检查存储空间(31 01 02 02)

2.2.10 检查编程依赖(31 01 FF 01)

2.2.11 ECU复位(11 01)

2.3 刷写后(还原网络)

2.3.1 切换到扩展模式(10 03)

2.3.2 启用发送一般通讯报文(28 00 01 XX XX)

2.3.3 各 ECU 恢复故障码的检测(85 01)

3.4 ECU 回到默认模式(10 01)


        汽车升级过程的就是针对ECU的升级,在ECU的刷写过程种定义了刷写前、刷写中、刷写后三个阶段, 负责将正确的刷写文件( S19 或者 HEX) 下载到 ECU 中。

一、UDS刷写的两种方式:

1.1普通刷写原理:

        程序运行后首先在boot中运行,boot会对app程序进行校验,检查app程序是否正常,如果不正常会停留在boot区,正常则跳转到app区运行。程序在运行过程中会备份两份,如下图所示程序刷写会刷写右侧区域,刷写完成复位之前会未刷写区域和新程序进行互相拷贝。刷写过程中,当app收到刷写指令后会跳转到boot区对app进行刷写。

1.2强制刷写:

        当app运行异常无法跳转到boot区,则执行强制刷写,ECU下电,上位机发送强制刷新指令,一般为31例程,然后下位机上电,ECU会停留在boot区,直接进行刷写。

二、刷写流程图

2.1 刷写前(设置刷写网络)

        刷写前,刷写工具读取 ECU 的 Boot 软件版本号(F180)、软件版本(F188)、 VIN(F190)、 硬件版本(F191),根据从 ECU 获取到的相关信息到刷写数据库中查找对应的升级文件。维修店代码或诊断设备序列号(F198)、刷写日期(F199)在刷写启动时写入,用于追溯之前的刷写操作。

刷写准备阶段需要确认待刷写控制器的相关版本信息, 设置刷写网络等。这个阶段在整车各个控制器的应用程序中执行, 此阶段, 使用功能地址向网络上的各控制器发出诊断请求进行网络设置。

2.1.1 切换到扩展模式(10 03)

        默认状态下 ECU 在 01 默认会话中,使用UDS 会话切换(10 03)进入拓展会话。

2.1.2 检查刷写前提条件(31 01 XX XX)

        整车厂通常会定义一些控制器刷写的前提条件,比如车速要低于3km/h等,这一步就可以检查刷写前提条件是否满足。不同的OEM/Tier1可能有不同的检查条件。常见的前置条件如下:

  • ECU 的电源电压不能太高或者太低(9V-16V)
  • 车辆处于 IGN On 状态, 但不在 Ready 状态
  • 车辆处于静止状态,车速为 0km/h

具体使用 31服务 执行检查编程条件的例程 routine,如条件不满足(比如车速过高等),则退出刷写。

2.1.3 停用故障码存储功能(85 02)

        刷写过程中,控制器功能不正常,不能收发总线消息,这种情况下,需要避免在这个过程中触发故障码存储。使用85诊断故障码设置服务设置故障码设置类型为OFF(02)关闭DTC的存储。

2.1.4 停止发送一般通讯报文(28 01 01 XX XX)

        刷写过程中,因为传输的数据较多,因此停用通讯报文的发送可以降低总线负载。

使用28服务关闭与诊断无关的报文,将节约出来的通信资源用于刷写软件,提升刷写速度。

2.2 刷写中(认证&下载数据)

        刷写中首先进行身份认证,而后可以写入指纹,然后执行刷写擦除内存,向指定地址下载固件,并检查写入是否正确。

2.2.1 切换到编程会话(10 02)

        刷写过程必须要在编程会话中才可以进行。使用会话控制服务 10 02 切换到 programming session。

2.2.2安全访问-请求种子(27 01)

        27 安全访问服务 保证是有权限的人员或者设备才能够进行刷写,安全访问服务子功能请求种子向 ECU 请求安全认证种子。

2.3 安全访问-发送与验证Key(27 02)

        诊断设备收到种子后,将种子作为输入,使用双方已知的算法,计算得到Key。然后使用子功能发送秘钥将计算得到的秘钥发送给ECU。ECU使用相同的算法计算出秘钥并与收到的值进行对比,相同则认证通过。

        如果连续多次认证失败,安全访问会暂停服务一段时间。每认证失败一次,ECU安全访问失败计数器就会加1。当错误次数达到3次后,将收到0x36(尝试次数超限)的否定响应码,并延时10秒。10秒之内请求会收到0x37(延时时间未到)的否定响应码,10s之后才能再次发起认证请求。

2.2.4 写入指纹(2E XX XX YY YY ...)

        记录刷写时间(F198)、写入指纹信息(F199),标记写软件人的身份(维修店编号、诊断设备序列号)。

2.2.5 擦除内存(31 01 FF 00 XX XX YY YY)

        在向 ECU 的内存区域下载数据之前, 需要先擦除内存区域已有数据。

        采用 31 例程控制服务 FF00 擦除内存,根据控制器地址空间分配和芯片擦除能力,单次擦除所有或多次分段擦除。

31 01 FF 00 擦除起始地址 擦除长度

2.2.6 请求下载(34 XX YY ZZ ZZ AA AA)

        向ECU传输软件之前需要指定写入的地址和数据的大小。

        刷写设备使用 34 请求下载服务向 ECU 指定刷写起始地址和刷写数据的大小, 请求下载 ($34)服务指定的内存从起始到结束应该是连续的。如果不是连续的,刷写设备应该为每个要刷写的数据块发送一个单独的请求。

34 数据格式标识符  地址和长度格式标识 内存地址 内存大小

2.2.7 传输数据(36 XX YY YY ...)

        软件下载服务,将数据下载到上一步指定的内存中。

        刷写设备使用 36 传输数据服务向 ECU 内存区域中传输刷写的数据,一个数据块通常需要多条传输数据服务传输。

36 数据块顺序计数器 数据

2.2.8 请求传输退出 (37)

        37 服务退出当前连续内存区域的刷写,将在肯定响应中携带校验和,校验最近的一条请求下载请求服务指定的内存区域。

返回的校验和与刷写设备计算的校验和进行比较,如果不相同,将重新使用 36 数据传输服务下载数据,多次校验不通过,刷写将会中断。

2.2.9 检查存储空间(31 01 02 02)

        检验刷写的数据的可靠性,在软件/数据刷写完毕时,刷写设备通过例行程序服务来验证刷写到内存区域的每块数据是否成功。

        检查刷写的数据的完整性,确定来源合法,通过CRC、哈希、数字签名等方法,保证刷写过程中不会出错,且刷写的数据是来自合法的提供者。

2.2.10 检查编程依赖(31 01 FF 01)

        使用 31 例程控制服务 FF01 确认刷入的软件和ECU的硬件,基础软件是匹配的。

2.2.11 ECU复位(11 01)

        整个刷写完成后,刷写设备要求 ECU 硬件复位, ECU 进入应用程序。

        11 复位服务重启ECU,使刷写的新软件生效。

2.3 刷写后(还原网络)

        刷写后的步骤与刷写前的步骤是对应的,启用刷写前禁用的通信等。

此时网络恢复到正常的模式, ECU 以默认的波特率进行正常的通信,并能进行故障码的检测和存储。刷写结束后要求各 ECU 恢复非诊断消息的发送及接收 。

2.3.1 切换到扩展模式(10 03)

        默认状态下 ECU 在 01 默认会话中,使用UDS 会话切换(10 03)进入拓展会话。在拓展会话中,启用非诊断通信、清除刷写阶段产生的故障码、各 ECU 恢复故障码的检测。

2.3.2 启用发送一般通讯报文(28 00 01 XX XX)

        使用 28 通信控制服务启用在刷写前停止收发的一般通讯报文。

2.3.3 各 ECU 恢复故障码的检测(85 01)

        恢复故障码检测,85诊断故障码设置服务设置故障码设置类型为ON(01)恢复DTC的存储。

3.4 ECU 回到默认模式(10 01)

        从扩展会话切换回默认会话。

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

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

相关文章

3.Kafka生产者api实践

目录 概述实践代码命令行消费端代码 效果代码优化 概述 生产者API使用实践 官网:producerapi 实践 代码 命令行消费端 代码 public class KafkaProducerApp {public static void main(String[] args) {Properties props new Properties();props.put("boot…

【数据结构】探索排序的奥秘

若有不懂地方,可查阅我之前文章哦! 个人主页:小八哥向前冲~_csdn博客 所属专栏:数据结构_专栏 目录 排序的概念 几种排序方法介绍 冒泡排序 选择排序 插入排序 堆排序 向上调整建堆排序 向下调整建堆排序 希尔排序 快速…

CPU指令仿真模拟器设计

整体设计 模拟器软件可被细分为多个关键模块,包括但不限于:程序指令序列执行器模块,内存模拟模块,寄存器模拟模块,反汇编模块,以及一套详尽的调试模块(包含单步执行、连续运行、暂停以及断点设置…

如何通过网络快速搜寻到自己的STM32设备

目录 一、问题概述 二、解决思路 三、代码实现 1.创建任务 2.UDP广播接收 一、问题概述 以前一直用RS232串口修改设备配置信息,但是现场施工人员的232线太细,经常容易断掉,这次准备用网口去修改,遇到了一个问题,…

深入理解PostgreSql域类型(Domain),灵活定义数据约束,让表结构设计更加严谨

在PostgreSQL中,域(Domain)是一种用户定义的数据类型,它基于系统内已存在的数据类型,并可以附加约束条件。使用域可以增强数据的完整性和一致性,因为它允许开发者对特定列设定更为具体的规则,比…

Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截

摘要 在当今互联网时代,数据采集已成为获取信息的重要手段。然而,随着反爬虫技术的不断进步,爬虫开发者面临着越来越多的挑战。本文将探讨Java爬虫在抓取TikTok音频时的安全策略,包括如何防止请求被拦截,以及如何提高…

【银河麒麟操作系统】虚机重启lvs丢失现象分析及处理建议

了解银河麒麟操作系统更多全新产品,请点击访问麒麟软件产品专区:https://product.kylinos.cn 环境及现象描述 40台虚机强制重启后,其中8台虚机找不到逻辑卷导致启动异常,后续通过pvcreate 修复重建pv,激活vg和lv并修复…

minIO集成springboot

问题 minIO与spring集成。 步骤 创建桶 创建key 找到创建账号页面,如下图: 点击创建,如下图: 设置如下权限: {"Version": "2012-10-17","Statement": [{"Effect": &q…

聚焦 Navicat 17 新特性 | 数据字典提升数据结构清晰度

随着 Navicat 17 的发布,在业界引起了广泛的共鸣与热议。我们曾深入剖析其众多革新特性,包括模型设计创新与优化、高效的查询与配置、用户界面交互体验再升级,以及它如何原生适配国产 Linux ARM 平台和麒麟操作系统等,这些新特性实…

团体程序设计天梯赛-练习集

L2-002 链表去重 #include <bits/stdc.h> #define ios ios::sync_with_stdio(0),cin.tie(0) #define PII pair<int,int> typedef long long ll; const int N1e610; const int inf0x3f3f3f3f;using namespace std; struct node{int data,next; }a[N]; vector<int…

django-vue-admin项目运行

文本主要对django-vue-admin项目进行了简要介绍&#xff0c;并且对前后端进行了源码安装和运行。在此基础上可作为管理系统二次开发的基础框架。 一.django-vue-admin简介和安装 1.简介 django-vue-admin项目是基于RBAC模型权限控制的中小型应用的基础开发平台&#xff0c;采…

陪玩系统小程序模式APP小程序H5系统搭建开发

随着移动互联网的营及和游戏行业的蓬轨发展&#xff0c;陪玩服务应远而生并迅速唱起&#xff0c;陪玩系统小程序作为连接游戏玩家与陪玩师的桥梁&#xff0c;其模式系统的搭建与开发是得尤为重要&#xff0c;本文将洋细凰述陪玩系统小程宗模式系统的搭建开发流程&#xff0c;包…

yolov8训练数据警告检查

在yoloV8训练过程中&#xff0c;你应该也遇到过如图上的数据问题。 这里提供一个简单的提取脚本&#xff0c;可供检查。 首先&#xff0c;你需要将这些警告内容自行复制到一个新建的空白txt里&#xff0c;如下图 通过观察&#xff0c;大致发现会存在以下几种警告&#xff1a;…

Python用Pyqt5制作音乐播放器

具体效果如下 需要实现的功能主要的几个有&#xff1a; 1、搜索结果更新至当前音乐的列表&#xff0c;这样播放下一首是搜素结果的下一首 2、自动播放 3、滚动音乐文本 4、音乐进度条 5、根据实际情况生成音乐列表。我这里的是下面的情况&#xff0c;音乐文件的格式是 歌…

【Chatgpt大语言模型医学领域中如何应用】

随着人工智能技术 AI 的不断发展和应用&#xff0c;ChatGPT 作为一种强大的自然语言处理技术&#xff0c;无论是 自然语言处理、对话系统、机器翻译、内容生成、图像生成&#xff0c;还是语音识别、计算机视觉等方面&#xff0c;ChatGPT 都有着广泛的应用前景。特别在临床医学领…

PHP短视频去水印+影视小程序微信去水印小程序自主开发对接流量主

短视频去水印影视小程序新商机&#xff1a;微信去水印小程序对接流量主全攻略&#x1f4bc; &#x1f3ac;【短视频去水印&#xff0c;内容创作新助力】 在短视频风靡的今天&#xff0c;每一个创意都值得被完整呈现。但恼人的水印常常破坏了这份完美。现在&#xff0c;有了专…

【机器学习】分类算法-支持向量机

一、前言 前面讲了KNN算法&#xff0c;这里我们来学习一下支持向量机的模型使用&#xff0c;看一下用支持向量机的方法&#xff0c;是否可以完成了之前KNN算法中的那个“约会网站配对”的算法实现嘞。 二、什么为支持向量机 我们跟着老师的要求来&#xff0c;从四个层次来理解…

Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验

title: Nuxt.js头部魔法&#xff1a;轻松自定义页面元信息&#xff0c;提升用户体验 date: 2024/7/16 updated: 2024/7/16 author: cmdragon excerpt: 摘要&#xff1a;“Nuxt.js头部魔法&#xff1a;轻松自定义页面元信息&#xff0c;提升用户体验”介绍如何使用useHead函数…

PostgreSQL使用(三)

说明&#xff1a;本文介绍PostgreSQL的数据类型和运算符&#xff1b; 数据类型 常用的数据类型如下&#xff1a; 运算符 如下&#xff1a; 运算符的优先级如下&#xff1a; 不需要强记硬背&#xff0c;只需要记住括号可以提高运算符的优先级即可&#xff1b; 总结 本文介绍…

从数据湖到湖仓一体:统一数据架构演进之路

文章目录 一、前言二、什么是湖仓一体&#xff1f;起源概述 三、为什么要构建湖仓一体&#xff1f;1. 成本角度2. 技术角度 四、湖仓一体实践过程阶段一&#xff1a;摸索阶段(仓、湖并行建设)阶段二&#xff1a;发展阶段方式一、湖上建仓(湖在下、仓在上)方式二&#xff1a;仓外…