(资料图片)
一.双Bank机制
STM32G系列的Flash支持Single bank mode 和 Dual bank mode,Single bank mode 即常规的Flash模式,Dual bank mode会将Flash分为两块,正常情况下系统复位时会从Bank1启动,0x0800 0000对应为Bootloader复位向量,首先运行的代码为Bootloader。Bootloader跳转APP时将FB_MODE设置为1将Bank1和Bank2交换,这样0x0800 0000会对应为APP复位向量表,FBL跳转到0x0800 0000即完成到APP的跳转。该方案的优点为Bootloader和APP的Link文件不需要做任何调整即可运行。APP的复位向量表位置和Bootloader一直不需要调整,当进行Boot自更新时,首先将BFB2设置为1,当出现异常下电或复位时,再次上电系统会直接从Bank2启动再次执行自更新程序,以确保控制器不会"变砖"
双Bank切换图像如下图所示:
二.跳转APP机制
Flash配置为Dual bank mode(DBANK = 1),在Bank1的起始位置(0x0800 0000)放置Bootloader的中断向量表,在Bank2的其实位置(0x0804 0000)放置Bootloader的中断向量表。
正常情况下系统复位时会从Bank1启动,0x0800 0000对应为Bootloader复位向量,首先运行的代码为Bootloader。Bootloader跳转APP时将FB_MODE设置为1将Bank1和Bank2交换,这时0x0800 0000会对那个为APP复位向量表,FBL跳转到0x0800 000即完成APP跳转。当进行Boot自更新时,首先将BFB2置为1,修改为从Bank2启动,当出现异常下电或复位时,系统再次上电会直接从Bank2启动,再次执行自更新程序。
标签:
相关新闻