基于 UDS 的 ECU 诊断刷写流程 助力汽车智能化发展

ECU(Electronic Control Unit)是电子控制单元的简称,也就是车辆上的微型计算机。现代汽车行业发展的速度越来越快,车辆的功能也越来越丰富,其中很多功能都是通过 ECU 来实现的,而 ECU 的诊断刷写无疑是各大厂商重点关注的方向。
一
方案概述
软件刷写通常是指将软件程序烧录到 ECU 芯片内存的特定地址段,然后 ECU 就会运行该软件程序以实现其特有的功能。本篇文章是围绕这一烧录刷写过程展开介绍。
二
方案优势
当前,风丘诊断工具链,可实现从诊断数据配置到完整刷写测试的一体化流程支持,全面满足基于 UDS的 ECU 诊断与软件刷写需求。借助 Q-Tester 能够稳定实现与 ECU 控制器的可靠数据交互,高效完成软件烧录与刷写校验等关键步骤。整套方案功能完整、流程覆盖全面,可贯穿车辆诊断与软件刷写的全开发周期,并且可根据车企及供应商的实际需求,灵活定制刷写流程与诊断功能。
三
方案介绍
整个诊断刷写流程分为三个大步骤,分别是预刷写步骤、刷写中步骤和刷写后步骤。在这三个步骤中,我们将讲解关于 UDS 诊断刷写流程的详细过程。
1. 预刷写

(图 1 会话模式转换图)
这一步的主要工作是做刷写前的准备工作。诊断议 Tester 先向 ECU 发出 22 服务来读取 ECU 的版本信息。然后,Tester 再发出 1003,使 ECU 从默认会话转到拓展会话模式,在拓展会话模式下,Tester 将进行一系列刷写前的检查。

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

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

(图 4 刷写数据流程图)
Tester 首先发送 31 服务,启动目标 ECU 的内存擦除操作,为后续程序刷写清理空间(根据厂商自己定义是否执行这一擦除操作)。接着,Tester 发送 34 服务,向 ECU 请求确认刷写地址、传输数据块大小等信息。配置确认完成后,Tester 发送 36 服务,开始向 ECU 传输第一块程序数据。ECU 收到后回复 76 01,表示当前数据块接收成功。随后 Tester 继续发送 36 02 xx xx、36 03 xx xx… 依次传输后续数据块,直到整段程序数据发送完毕。所有数据块传输完成后,Tester 发送 37 服务请求退出传输,通知 ECU 结束本次数据传输会话。传输结束后,Tester 使用 31 服务检查数据传输是否正确。如果本次刷写包含多个数据块,则会重复执行 34(请求下载)、36(传输数据)、37(退出传输)、31(例程校验)的流程,依次完成其他数据块的刷写与校验。所有数据块刷写、校验全部完成后,Tester 发送31 01 FF 01服务,确认目标 ECU 的内存编程依赖关系,验证各程序段之间的兼容性与完整性。最后,Tester 发送 11 01 服务,请求 ECU 重启,至此,第二步骤刷写全部结束。
3. 刷写后
这一步骤是刷写完成后的收尾与状态恢复工作,确保 ECU 回归正常运行。

(图 5 刷写后流程图)
首先,诊断仪 Tester 10 03 指令切换至拓展会话,随后发送 28 服务指令,重新开启刷写前关闭的非诊断报文,恢复整车总线通信;同时发送 85 服务指令,重新开启 DTC 存储功能,恢复故障诊断能力。最后,Tester 发送 10 01 指令,将 ECU 从拓展会话切回默认会话,完成整个刷写流程。
四
总结
以上就是一般的基于 UDS 诊断的 ECU 刷写流程。诊断的刷写流程架构基本一致,但会存在部分差异,视具体情况而定。Q-Tester.Expert 是基于 ODX(ASAM MCD-2D/ISO 22901-1)国际标准的工程诊断仪,内置 Sequence 序列可以支持各种刷写流程。通过此诊断仪,用户可实现与 ECU 控制器之间的数据交互,高效完成软件烧录这一过程,同时 Q-Tester.Expert 还支持以太网诊断(DoIP),也可根据用户需求进行扩展开发。
| 刷写实例

▶ 突破限制,简化流程 | ECU单件诊断测试(DoIP on 1000BASE-T1)创新方案
(素材使用声明:本网站素材使用力求合法,若不慎侵权请联系我们删除;本网站内容未经授权使用,将依法追究责任。)