基于UDS的ECU软件刷写流程

2020年10月22日 评论 460 1333字

 简介

ISO-14229-1在定义了所有的UDS诊断服务之后,还用了一章内容描述了基于这些诊断服务给ECU刷写软件的流程。14229写得很详细,内容较多,我在这里就讲一下核心的一些步骤,具体细节如有需要或感兴趣可以去看规范原文。

ECU的软件可以从Application和Boot的角度区分,如下图所示:

基于UDS的ECU软件刷写流程

ECU Power-On之后首先会进入Boot Manager,然后Boot Manager会对Application进行Check,如果Application没问题,则进入Application正常运行,如果Application有问题(比如软件与硬件兼容问题),则会进入Reprogramming Software(也叫Bootloader),等待用户写入正确的软件。在Application中的时候,也可以通过转换Session的命令,进入到Bootloader中进行软件的重新刷写。也就是说,刷软件的过程就是在Bootloader中进行的。14229建议Boot Software不应该被更改,或至少是不应该被轻松地更改。

 软件刷写步骤

软件刷写总体上分为三个步骤:

1  Pre-Programming
2  Programming
3  Post-Programming

从名字上也大概可以猜到它们都是做些什么了。

1  Pre-Programming

Step 1:进入Extended Session

Step 2:使用31服务执行检查编程条件的Routine,如条件不满足(比如车速过高等),则退出刷写。

Step 3:使用85服务关闭DTC的存储

Step 4:使用28服务关闭与诊断无关的报文,将节约出来的通信资源用于刷写软件,提升刷写速度。

2  Programming

基于UDS的ECU软件刷写流程

Step 1:进入Programming Session

Step 2:使用27服务进行安全访问

Step 3:写入指纹信息,即标记写软件人的身份

Step 4:执行31服务,删除存储空间

Step 5:按照我在以前的文章里写的,调用34,36,37服务完成数据的写入。

Step 6:执行31服务,检查刚刚写入的数据块是否正确,典型的就是执行Checksum验证。如果还有数据块要写,则再跳回Step 5,如果没有,则进入Step 7。

Step 7:写入所有数据块之后,一个完整的软件也就写好了,此时需要ECU检查一下这个软件是否可用,比如软硬件兼容问题。

3  Post-Programming

基于UDS的ECU软件刷写流程

这个过程非常简单,我直接引用14229的图了,在软件刷写并且验证完成之后,只需要执行11命令进行重启或者10命令回到Default Session就可以了。

总结

本文对14229中定义的流程进行了简化,但是主干部分几乎一致。毕竟完整地解释规范的确工作量太大,业余时间没有那么多。如有疑问或建议,欢迎留言评论。

作者介绍:张大侠,一汽大众资深攻城狮。主要从事汽车诊断刷新方面的工作,在UDS诊断、车载以太网等方面都有独到的见解,对这块感兴趣的朋友,请关注张大侠个人公众号:汽车ECU网络诊断技术。

推荐阅读:

基于CAN总线实现的UDS诊断(DoCAN)

基于CAN-FD的诊断通信传输层

E/E系统架构开发指南-电子电器系统开发流程 E/E System Development

继续阅读
weinxin
立即关注公众号:
1、免费领取线束设计资料包(资源); 2、进入线束技术交流专家群(进群);3、免费获取发布求职招聘信息。
小孙
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: