基于UDS的Flash 刷写——BootLoad刷写流程详解

2024-08-27 02:04

本文主要是介绍基于UDS的Flash 刷写——BootLoad刷写流程详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

从0开始学习CANoe使用
从0开始学习车载测试
相信时间的力量
星光不负赶路者,时光不负有心人。

在这里插入图片描述

目录

  • 流程概述
  • UDS流程详解释
  • 前编程
    • ①诊断会话控制 - 切换到扩展会话(10 03)
    • ②例程控制-预编程条件检查(31 01 02 03)
    • ③DTC设置控制 - 关闭DTC(85 02)
    • ④通讯控制 -关闭收发(28 01 03)
  • 主编程
    • ⑤诊断会话控制 - 切换到扩展会话(10 02)
    • ⑥ 安全访问 - 请求种子/密钥(27 07/08)
    • ⑦指纹信息写入 - (2E xx)
    • ⑧Flash Driver下载-请求下载(34 00 44(地址+长度))
    • ⑨ Flash Driver下载-数据传输(36 01+驱动数据长度)
    • ⑩Flash Driver下载-请求退出(37)
    • ⑪例程控制-完整性检查(31 01 02 02+校验算法)
    • ⑫例程控制-擦除内存(31 01 FF 00 44+(地址+长度))
    • ⑬软件下载-请求下载(34 00 44(地址+长度))
    • ⑭软件下载-数据传输(36 01+驱动数据长度)
    • ⑮软件下载-请求退出(37)
    • ⑯例程控制-完整性检查(31 01 02 02+校验算法)
    • ⑰例程控制-检查编程依赖性(31 01 FF 01)
    • ⑱ECU重置 - 硬件重置(11 01)
  • 后编程
    • ⑲诊断会话控制 - 切换到扩展会话(10 03)
    • ⑳通讯控制 -打开收发(28 00 03)
    • ㉑DTC设置控制 - 打开DTC(85 01)
    • ㉒清除DTC(14FFFFFF)
    • ㉓诊断会话控制 - 切换到默认会话(10 01)

流程概述

在这里插入图片描述
基于CANoe 的CAPL+Panel实现 图示如下:
在这里插入图片描述

UDS流程详解释

主要配合实际指令发送与恢复,进行详解讲解每个步骤

前编程

这部分主要目的为了后面进入编程中进行准备
在这里插入图片描述

①诊断会话控制 - 切换到扩展会话(10 03)

0x10 03:为了禁止ECU间的正常通信和控制DTC设置, 而这些指令都需要在扩展会话下完成。
在这里插入图片描述

②例程控制-预编程条件检查(31 01 02 03)

0x31 01 xx:编程条件检查-确保APP升级过程中,系统的安全性,如果不安全将拒绝编程(可选步骤)
在这里插入图片描述

③DTC设置控制 - 关闭DTC(85 02)

0x 85 02: 在刷写过程中,禁止DTC更新
在这里插入图片描述

④通讯控制 -关闭收发(28 01 03)

0x28 03 03:服务是为了减少在刷写过程中总线负载率——禁止app报文发送与接收
在这里插入图片描述

主编程

这部分主要目的为了后面进入编程中进行准备
在这里插入图片描述

⑤诊断会话控制 - 切换到扩展会话(10 02)

0x10 02:进入编程会话(bootLoad)中,为后面的APP下载准备
在这里插入图片描述

⑥ 安全访问 - 请求种子/密钥(27 07/08)

0x27 07/08:软件下载前必须通过安全访问操作
在这里插入图片描述

⑦指纹信息写入 - (2E xx)

0x2E XX :写入指纹信息 ,主要指的是重编程的日期,一般在4S店刷写需要(可选步骤)
在这里插入图片描述

//驱动下载
驱动下载前不需要擦除操作
关于相关服务可点击【UDS诊断】——0x34、0x36、0x37服务查看

⑧Flash Driver下载-请求下载(34 00 44(地址+长度))

0x34 00 44(地址+长度):请求下载
在这里插入图片描述

⑨ Flash Driver下载-数据传输(36 01+驱动数据长度)

0x36 01+数据:数据 传输
在这里插入图片描述
在这里插入图片描述

⑩Flash Driver下载-请求退出(37)

0x37 :请求退出
在这里插入图片描述

⑪例程控制-完整性检查(31 01 02 02+校验算法)

0x31 01 02 02 + 4byte crc32:.完整性检查,检查逻辑块的完整性
完整性检查方式:CRC算法、RSA文件验签等方式,本次举例为CRC算法
在这里插入图片描述

⑫例程控制-擦除内存(31 01 FF 00 44+(地址+长度))

0x31 01 FF 00 44 + (地址+长度):内存
再APP下载时需要先进行擦除内存
在这里插入图片描述

//软件下载

⑬软件下载-请求下载(34 00 44(地址+长度))

⑭软件下载-数据传输(36 01+驱动数据长度)

⑮软件下载-请求退出(37)

⑯例程控制-完整性检查(31 01 02 02+校验算法)

0x31 01 0202 + 4byte crc32:完整性检查,检查逻辑块的完整性
在这里插入图片描述

⑰例程控制-检查编程依赖性(31 01 FF 01)

0x31 01 FF 01:检查编程依赖性
在这里插入图片描述

⑱ECU重置 - 硬件重置(11 01)

0x11 01:硬件重置
在这里插入图片描述

后编程

软件升级之后,恢复软件的正常工作状态,主要进行一些指令的服务,DTC的清除等操作

⑲诊断会话控制 - 切换到扩展会话(10 03)

⑳通讯控制 -打开收发(28 00 03)

㉑DTC设置控制 - 打开DTC(85 01)

㉒清除DTC(14FFFFFF)

㉓诊断会话控制 - 切换到默认会话(10 01)

这篇关于基于UDS的Flash 刷写——BootLoad刷写流程详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110316

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是 Flash Attention

Flash Attention 是 由 Tri Dao 和 Dan Fu 等人在2022年的论文 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中 提出的, 论文可以从 https://arxiv.org/abs/2205.14135 页面下载,点击 View PDF 就可以下载。 下面我

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