当前位置: 首页 > news >正文

车载测试:UDS之BootLoader刷写

 
BootLoader刷写

本文章是花费3小时结合多个项目实践总结和整体出来的,欢迎大家交流!


 

BootLoader刷写章节

①:预编程步骤流程+流程图
    1.1 概述
   1.2 流程步骤描述
         1)整车ECU进入扩展会话
         2)刷写条件检测
         3)禁止记录DTC
         4)关闭通讯
         5)读取数据信息
  1.3流程图

②:主编程步骤流程+流程图
    2.1 概述
    2.2流程步骤描述
        1)目标ECU进入编程会话
        2)解锁LEVEL_FBL安全等级
        3)刷写Flashdriver
        4)刷写应用程序
        5)应用程序兼容性检测
   2.3流程图

③:主编程步骤流程+流程图
    3.1概述
    3.2流程步骤描述
        1)重启目标ECU
        2)进入扩展会话
        3)开启通讯
        4)开启DTC记录
        5)整车ECU进入默认会话
        6)清除目标ECU故障码
  3.3流程图

     
BootLoader 刷写流程

BootLoader刷写分为三个步骤:预编程步骤、主编程步骤和后编程步骤。在刷写流程开始后,诊断设备需以2秒的周期,功能寻址发送诊断在线服务($3E 80),以保持总线上其它ECU的诊断会话;

诊断在线服务($3E)不能打断或影响ECU的任何其他服务

预编程步骤流程+流程图

概述

预编程步骤用来做刷写前的CAN网络准备。此步骤的请求报文采用的是物理寻址和功能寻址(P:物理寻址,F:功能寻址)。

流程步骤描述

1)整车ECU进入扩展会话

诊断设备通过功能寻址,发送扩展会话请求($10 03),使整车ECU进入扩展会话。报文发送完成后需延时1s再执行后续步骤。

2)刷写条件检测

a)诊断设备通过物理寻址,发送例程控制服务($31 01 F0 02),此例程控制不需要安全访问,检查目标ECU是否满足刷写条件。

b)在刷写条件检测通过后,目标ECU应立即置位一个标志位,并同时启动一个5秒定时器。当定时器计数超时,或者目标ECU接收到编程会话(10 02)的请求,或者任何原因导致目标ECU重启、复位,此标志位都将清零。

c)此标志位置位时,目标ECU应正确执行编程会话(10 02)的请求。当标志位清零时,目标ECU将不能肯定响应编程会话(10 02)的请求,应对诊断设备发出的切换编程会话(10 02)的请求否定响应NRC22。

3)禁止记录DTC

诊断设备通过功能寻址,使用DTC设置服务($85 02),禁止CAN网络中的ECU记录DTC功能。报文发送完成后需延时1s再执行后续步骤。

4)关闭通讯

诊断设备通过功能寻址,使用通信控制服务($28 03 01),禁止CAN网络中的ECU发送和接收非诊断报文。$28 83 01报文发送完成后需延时1s再执行后续步骤。

5)读取数据信息

a诊断设备通过物理寻址,读取目标 ECU 数据信息($22),读取内容包括但不限于:ECU 产品信息(F193)、零件号(0xF18C)、供应商代码(0xF18A)、硬件版本号(0xF089)、软件版本号(0xF189)、FBL版本信息(0xF180)、备份区软件版本号(F101)。

b)此步骤是否执行,或者执行读取后,目标ECU的响应内容(肯定响应或者否定响应),都不影响流程的继续执行。
 


主编程步骤流程+流程图

概述

主编程步骤用来编程一个或多个逻辑块。此步骤的请求报文采用的是物理寻址(P:物理寻址)。

流程步骤描述

1)目标ECU进入编程会话

a)诊断设备通过物理寻址,发送编程会话请求($10 02),使目标ECU进入编程会话;

b)进入编程会话后,目标ECU应对刷写请求标志位清零。

2)解锁LEVEL_FBL安全等级

诊断设备通过物理寻址,对目标ECU进行安全访问($27 07/08)。在此安全等级未解锁之前,后续的步骤将不能执行。

3)刷写Flashdriver

a)Flashdriver刷写至目标ECU指定的RAM区域。刷写序列由请求下载($34)、数据传输($36)、请求传输退出($37)和检查编程完整性($31 01 F0 01)4个服务组成;

b) 诊断设备通过物理寻址,发送例程控制服务($31 01 F0 01),包含4个字节的CRC32校验值参数。CRC32校验值用于验证此次下载逻辑块数据的完整性,如果检测不通过或者跳过此步骤直接请求主编程步骤4,目标ECU须拒绝执行,并返回NRC22。

4)刷写应用程序

a)应用程序刷写至目标ECU指定的非易失性存储器区域。刷写序列由擦除FLASH($31 01 FF 00)、请求下载($34)、数据传输($36)、请求传输退出($37)和检查编程完整性($31 01 F0 01)5个服务组成;

b)目标ECU在接收到擦除FLASH指令时,应先对应用程序有效位清零,防止刷写过程没有成功结束而意外执行应用程序。当应用程序有效位清零后,目标ECU才能开始执行擦除FLASH的动作;

