探索ECU升级:基于UDS的ECU诊断刷写流程

55ff1865-f244-4a88-9cb3-b026192017c6

ECU(Electronic Control Unit)是电子控制单元的简称,也就是车辆上的微型计算机。现代汽车行业发展的速度越来越快,车辆的功能也越来越丰富,其中很多功能都是通过ECU来实现的,而ECU的诊断刷写无疑是各大厂商重点关注的方向。

           

方案概述

软件刷写通常是指将软件程序烧录到ECU芯片内存的特定地址段,然后ECU就会运行该软件程序以实现其特有的功能。本篇文章就将介绍这一烧录刷写过程。

方案优势

当前,风丘诊断工具链,从诊断数据开发到诊断测试,已涵盖DoIP诊断需求与功能。其中,Q-Tester可实现与ECU控制器之间的数据交互,实现对汽车ECU的诊断刷写。风丘诊断工具链功能齐全,覆盖面广,支持车辆诊断的整个开发周期,还可根据厂商要求定制开发诊断工具功能。

方案介绍

整个诊断刷写流程分为三个大步骤,分别是预刷写步骤、刷写中步骤和刷写后步骤。在这三个步骤中,我们将讲解关于UDS诊断刷写流程的详细过程。

1. 预刷写

5da5ece6-71ab-44c5-b48d-d2fb31779ba3

(图1 会话模式转换图)

这一步骤主要是做刷写前的准备工作。诊断仪Tester向ECU发出10 01,进入到默认会话状态。然后,在默认状态下,Tester再发出10 03,使ECU从默认会话转到拓展会话。在拓展会话模式下,Tester将进行一系列刷写前的检查。

7094bc67-28f1-485c-a919-34c8f30e9726

(图2 刷写前指令流程图)

首先,Tester会使用31服务来检测一些车辆状态。整车厂通常会定义一些控制器刷写的前提条件,这一步可检查刷写前提条件是否满足,若设定条件未满足,则将退出刷写。其次,如果在刷写过程中没有关闭DTC,则会记录不必要的DTC,因此需在预编程步骤关闭DTC存储——发送85服务指令即可关闭DTC存储功能。之后还需使用28服务关闭与诊断无关的报文,以降低总线负载。这个操作,一是可节约总线上的通信资源,提升刷写效率;二是可排除其他报文对刷写的干扰,防止刷写失败。

2. 刷写中

经过上述的预编程,接下来将进入正式的刷写进程。

| 安全算法验证

8510e0ea-044c-41bd-b939-390085a36fa4

(图3 安全算法验证流程图)

因为刷写过程需要在编程会话中进行,所以应先使用10 02服务从拓展会话切换到编程会话。在执行刷写这种较高层的诊断服务之前,需先进行27安全访问服务,完成身份验证。诊断仪向ECU发送27 01请求种子“Seed”,这时ECU回复诊断仪发送Seed。接着诊断仪根据刚刚得到的Seed使用算法进行计算得到安全密钥,并向ECU发送。ECU同样通过算法得到密钥,并将其与从诊断仪发出的密钥进行对比并判断是否通过。若通过,则将进入下一步——使用2E服务,写入指纹信息(F199),记录刷写时间(F198)等。

| 数据传输

1ae44200-c7d6-4b1a-ace8-9ff939ade8a4

(图4 刷写数据流程图)

开始数据擦除和写入。诊断仪向ECU发出例程控制服务31 01 FF 00,擦除在需要刷写的ECU的内存区域原本数据。然后,继续34、36、37一系列服务进行数据的下载写入。诊断仪将先发出34请求,在该请求中确定数据的刷写起始地址,并设定刷写数据的大小等信息。ECU在收到34请求后,若同意传输则会给出74响应,并将传输的数据划分为多个数据块进行传输。诊断仪发出的34请求收到正响应后,将启动36服务传输数据。诊断仪通过使用36传输数据服务向ECU内存区域中传输刷写的数据,且通常需要多条36进行传输,而每条36传输的数据大小由之前ECU回复的74响应来决定。待36服务传输结束后,诊断仪发出37服务,请求结束数据传输,然后ECU正响应77结束传输。传输结束后,诊断仪将使用31服务校验刷写的完整性和兼容性。典型的就是执行checksum验证,这可验证刷写过程中所有数据块是否下载完全。至此,第二步骤刷写全部结束。

3. 刷写后

11e0ba2f-c365-4e28-b2aa-5c4a3af624a0

(图5 刷写后流程图)

总结

以上就是一般的基于UDS诊断的ECU刷写流程。诊断的刷写流程架构基本一致,但会存在部分差异,视具体情况而定。Q-Tester.Expert是一大基于ODX(ASAM MCD-2D/ISO 22901-1)国际标准的工程诊断仪。通过此诊断仪,用户可实现与ECU控制器之间的数据交互,同时Q-Tester.Expert还支持以太网诊断(DoIP),可根据用户需求进行扩展开发。

往期回顾

整车测试中的UDS诊断

ECU单件诊断测试(DoIP on 1000BASE-T1)解决方案