1. 什么是BootLoader
车用BootLoader是指车辆ECU中的一段用来更新ECU应用程序的代码,它与APP共同存在于ECU中,车辆正常运行时ECU执行APP代码,当有软件更新需求时,上位机可通过预定义好的机制触发ECU BootLoader代码运行,将旧的APP擦除,写入新的APP,从而在不拆除ECU的情况下实现车辆ECU软件的更新。
之前写过一篇《英飞凌XC2000系列CAN BootLoader(CAN_BSL)的实现》,感兴趣的朋友可以点击直接跳转。
之前这篇文章介绍的是利用英飞凌内置的BootLoader机制实现程序的更新,优点是开发难度小,但不能实现程序更新流程的完全自定义。而现在汽车上控制器的程序更新流程往往由整车厂定义,单片机内置的BootLoader机制往往不能满足要求。而本文所讲的BootLoader是基于UDS,可实现整个流程的自定义,而且基本理念对于各个厂商的单片机都适用,方便移植。本次开发平台是Keil。
2. 采用的通信协议
底层通信协议是用的CAN(ISO 11898),网络层是用的ISO 15765-2,应用层协议是UDS(车辆通用诊断协议,ISO 14229-1)。想要标准(英文原版)的朋友可点下面的链接:
ISO 11898: