關于STM32G系列雙Bank機制刷寫機制
一.雙Bank機制
STM32G系列的Flash支持Single bank mode 和 Dual bank mode,Single bank mode 即常規(guī)的Flash模式,Dual bank mode會將Flash分為兩塊,正常情況下系統(tǒng)復位時會從Bank1啟動,0x0800 0000對應為Bootloader復位向量,首先運行的代碼為Bootloader。Bootloader跳轉(zhuǎn)APP時將FB_MODE設置為1將Bank1和Bank2交換,這樣0x0800 0000會對應為APP復位向量表,FBL跳轉(zhuǎn)到0x0800 0000即完成到APP的跳轉(zhuǎn)。該方案的優(yōu)點為Bootloader和APP的Link文件不需要做任何調(diào)整即可運行。APP的復位向量表位置和Bootloader一直不需要調(diào)整,當進行Boot自更新時,首先將BFB2設置為1,當出現(xiàn)異常下電或復位時,再次上電系統(tǒng)會直接從Bank2啟動再次執(zhí)行自更新程序,以確??刂破鞑粫?#34;變磚"
雙Bank切換圖像如下圖所示:

二.跳轉(zhuǎn)APP機制
Flash配置為Dual bank mode(DBANK = 1),在Bank1的起始位置(0x0800 0000)放置Bootloader的中斷向量表,在Bank2的其實位置(0x0804 0000)放置Bootloader的中斷向量表。
正常情況下系統(tǒng)復位時會從Bank1啟動,0x0800 0000對應為Bootloader復位向量,首先運行的代碼為Bootloader。Bootloader跳轉(zhuǎn)APP時將FB_MODE設置為1將Bank1和Bank2交換,這時0x0800 0000會對那個為APP復位向量表,F(xiàn)BL跳轉(zhuǎn)到0x0800 000即完成APP跳轉(zhuǎn)。當進行Boot自更新時,首先將BFB2置為1,修改為從Bank2啟動,當出現(xiàn)異常下電或復位時,系統(tǒng)再次上電會直接從Bank2啟動,再次執(zhí)行自更新程序。