UDS Flash刷写流程介绍

发布时间:2024年01月24日

一、刷写流程介绍

1.1刷写包含以下三个步骤:预编程,编程,后编程

1.2预编程步骤

此步骤是保证能够正常进入编程(10 02)会话下。

(1)如果无特殊要求,只保证刷写能够正常进行,直接从10 03(扩展会话)进入10 02(编程会话),不需要加入其他诊断服务。

(2)如果需要确保刷写过程中,不影响其他ECU,则需要加入28,85,31服务进行。

? ? ? ? 28服务禁止总线上报文输出,减低总线负载,保证刷写过程正常进行(总线负载较高时,刷写可能无法正常运行,诊断ID优先级较低,可能存在无法发送)。

? ? ? ?85服务禁止DTC状态位更新,刷写过程中,APP报文无法发送,可能会触发通信类DTC,此情况是在刷写过程中不期望遇到,使用85服务可以禁止DTC状态位更新,可不引入新的DTC。

? ? ? 31服务主要是保证,在异常情况下,不能够执行刷写操作。(此过程可选)

1.3编程步骤

此步骤是保证能够将S19/Bin/Hex文件正确下载进入ECU。

(1)在刷写过程中,可以写入指纹信息,来记录版本刷写日志(此过程可选)

(2)刷写主要过程分为:擦除内存,请求下载,软件下载,请求刷写退出,以及检查版本校验

(3)软件下载完成后,需要使用11服务进行复位(从10 02(编程会话)进入10 01(默认会话))

1.4后编程步骤

此步骤是保证软件下载之后,能够将之前85,28服务所关闭的功能打开(针对所刷写的ECU来说,在编程步骤结束后此功能立刻恢复;针对其他ECU来说使用后编程步骤,恢复之前所禁止功能)

二、刷写服务介绍

2.1预编程步骤

2.1.1 10服务

10 03:主要是给31,28,85,以及进入10 02提供环境。

2.1.2 85服务

85 02:禁止DTC标志位更新。

2.1.2 28服务

28 03 01:禁止总线上APP报文发送,这一步应该在85 02之后执行,禁止DTC更新。

2.1.3 10服务

10 02:从扩展会话进入编程会话,给刷写提供会话环境。

2.2编程步骤

2.2.1 27服务

27 xx(xx:boot下定义的解密等级):请求seed,

27 xx+1 yy yy ……(yy:根据seed计算的key)

请求:27 01?

返回:67 01?xx?xx?xx?xx(返回4byteseed)

请求:27 02?xx?xx?xx?xx(根据seed计算的4byte?key)

返回:67 02

2.2.2 34服务

34 00 44 xx xx xx xx(4byte 地址) yy yy yy yy(4byte?数据长度):请求擦除所需要下载的区域

请求:34 00 44 01 01 01 01 11 11 11 11(请求擦除起始地址:01010101,长度为11111111的区域)

返回:74 40?xx?xx?xx?xx(4byte?可下载数据最大长度,根据40的来判断后面使用字节)

2.2.3 36服务

36 xx(xx:请求下载的块序列号):请求数据下载?

块序列请求模式:36 01~36 FF,36 00~36 FF(后续以36 00~36 FF进行循环)?

请求:36?xx(xx:01~FF,00~FF)

响应:76?xx

2.2.4 37服务

37:请求下载退出

2.2.5 31服务

31 01 xx xx(RID) yy yy yy yy(校验值):判断刷写过程中,上位机传输与ECU中下载数据是否一致

请求:31 01 FF FF 01 01 01 01

返回:71 01 FF FF

2.2.6 11服务

11 01:刷写完成后,使用11 01进行硬复位,从而进入app中运行软件

2.3后编程步骤

2.3.1 10服务

10 03:为后续28 ,85提供会话环境

2.3.2 28服务

28 00 01:恢复APP通讯

2.3.3 85服务

85 01:开启DTC状态位更新,此步骤要在28服务之后,确保在刷写中不产生新的DTC

以上是UDS刷写步骤,执行完成可将软件刷写入ECU中。

文章来源:https://blog.csdn.net/LOVE135149/article/details/135791439
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。