本文檔介紹了通過低功耗藍(lán)牙連接在 STM32WB 設(shè)備上進(jìn)行 OTA 固件更新的過程。它講解如何使用 STM32Cube 固件包中提供的 OTA 應(yīng)用程序,實現(xiàn)用戶應(yīng)用程序、無線固件和固件升級服務(wù)的更新。
OTA 固件更新原理
必須在設(shè)備生命周期內(nèi)更新固件,以確保最佳性能、用新功能或更正的補丁更新應(yīng)用程序并保持最高的安全級別。
用戶應(yīng)用程序、無線固件和 FUS 更新
STM32WB 系列微控制器基于雙 Arm?(a)內(nèi)核。
用戶應(yīng)用程序運行在 CPU1(Cortex? M4)上,而無線固件和 FUS 運行在 CPU2(Cortex? M0+)上。這三個應(yīng)用程序可以獨立更新。
由于無線和 FUS 以加密格式提供,其更新過程依賴于 STM32WB 安全固件以實現(xiàn)更新內(nèi)容的解密以及 Flash 存儲區(qū)內(nèi)受保護(hù)區(qū)域的分配。
無線
可以通過物理鏈路(如 USB、UART 或 I2C)來完成固件的更新,但此過程需要對設(shè)備上特定端口進(jìn)行物理訪問。得益于 OTA,可以使用無線連接來遠(yuǎn)程更新固件。在本應(yīng)用筆記中,無線連接使用低功耗藍(lán)牙協(xié)議。
更新客戶端
更新過程遵循客戶端/服務(wù)端架構(gòu),由外部客戶端發(fā)起。需更新設(shè)備作為服務(wù)端,通過響應(yīng)客戶端的請求實現(xiàn)新版本固件的升級。
本文介紹了意法半導(dǎo)體提供的基于低功耗藍(lán)牙協(xié)議的兩個 OTA 客戶端的示例:
-ST BLE Sensor:用于 Android?或 iOS 設(shè)備的移動應(yīng)用程序
-STMCubeMonitor-RF:在 HCI 透傳模式下配置的與低功耗藍(lán)牙 USB 藍(lán)牙模塊通信的 PC 工具
OTA 應(yīng)用程序
OTA 應(yīng)用程序是一個獨立運行的應(yīng)用程序,集成了用于管理固件傳輸及將其燒錄到 Flash 存儲器中準(zhǔn)確位置的相關(guān)低功耗藍(lán)牙服務(wù)。它在用戶應(yīng)用程序接收 OTA 請求后由 CPU1 激活和執(zhí)行。
存儲器架構(gòu)
STM32WBFlash 存儲器分為兩部分:用戶部分和安全部分。用戶部分可供 CPU1 訪問且包含 OTA應(yīng)用程序,及用戶應(yīng)用程序代碼和數(shù)據(jù)。安全部分僅可供 CPU2 訪問且包含 FUS 和無線固件。此部分不可供調(diào)試端口、用戶應(yīng)用程序或自舉程序訪問。選項字節(jié) SFSA 提供兩個區(qū)域之間的邊界,上述存儲器為安全部分。SFSA 值取決于無線固件大小,可在安裝過程中對其進(jìn)行調(diào)整。