简介
ISO-14229-1在定义了所有的UDS诊断服务之后,还用了一章内容描述了基于这些诊断服务给ECU刷写软件的流程。14229写得很详细,内容较多,我在这里就讲一下核心的一些步骤,具体细节如有需要或感兴趣可以去看规范原文。 ECU的软件可以从Application和Boot的角度区分,如下图所示: 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-ProgrammingStep 1:进入Extended Session Step 2:使用31服务执行检查编程条件的Routine,如条件不满足(比如车速过高等),则退出刷写。 Step 3:使用85服务关闭DTC的存储 Step 4:使用28服务关闭与诊断无关的报文,将节约出来的通信资源用于刷写软件,提升刷写速度。 2 ProgrammingStep 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这个过程非常简单,我直接引用14229的图了,在软件刷写并且验证完成之后,只需要执行11命令进行重启或者10命令回到Default Session就可以了。 总结
本文对14229中定义的流程进行了简化,但是主干部分几乎一致。毕竟完整地解释规范的确工作量太大,业余时间没有那么多。如有疑问或建议,欢迎留言评论。 作者介绍:张大侠,一汽大众资深攻城狮。主要从事汽车诊断刷新方面的工作,在UDS诊断、车载以太网等方面都有独到的见解,对这块感兴趣的朋友,请关注张大侠个人公众号:汽车ECU网络诊断技术。 免责声明:本网站的部分内容,来源于其他网站的转载,转载目的在于传递和分享更多信息,并不代表本平台赞同其观点和对其真实性负责,版权归原作者所有,如有侵权请联系我们删除。
|