概述
在 STM32WB 微控制器中,F(xiàn)US(Firmware Upgrade Services)是用于固件升級(jí)的一種服務(wù)。這項(xiàng)服務(wù)可以讓你更新設(shè)備上的無(wú)線棧固件(如藍(lán)牙、Zigbee或 Thread 棧),以及無(wú)線 MCU (microcontroller unit) 的系統(tǒng)服務(wù)。
FUS 實(shí)質(zhì)上是設(shè)備的一部分固件,它可以獨(dú)立于主應(yīng)用程序運(yùn)行,主要負(fù)責(zé)安全地處理設(shè)備固件的升級(jí)。這包括檢查新固件的有效性,確保新固件被正確地寫(xiě)入設(shè)備,以及在出現(xiàn)問(wèn)題時(shí)回滾到舊版本的固件。
總的來(lái)說(shuō),F(xiàn)US 是 STM32WB 和其他 STM32 無(wú)線微控制器中一個(gè)非常重要的組件,可以確保設(shè)備固件的安全更新。
最近在弄ST的教程,需要樣片的可以加群申請(qǐng):615061293/925643491 。
硬件準(zhǔn)備
首先需要準(zhǔn)備一個(gè)開(kāi)發(fā)板,這里我準(zhǔn)備的是自己繪制的開(kāi)發(fā)板,需要的可以進(jìn)行申請(qǐng)。
主控為STM32WB55RGV6
視頻教學(xué)
[https://www.bilibili.com/video/BV1nYmzY6EE9/]
樣品申請(qǐng)
[https://www.wjx.top/vm/OhcKxJk.aspx#]
源碼下載
[https://download.csdn.net/download/qq_24312945/90044071]
參考程序
[https://github.com/CoreMaker-lab/STM32WB55_SENSOR]
[https://gitee.com/CoreMaker/STM32WB55_SENSOR](
固件升級(jí)
FUS(固件升級(jí)服務(wù))是在 STM32WB Cortex?-M0+上運(yùn)行的固件,并提供安裝、升級(jí)或刪除 STM32WB Cortex?-M0+無(wú)線協(xié)議棧
存儲(chǔ)器映射
FUS 在 Flash 存儲(chǔ)器中有一個(gè)專(zhuān)用空間,該空間取決于 FUS 大小。它還使用 SRAM2a 和 SRAM2b 中的專(zhuān)用空間
以及 SRAM2a(共享表)中的共享空間。由選項(xiàng)字節(jié)定義 Flash 存儲(chǔ)器 SRAM2a 和 SRAM2b 中的專(zhuān)用空間大小。
若需更多信息,請(qǐng)參見(jiàn)產(chǎn)品參考手冊(cè)。
與無(wú)線協(xié)議棧(如果安裝)共享專(zhuān)用 Flash 存儲(chǔ)器和 SRAM 區(qū)域。但在給定時(shí)間,只能在 Cortex?-M0+上運(yùn)行
FUS 或無(wú)線協(xié)議棧。
FLASH安全區(qū)設(shè)置
安全CPU2可以通過(guò)加載新的用戶(hù)選項(xiàng)SFSA來(lái)修改CPU2的安全起始地址。
從閃存存儲(chǔ)器的基地址開(kāi)始加上[SFSA x 0x1000](包含),直到最后一個(gè)閃存存儲(chǔ)器地址。當(dāng)啟用CPU2安全性時(shí),CPU2安全區(qū)域的最小大小為一個(gè)扇區(qū)(4K字節(jié))。
例如,一個(gè)從地址0x080C 7000(包含)到地址0x080F FFFF(包含)的CPU2安全區(qū)域。
SFSA[7:0]包含了安全閃存存儲(chǔ)區(qū)域第一個(gè)4K字節(jié)頁(yè)面的起始地址。
SRAM安全區(qū)設(shè)置
CPU2安全SRAM2a和SRAM2b區(qū)域以1 K字節(jié)的粒度定義,并通過(guò)安全備份RAM(SRAM2a)起始地址的用戶(hù)選項(xiàng)(BRSD和SBRSA)以及安全非備份RAM(SRAM2b)起始地址的用戶(hù)選項(xiàng)(NBRSD和SNBRSA)定義在閃存中。這些偏移由閃存內(nèi)的安全SRAM2起始地址和CPU2復(fù)位向量寄存器(FLASH_SRRVR)中的SBRSA和SNBRSA字段控制。
CPU2安全的SRAM2a區(qū)域定義為備份SRAM2a基地址 + [SBRSA x 0x0400](包括),直到最后一個(gè)SRAM2a地址。
例如,對(duì)于CPU2安全的SRAM2a區(qū)域,從地址0x20035000(包括)到地址0x20037FFF(包括),需要將FLASH_SRRVR寄存器編程為SBRSA = 0x14。
任何CPU1的讀取訪問(wèn)都不返回?cái)?shù)據(jù),并且對(duì)CPU2安全SRAM2a區(qū)域的寫(xiě)訪問(wèn)會(huì)被丟棄并觸發(fā)總線錯(cuò)誤。
當(dāng)BRSD設(shè)置為1時(shí),SRAM2a是非安全的。
CPU2安全的非備份SRAM2b區(qū)域定義為非備份SRAM2b基地址 + [SNBRSA x 0x0400](包括),直到最后一個(gè)SRAM2b地址。
例如,對(duì)于CPU2安全的SRAM2b區(qū)域,從地址0x2003EC00(包括)到地址0x2003FFFF(包括),需要將FLASH_SRRVR寄存器編程為SNBRSA = 0x1B。
任何CPU1的讀取訪問(wèn)都不返回?cái)?shù)據(jù),并且對(duì)CPU2安全SRAM2b區(qū)域的寫(xiě)訪問(wèn)會(huì)被丟棄并觸發(fā)總線錯(cuò)誤。
當(dāng)NBRSD設(shè)置為1時(shí),SRAM2b是非安全的。
FUS 版本兼容性
FUS固件下載
Firmware Update Service(FUS)是一種用于在STM32WB微控制器上更新固件的功能。FUS下載是指通過(guò)FUS服務(wù)進(jìn)行固件更新的過(guò)程。通過(guò)FUS下載,您可以通過(guò)無(wú)線方式將新的固件加載到STM32WB設(shè)備中,而無(wú)需使用傳統(tǒng)的有線編程方法。 在ST官網(wǎng)中提供了固件,下載地址:
[https://www.st.com/zh/embedded-software/stm32cubewb.html]
下載完畢之后,打開(kāi)該目錄,有對(duì)應(yīng)的版本說(shuō)明文檔。
固件升級(jí)流程如下所示。
打開(kāi)STM32CubeProgrammer,連接開(kāi)發(fā)板。 進(jìn)入固件升級(jí)服務(wù),點(diǎn)擊Start FUS。
連接成功會(huì)彈出如下所示窗口,若沒(méi)鏈接成功,可以點(diǎn)擊復(fù)位鍵。
可以使用STM32CubeProgrammer軟件,通過(guò)點(diǎn)擊"Read FUS infos"按鈕,來(lái)讀取安裝在STM32WB微控制器中的FUS(Firmware Update Service)版本信息。這里的FUS版本為V0.5.3.0
通過(guò)打開(kāi)上述的"Release_Notes.html"說(shuō)明文檔,可以查看固件包中不同MCU所對(duì)應(yīng)的地址差異。 同時(shí)這里要求的固件包為V1.2.0,如果不是的話(huà)需要進(jìn)行 STEP 5/6 。
這里選擇stm32wb5x_BLE_Stack_full_fw.bin進(jìn)行升級(jí),是一個(gè)藍(lán)牙5.3的固件。
選擇相應(yīng)的固件文件和起始地址后,您可以查看對(duì)應(yīng)的固件等級(jí),并點(diǎn)擊"Firmware Upgrade"按鈕進(jìn)行固件升級(jí)。
升級(jí)成功如下所示。
若出現(xiàn)如下報(bào)錯(cuò),說(shuō)明沒(méi)有進(jìn)行第五步。
需要進(jìn)行第五步,stm32wb5x_FUS_fw_for_fus_0_5_3.bin 這個(gè)二進(jìn)制文件是用于刷新無(wú)線協(xié)處理器二進(jìn)制文件的實(shí)用程序。
選中stm32wb5x_FUS_fw_for_fus_0_5_3.bin,同時(shí)輸入對(duì)應(yīng)的地址進(jìn)行升級(jí)。
成功升級(jí)會(huì)顯示如下所示窗口。
重新讀取FUS版本,可以看見(jiàn)已經(jīng)由之前的V0.5.3.0變?yōu)榱薞1.2.0.0
重新升級(jí)stm32wb5x_BLE_Stack_full_fw.bin。
這個(gè)時(shí)候可以查看到固件是升級(jí)成功了的。
最后我們可以進(jìn)行第八步,設(shè)置boot寄存器。
通過(guò)USB進(jìn)行下載
通過(guò)USB下載固件的具體流程如下所示。
通過(guò)usb進(jìn)行下載,需要進(jìn)行一些跳線帽的設(shè)置。
同時(shí)需要將BOOT0進(jìn)行上拉以及設(shè)置nSWboot0=1為1。
設(shè)置nSWboot0=1為1。
切換為USB連接,連接上如下所示。
對(duì)于FUS版本,不同的FUS版本對(duì)應(yīng)的步驟不一樣。
由于我之前升級(jí)過(guò)了,可以直接下載固件。
下載成功如下所示。
注意事項(xiàng)
協(xié)議棧下載進(jìn)去了可能無(wú)法運(yùn)行,需要Start Wireless Stack。
審核編輯 黃宇
-
藍(lán)牙
+關(guān)注
關(guān)注
116文章
6058瀏覽量
173631 -
STM32
+關(guān)注
關(guān)注
2291文章
11026瀏覽量
363638
發(fā)布評(píng)論請(qǐng)先 登錄
STM32WB55_NUCLEO開(kāi)發(fā)(12)----FUS更新

STM32WB55開(kāi)發(fā)(6)----FUS更新

STM32WB55RG開(kāi)發(fā)(1)----開(kāi)發(fā)板測(cè)試

STM32WB55RG是否可以使用j-flash通過(guò)j-link燒錄協(xié)議棧和FUS bin文件?
升級(jí)STM32WB55 dongle FUS版本遇到的疑問(wèn)求解
NUCLEO-WB55RG更新了FUS,在CubeIDE里無(wú)法燒錄怎么解決?
STM32WB55RG使用USB ST-LINK連接電腦顯示未知USB設(shè)備,更新驅(qū)動(dòng)后也沒(méi)有變化是什么原因?
P-NUCLEO-WB55.USBDongle開(kāi)發(fā)板升級(jí)FUS和無(wú)線協(xié)議棧失敗的原因?
STM32WB55RG使用USB ST-LINK連接電腦顯示未知USB設(shè)備,更新驅(qū)動(dòng)后也沒(méi)有變化,是什么原因?
STM32WB55RG Thread SED如何得到低功耗?
FUS_STATE_IMG_NOT_AUTHENTIC在STM32WB55上從0.5.3更新FUS時(shí)出錯(cuò)怎么解決?
STM32WB55RG使用USB ST-LINK連接電腦顯示未知USB設(shè)備,更新驅(qū)動(dòng)后也沒(méi)有變化的原因?
STM32WB55RG使用USB ST-LINK連接電腦顯示未知USB設(shè)備,更新驅(qū)動(dòng)后也沒(méi)有變化怎么解決?
STM32WB55RG開(kāi)發(fā)(5)----監(jiān)測(cè)STM32WB連接狀態(tài)

評(píng)論