一、PBL和SBL的定义
1:PBL(Primary Bootloader)是第一级引导程序,主要执行芯片ECU的初始化和底层硬件的检测;
2:SBL(Secondary Bootloader)是第二级引导程序,主要负责执行从存储介质中读取数据,并加载到内存中执行;
二、PBL和SBL两者的关系
1、Bootloader是由Boot Mannger(PBL) + Reprogramming Software(SBL)组成,从图可以看出,程序运行到Boot Mannger以后,决定进入APP还是SBL。
具体检测操作:首先判断是否接收到更新APP的需求(即检测是否请求programming会话),然后再检测APPValid有效标志位。若未检测到请求Programming会话,则判断APPValid有效标志位,如果APPValid有效则进入APP,则功能正常运行;如果APPValid无效,则停留在BOOT模式下;若检测到请求Programming会话,则需要更新Application;所以程序先进入的是PBL然后根据标志位是否进入SBL;
2、SBL存在的意义就是更新APP程序。SBL更新APP程序的步骤:首先发1002会话保证处于PBL模式下----->其次下载SBL------>接着激活SBL------校验SBL的有效性------>下载APP------>校验APP的有效性;
3、BOOT刷新所用到的两个文件是FlashDriver驱动程序和boot软件,在这里我们可以将SBL理解为FlashDriver驱动程序,PBL理解为Boot软件。
4、SBL和PBL的关系是:SBL需要在PBL模式下运行并激活,MCU一上电首先复位到boot入口(上图的Boot Manager)。
5、注意点:SBL只能借助工具刷进去,当没有reset复位或者掉电,程序就会停留在SBL模式中;PBL是我们通常请求的1002会话模式下的程序,当MCU收到1002请求并且响应之后,程序会进入PBL模式中;