汽车 ECU FlashBootLoader 常见刷写流程

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软件。

你可能感兴趣的:(车载开发)