c)诊断设备通过物理寻址,发送例程控制服务($31 01 F0 021),包含4个字节的CRC32校验值参数。CRC32校验值用于验证此次下载逻辑块数据的完整性;

5)应用程序兼容性检测

a)应用程序刷写完成后,诊断设备通过物理寻址,发送例程控制服务($31 01 FF 01),检测应用程序的完整性和依赖性。完整性定义为所有的的逻辑块是否全部成功下载;

b)检测通过后,目标ECU应立即置位应用程序有效位。
 

后编程步骤流程+流程图

概述

后编程步骤主要用来恢复整车CAN网络及DTC记录功能。此步骤的请求报文采用的是物理寻址和功能寻址(P:物理寻址,F:功能寻址)。

流程步骤描述

1)重启目标ECU

诊断设备通过物理寻址,使用复位服务($11 01),使目标ECU重启并跳转到应用程序。

2)进入扩展会话

诊断设备通过物理寻址,发送扩展会话请求($10 03),使目标ECU进入扩展会话。

3)开启通讯

诊断设备通过功能寻址,使用通信控制服务($28 00 03),开启CAN网络中的ECU发送和接收非诊断报文。

4)开启DTC记录

诊断设备通过功能寻址,使用DTC设置服务($85 01),开启CAN网络中的ECU记录DTC功能。

5)整车ECU进入默认会话 

诊断设备通过功能寻址,发送扩展会话请求($10 01),使整车ECU进入默认会话。

6)清除目标ECU故障码

诊断设备通过物理寻址,使用清除故障码服务($14),清除目标ECU的故障码。
 

相关文章:

车载测试:UDS之BootLoader刷写

BootLoader刷写 本文章是花费3小时结合多个项目实践总结和整体出来的,欢迎大家交流! BootLoader刷写章节 ①:预编程步骤流程流程图 1.1 概述 1.2 流程步骤描述 1)整车ECU进入扩展会话 2)刷…...

OpenHarmony实战开发-MpChart图表实现案例。

介绍 MpChart是一个包含各种类型图表的图表库,主要用于业务数据汇总,例如销售数据走势图,股价走势图等场景中使用,方便开发者快速实现图表UI。本示例主要介绍如何使用三方库MpChart实现柱状图UI效果。如堆叠数据类型显示&#xf…...

brpc: bthread使用

使用bthread并发编程 #include <gflags/gflags.h> #include <butil/logging.h> #include <bthread/bthread.h>static void* func(void* args) {std::string* num static_cast<std::string*>(args);for(int i 0; i < 5; i) {LOG(INFO) << *…...

H.265视频直播点播录像EasyPlayer.js流媒体播放器用户常见问题及解答

EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;无须安装任何插件&#xff0c;起播快、延迟低、兼容性强&#xff0c;使用非常便捷。 今天我们来汇总下用户常见的几个问题及解答。 1、EasyPlayer.js播放多路H.265视…...

蓝桥杯杂题选做

海盗分金币 题目链接&#xff1a;1.海盗分金币 - 蓝桥云课 (lanqiao.cn) 题解&#xff1a;海盗分金币-Cheery的代码 - 蓝桥云课 (lanqiao.cn) 思路&#xff1a;倒着想就行。 等腰三角形 题目链接&#xff1a;1.等腰三角形 - 蓝桥云课 (lanqiao.cn) 题解&#xff1a;等腰三…...

【HTML】简单制作一个分形动画

目录 前言 开始 HTML部分 效果图 ​编辑​编辑​编辑​编辑总结 前言 无需多言&#xff0c;本文将详细介绍一段代码&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建一个文本文档&#xff0c;其中HTML的文件名改为[index.html]&a…...

JVM修炼之路【11】- 解决内存溢出、内存泄漏 以及相关案例

前面的10篇 都是基础的知识&#xff0c;包括类加载的过程 类加载的细节&#xff0c;jvm内存模型 垃圾回收 等等&#xff0c; 这一篇我们开始实战了解一下 各种疑难杂症&#xff1a;怎么监控 怎么发现 怎么解决 内存溢出 内存泄漏 这两个概念在垃圾回收器里面已经讲过了&#…...

Java面试题:描述Java 17中的密封接口及其用途

Java 17是继Java 11和Java 16之后的又一个长期支持&#xff08;LTS&#xff09;版本&#xff0c;它于2021年9月发布。在Java 17中&#xff0c;一个重要的新特性是密封接口&#xff08;Sealed Interfaces&#xff09;&#xff0c;这是对Java接口的增强&#xff0c;它允许接口有更…...

C++11的新特性

C11是由C标准委员会指定的语言规范。相比于C98/03&#xff0c;C11则带来了数量可观的变化&#xff0c;其中包含了约140 个新特性&#xff0c;以及对C03标准中约600个缺陷的修正&#xff0c;C11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全&#xff0c;…...

【C语言__动态内存管理__复习篇6】

