前言
引导加载程序,即Bootloader(简称BL),是ECU的基本模块,实现方式也很多。
本文介绍的Bootloader刷写功能的下载协议是通过UDS诊断服务实现的。
一、Bootloader简介:
Boot Loader在嵌入式系统里,一般分为两部分:PBL(Primary Bootloader,第一引导加载程序)和SBL(Second Bootloader,第二引导加载程序)。
PBL一般固化在程序Flash存储空间中,地址一般在CodeFlash(类似于PC程序或手机APP程序中的代码区)的最开始位置,例如0x0000到0x7FFF。FBL本身一般无法通过车辆CAN网络进行刷写。需要刷写FBL一般有两种方式:1.将ECU拆开,利用ECU刷写夹具进行刷写(如图1)。2. 利用CCP或XCP协议,通过SBL来刷写PBL。
PBL中一般会存储重置(reset)和中断(interrupt)的向量地址。换句话说,PBL中唯一的中断处理任务就是reset。PBL一般只用来引导SBL加载到RAM中,真正刷写任务是由SBL完成的,在内存中keep alive的SBL,还可以反过来刷写PBL。
图1 ECU刷写夹具
SBL一般存在于RAM(内存)中,一般是由PBL将SBL代码加载到RAM中,每次使用过后会从RAM中删除。SBL可以认为