- 背景
升级的用途主要有两种。
- 新功能升级,有些新功能推送因为上市时间或者主机厂策略会在上市后更新,但因为整车已经组装完毕,且ECU大都在比较隐蔽的地方,不可能为了升级一个ECU拆了全车,成本太高,通过升级的方式可减小成本提高效率。
- 产线维修,车辆上市后,由于量变,难免会有一些bug流出,有些找不到原因的简单方法就是存数据重新升级确认功能是否正常,当然有些质量要求高的主机厂会要求拆机回技术部门分析,得出明确解决方案后通过OTA方式推送升级。
还有一些为了适配其他ECU做升级等可以归类为新功能升级。
- 种类
目前常用升级种类有远程OTA后台推送升级,U盘升级,CAN升级。远程OTA有些做的空口传输有些直接是以太网传输,U盘升级就是用U盘传输,CAN升级一般直接用诊断仪传输文件。相较传输后的升级流程其实大差不差,只是不同格式的数据头格式不一样,比如以太网就需要用以太网的数据头加上CAN升级合适数据的以太网形式发出来而已。
- 流程
此文档仅介绍最基础的CAN升级流程,其他可以套用理解。
CAN升级一般分为几个阶段,预编程阶段、编程阶段、后编程阶段(各家规范描述名称可能各有不同)。
- 预编程阶段,主要是通过DID先检查一些基础信息是否满足升级要求。比如检查一些分区状态,刷写次数,版本等信息(各家略有差异);
- 编程状态,是主要的刷写流程,会分成一个小步骤完成刷写:
2-1、条件检查:刷写升级之前会进行一些关键信息条件检查,首先要通过10服务先进入扩展会话,随后通过85服务关闭DTC的检测,避免DTC检测对刷写造成干扰,随后还要通过28服务关闭诊断以外的其他报文的发送,同样也是为了避免其他报文对刷写造成干扰;
2-2、预刷写:进入编程会话,随后请求安全解锁(各家安全解锁略有差异,有些采用27服务,有些采用29、31服务与后台的信息传输),最后有些需要通过特定DID写入一些升级的ID信息比如升级时间车型之类的;
2-3、刷写FlashDriver:在刷写APP文件前都要先刷写驱动文件,通过后才能进行APP的刷写,该过程首先需要通过34服务请求数据传输,随后通过36服务开始数据块的传输,全部传输完成后,再通过37服务请求退出数据传输,最后再通过31服务检查以上传输的数据块完整性相关性是否达标,符合要求后才能进行下一步的APP刷写;
2-4、刷写APP:首先要通过31服务擦除原有APP数据,擦除完成后才能写入新的APP数据块,避免原数据对新数据造成影响;随后开始数据传输和上面驱动传输基本一致通过34、36、37服务的组合实现数据传输,同样每传输完一个数据块就通过31服务对数据进行完整性及相关性的校验,全部通过后,才能继续升级;
2-5、后置处理:有些会写入升级的日期,然后通过11服务复位,再通过14服务清除故障信息,至此如果都正常响应其实已经是升级完成了,但有些还会惯例检查下升级信息,确保升级有效;
3、后编程模式:主要就是通过DID读一些软硬件版本号之类的升级信息校验,全部满足要求后则升级成功。