本文详细介绍了汽车电子控制单元(ECU)的Bootloader刷新过程,包括Primary和Secondary Bootloader的角色,以及通过OBD接口进行的Bootloader刷新步骤。主要流程涉及会话切换、安全解锁、软件下载与验证等,确保ECU软件更新的安全与完整。
摘要由CSDN通过智能技术生成
bootloader是指基于UDS诊断的车载控制器mcu程序刷新。
成品车上要进行ECU的软件刷新,可以通过即Bootloader刷写和OTA升级。通过OBD接口进行Bootloader刷新的方式是目前的主流方式。
Bootloader分为Primary Bootloader跟Secondary Bootloader。
Primary Bootloader由ECU供应商预先编辑到非易失性存储器中,包含PBL的区域必须防止擦除,避免由于意外擦除PBL。
Secondary Bootloader存储在易失性存储器中。
Bootloader的主要流程如下:
Part1:
1、通过22服务读取供应商ECU硬件版本号、引导程序软件识别号、零件BOM号
2、通过10 03切换到扩展会话模式,并且获取 P2CAN_Server_max,P2*CAN_Server_max,时间参数。分别代表ECU对诊断仪请求回复的最大时间限值,和收到增强响应时间后的最大响应时间限值。
比如发送10 03后收到50 03 00 32 00 C8。
那么P2CAN_Server_max就等于0x32划算为10进制后为50ms
P2*CAN_Server_max就等于0xC8划算为10进制后200x10=2000ms,注意这里有个10倍的关系。
3、通过85服务关闭DTC存储,因为切换到10 02会话后会停止发送应用报文,避免其他ECU记录节点丢失DTC故障。
4、通过28服务Disable应用报文收发。
Part2:
1、通过10 02切换到ProgrammingSession。
2、通过27服务进行安全解锁。
3、通过2E服务写入诊断仪序列号及ECU软件刷新日期。
Part3:
1、通过34、36、37服务下载Secondary Bootloader,即FlashDriver文件。
2、通过31服务检查SBL程序的数据一致性和完整性。
Bootloader会计算所有下载数据的校验和,此校验和将于31服务发送的Data进行比较。如果相同则认为数据可用。
3、通过31服务请求目标ECU清除部分内存。
4、通过34、36、37服务下载APP程序,即最终的mcu程序。
5、通过31服务检查APP程序的数据一致性和完整性。
6、通过31服务请求目标ECU运行一个例程,检查所有下载的软件部分的依赖关系。
Part4:
1、通过11 01 重启。
2、等待2S。
3、通过10 03切换到扩展会话。
4、通过28服务Enable应用报文发送接收。
5、通过85服务Enable DTC记录。
6、通过10 01切换到默认会话。
7、通过14 FF FF FF 清除DTC。
至此,已经通过Bootloader完整的刷新了一遍ECU软件。
————————————————