目录 前言 一、动态内存管理 二、动态内存函数 2.1 malloc 2.2 free 2.3 calloc 2.4 realloc 三、动态内存常见的6个使用错误 3.1 接收malloc/calloc返回的参数后未及时检查是否为NULL 3.2 越界访问动态内存空间 3.3 对非动态开辟的内存使用free释放 3.4 使用free只释放了…...

C语言 | Leetcode C语言题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; typedef struct {char key[32];int val;UT_hash_handle hh; } HashItem;int* findSubstring(char * s, char ** words, int wordsSize, int* returnSize){ int m wordsSize, n strlen(words[0]), ls strlen(s);int *res (int *)mall…...

大数据dolphinscheduler 本地容器化安装

Minio 容器安装 docker run -p 9000:9000 -p 9090:9090 --name minio -d -e "MINIO_ACCESS_KEYminioadmin" -e "MINIO_SECRET_KEYminioadmin" -v D:\SF\DOCKER\minio\data:/data -v D:\SF\DOCKER\minio\config:/root/.minio minio/minio server /da…...

简单的车牌号识别

目录 处理流程与界面各接口编写时遇到的一些问题上传图片识别结果标签显示中文 处理流程与界面 首先点击“上传图片”按钮&#xff0c;可以选择文件夹中含有汽车车牌的图片&#xff0c;并显示在“图片框”中。 点击“检测车牌”按钮&#xff0c;会先对“图片框”中即含有汽车车…...

openGauss学习笔记-261 openGauss性能调优-使用Plan Hint进行调优-将部分Error降级为Warning的Hint

文章目录 openGauss学习笔记-261 openGauss性能调优-使用Plan Hint进行调优-将部分Error降级为Warning的Hint261.1 功能描述261.2 语法格式261.3 示例261.3.1 忽略非空约束261.3.2 忽略唯一约束261.3.3 忽略分区表无法匹配到合法分区261.3.4 更新/插入值向目标列类型转换失败 o…...

CSS水波纹效果

效果图&#xff1a; 1.创建一个div <div class"point1" click"handlePoint(1)"></div> 2.设置样式 .point1{width: 1rem;height: 1rem;background: #2ce92f;position: absolute;border-radius: 50%;z-index: 999;cursor: pointer;} 3.设置伪…...

迭代器模式:优雅地遍历数据集合

在软件设计中&#xff0c;迭代器模式是一种常见且有用的设计模式&#xff0c;它允许顺序访问一个聚合对象中的各个元素&#xff0c;而又不暴露该对象的内部表示。这种模式在需要对集合进行遍历操作而又不想暴露集合内部结构的场景下非常有用。 一、迭代器模式的使用条件 访问集…...

c++总结笔记(一)

计算机可以将程序转化为二进制指令&#xff08;即机器码&#xff09;&#xff0c;并由CPU执行&#xff0c;CPU会按照指令的顺序依次执行每个指令。 C语言特点&#xff1a; 简洁高效可移植模块化标准化 C语言的标准 C89(C90)标准C99标准C11标准 导入 使用include导入包含…...

[python][gradio]chatbot控件用法

chatbot模块是Gradio中的一个组件&#xff0c;用于展示聊天机器人的输出&#xff0c;包括用户提交的消息和机器人的回复。它支持一些Markdown语法&#xff0c;包括粗体、斜体、代码和图片等。Chatbot模块的输入不接受用户输入&#xff0c;而是通过函数返回的列表来设置聊天内容…...

Sublime Text下载,安装,安装插件管理器,下载汉化插件

SublimeTest官网 © Sublime Text中文网 下载安装 一路点击安装即可 安装插件管理器 管理器官网安装 - 包控制 (packagecontrol.io) 手动安装将3 位置点击网址下载 再打开SublimeTest 点击 选择第一个Browse Packages..... 将会跳转到文件夹中 进入上一个文件夹 在进入…...

c++ ,stl经常出现的<>尖括号其实就是模板类的实例化

通过比如vector<int> 实际上是调用了类似模板template<T t>class vector{...}实例化了一个使用int的vector类来进行定义&#xff0c;我们可以尝试简单的做一个自己的array类 template<typename T1 ,int d2> class array1 {private:T1 *p;int size;public:ar…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...

更新 Docker 容器中的某一个文件

&#x1f504; 如何更新 Docker 容器中的某一个文件 以下是几种在 Docker 中更新单个文件的常用方法&#xff0c;适用于不同场景。 ✅ 方法一&#xff1a;使用 docker cp 拷贝文件到容器中&#xff08;最简单&#xff09; &#x1f9f0; 命令格式&#xff1a; docker cp <…...

TI德州仪器TPS3103K33DBVR低功耗电压监控器IC电源管理芯片详细解析

1. 基本介绍 TPS3103K33DBVR 是 德州仪器&#xff08;Texas Instruments, TI&#xff09; 推出的一款 低功耗电压监控器&#xff08;Supervisor IC&#xff09;&#xff0c;属于 电源管理芯片&#xff08;PMIC&#xff09; 类别&#xff0c;主要用于 系统复位和电压监测。 2. …...