本文档介绍了通过低功耗蓝牙连接在 STM32WB 设备上进行 OTA 固件更新的过程。它讲解如何使用 STM32Cube 固件包中提供的 OTA 应用程序,实现用户应用程序、无线固件和固件升级服务的更新。
OTA 固件更新原理
必须在设备生命周期内更新固件,以确保最佳性能、用新功能或更正的补丁更新应用程序并保持最高的安全级别。
用户应用程序、无线固件和 FUS 更新
用户应用程序运行在 CPU1(Cortex® M4)上,而无线固件和 FUS 运行在 CPU2(Cortex® M0+)上。这三个应用程序可以独立更新。
由于无线和 FUS 以加密格式提供,其更新过程依赖于 STM32WB 安全固件以实现更新内容的解密以及 Flash 存储区内受保护区域的分配。
无线
可以通过物理链路(如 USB、UART 或 I2C)来完成固件的更新,但此过程需要对设备上特定端口进行物理访问。得益于 OTA,可以使用无线连接来远程更新固件。在本应用笔记中,无线连接使用低功耗蓝牙协议。
更新客户端
更新过程遵循客户端/服务端架构,由外部客户端发起。需更新设备作为服务端,通过响应客户端的请求实现新版本固件的升级。
本文介绍了意法半导体提供的基于低功耗蓝牙协议的两个 OTA 客户端的示例:
-ST BLE Sensor:用于 Android™或 iOS 设备的移动应用程序
-STMCubeMonitor-RF:在 HCI 透传模式下配置的与低功耗蓝牙 USB 蓝牙模块通信的 PC 工具
OTA 应用程序
OTA 应用程序是一个独立运行的应用程序,集成了用于管理固件传输及将其烧录到 Flash 存储器中准确位置的相关低功耗蓝牙服务。它在用户应用程序接收 OTA 请求后由 CPU1 激活和执行。
存储器架构
STM32WBFlash 存储器分为两部分:用户部分和安全部分。用户部分可供 CPU1 访问且包含 OTA应用程序,及用户应用程序代码和数据。安全部分仅可供 CPU2 访问且包含 FUS 和无线固件。此部分不可供调试端口、用户应用程序或自举程序访问。选项字节 SFSA 提供两个区域之间的边界,上述存储器为安全部分。SFSA 值取决于无线固件大小,可在安装过程中对其进行调整。