
引言5 C3 m& T6 G# a 本文档介绍了通过低功耗蓝牙®(BLE)连接在ST32WB设备上进行空中(OTA)固件更新的过程。它解释了如何使用STM32Cube固件包中提供的OTA应用程序。 该应用程序可以更新用户应用程序、无线固件和固件升级服务。( a2 s+ t* t0 P5 I 3 STM32WB设备上的OTA应用程序/ l2 I4 ~; V0 u3 l$ N( Q1 s 3.1 空中固件更新% d1 |4 B1 U. Y+ E3 B) x i 3.1.1 原理 必须在设备生命周期内更新固件,以确保最佳性能、用新功能或更正的补丁更新应用程序并 保持最高的安全级别。' X2 f* s! L1 ]$ x, o# B1 m" w4 }7 c( j " O: _0 f( @) x* J, \$ w 用户应用程序、无线固件和RSS更新 STM32WB系列微控制器基于双Arm®(a)内核。 用户应用程序运行在CPU1(Cortex® M4)上,而无线固件和RSS运行在CPU2(Cortex®M0+)上。这三个应用程序可以独立更新。9 G4 P7 o8 g) S8 z/ Q( S3 e 由于无线固件和RSS以加密格式提供,其更新过程依赖于用于闪存受保护区域内解密和安装的STM32WB安全固件(RSS)。 ![]() 5 r6 i3 t" p3 E% Y: V: b+ f 无线3 w5 O% Y+ r! x/ p, [( z 可以通过典型的物理链路(如USB、UART或I2C)来完成固件的更新,但此过程需要对设备上特定的连接器进行物理访问。得益于OTA,可以使用无线连接来远程更新固件。在本应用笔记中,无线连接使用BLE协议。5 M" v: ~4 ]. h+ o - R1 f1 {; \: ^ j 更新客户端 更新过程遵循客户端/服务器架构。它由外部客户端发起且该设备用作服务器,从而通过安装新固件来响应请求。/ I3 E5 m; J4 L6 | % Y8 `6 V& o: ^! K 本应用笔记介绍了STMicroelectronics提供的基于BLE的OTA客户端的两种示例(请参见图 2):% G- a; {% o! \0 A2 f g& g' G$ B( N • ST BLE Sensor:用于Android™或iOS设备的移动应用程序 • STMCubeMonitor-RF:在HCI透传模式下配置的与BLE USE Dongle通信的PC工具 ![]() * x( y% B9 q; o 3.1.2 OTA应用程序& ^5 \- O; }! W/ D8 V OTA应用程序是为根据客户端请求管理固件传输而设计的独立应用程序,它提供BLE服务,并安装在闪存中的正确位置。它在用户应用程序接收OTA请求后由CPU1激活和执行。. u! @) w a& { ` 序列如图 3中所示,其中红色数字表示不同阶段。, V$ ]& k- e L- {& P! n 初始状态是用户应用运行(1)的状态。接收到OTA请求(2)时,将触发系统复位(3)且OTA应用程序变为激活(4),从而监听客户端请求(5)。针对无线固件或用户应用程序的更新提供不同服务(6和7)。 ![]() 注: 凭借此固件架构,当前用户应用程序负责接收针对用户应用程序和无线固件的OTA请求。这是该过程的入口点。然后,OTA应用程序将与客户端进行通信,以更新其中一个或另一个固件。 3.1.3 存储器架构2 ^7 F5 u5 K+ P$ A' _) Y2 j) f STM32WB闪存分为两部分:用户部分和安全部分。用户部分可供CPU1访问且包含OTA应用程序,及用户应用程序代码和数据。安全部分仅可供CPU2访问且包含RSS和无线固件。此部分不可供调试端口、用户应用程序或Bootloader访问。选项字节SFSA提供两个区域之间的边界,上述存储器为安全部分(请参见图 4)。SFSA值取决于无线固件大小,可在安装过程中对其进行调整。+ F. x; b0 ?* R0 S 8 \) l3 k! K2 W- b i1 ~ # v3 Y8 C6 s' u' S# v5 e: V* V ![]() RSS RSS储存在闪存的顶部。它嵌入了用于无线固件解密和验证的安全固件。它还为密钥提供安全存储。有关其功能的详细说明,请参阅[2]。3 r" S% f0 m7 @ : _. E, D+ ~0 D5 w* }) \% T' ^ 无线固件) f8 W! D x' c. t* j 它存储在RSS正下方。此固件驱动MCU的RF部分。支持以下几种协议:BLE全协议栈、仅BLE HCI层、Thread MTD、Thread FTD、并发模式(BLE + Thread FTD)和MAC 802.15.4(底层访问RF MAC)。' G. |* e+ V; ~' C* z 对于BLE,协议栈实施实时性方面。它包含用于管理所有实时链路层和无线电PHY交互所需的LE控制器和LE主机(图 5)。 * ?9 H" q3 X& K- A" V; i ![]() 用户应用程序和数据 这是主用户应用程序。它是设备的应用部分,实施依赖于无线协议的BLE配置文件和服务。得益于SRAM2和IPCC硬件模块,可通过实施的信箱系统实现用户应用程序和无线部分的通信(图 5)。它存储在用户闪存中的OTA应用程序之上。 为方便起见,可以在两个应用程序之间,为在固件更新期间未擦除的应用程序数据保留一个扇区。$ z+ a) z( l* a7 P 注: 如要更新,必须提供可用于新无线映像下载的空闲闪存区域。 ' ^4 M! X7 z& n' [" N OTA应用程序 它存储在闪存的前六个扇区中([0x08000000:0x08006000])。这是系统复位后的激活过程(CPU1启动地址位于闪存开始处)。如果未发出OTA请求,应用程序将直接跳到检查到的经完全编程的用户应用程序,否则,OTA应用程序正在运行且可以从客户端接收命令。9 g( l5 b7 O z& V5 n" h4 P# { 注: 不得删除OTA应用程序;如果在该过程中出现问题,则设备无法恢复。建议针对OTA应用程序设置写保护。+ C, t U* w& o* `! s; [ 3.1.4 用户应用程序更新 图 6显示了发送用户应用程序更新请求后由OTA应用程序执行的操作序列。 + H% s% K6 g2 a4 G# H" K" J& ] ![]() 首先,删除将接收新固件的扇区。对闪存进行重新编程时,此过程必不可少。建议对包含需要保持不变的应用程序数据区域设置写保护。5 E) t' ~- f! A; m+ E# ]4 \' a 第二步包括下载新映像。完成固件传输后,OTA应用程序将跳到新应用程序。. J" t* B' _# i; N; ^0 @0 O 3.1.5 无线固件更新& S5 Z3 K& @3 ~: u; w+ ^, Q$ }: @ 无线固件加密提供且已签名。需要安全RSS固件,以对协议栈进行解密并将其安装在闪存的安全部分。 m: m) v2 P8 J q- r l 无线安装的第一步与用户应用程序的相同:需要删除的用户闪存扇区以存储加密映像(图 7中的“空闲区域”)。 在第二步中,OTA应用程序下载加密的协议栈(包括新固件,图 7中以灰色显示)且需要RSS更新服务。 第三步由在CPU2上运行的RSS执行。它验证、解密并安装协议栈。在安装结束时自动设置与安全边界(SFSA、SBRSA和SNBRSA)和复位向量(SBRV)相关的选项字节。 仅在通过所有验证和完整性检查以确保设备的连接性能后才能更换当前的无线固件。( s% \% i* Q3 O; l1 ~3 g; K 5 w' E! q+ w2 E6 B/ C; Q& k ![]() 5 e6 Z3 w m2 `& }2 k$ l* }' F 3.2 固件更新的BLE服务和特性 3.2.1 BLE应用程序 – 重启请求特性 BLE服务和特性 本应用笔记中考虑的用户应用程序为BLE应用程序。它支持特定的GATT服务:为SIG配置文件(如信标器、心率)定义的标准服务或用户定义的服务。这些服务具有一组特性值,及特定的访问权限。 开发人员可以扩展服务使用的特性数量,甚至是标准化的。为了从用户应用程序调用OTA应用程序,将“重启特性”(图 8中的黄色框)添加到应用程序支持的服务。当此特性将通过BLE协议由客户端写入时,用户应用程序将跳到OTA应用程序。( h& b* I, E1 E. r0 B& k8 ]7 W, |! L5 v & f' m" ^ D( V0 B+ l' G $ L* {$ M; y/ H ![]() 重启请求$ M$ _/ U1 M; X$ F3 Q: g% U+ u+ A 重启请求具有三个要由客户端通知的不同字段: 1. 启动模式,用户应用程序重启或跳到OTA应用程序* A7 s6 v S; [$ f8 y 2. 将在其中下载新应用程序的第一个扇区指数 3. 要删除的扇区数量(新固件大小,间隔尺寸为4 KB)# v1 Q- j; X: d I 其中包含特性取决于用户应用程序的服务。 ![]() 7 F/ Z6 o: M9 ?4 A! [% m* C+ q 3.2.2 OTA应用 - 服务和特性 OTA应用程序是标准BLE应用程序。它提供具有特性的特定服务,以实现更新。 ![]() 此服务将在广告序列后由客户端应用程序识别。 : B$ G: X9 o; G) f( @+ u$ g 3.2.3 广告$ K5 e( | y" t4 U, D 在设备和客户端之间建立连接前,必须广告重启请求的可用性。 将该信息添加到制造商特定广告字段(0xFF类型)。下表中介绍了封装结构。在组B功能(位13)中指定重启请求能力。 ![]() ! R6 b8 C) B; j4 U; s* i- q2 l ![]() ; d6 a- O2 X% D' K8 `9 F$ t. k5 _ 3.3 流程说明 图 9详细说明了在更新过程中设备和客户端之间的消息和数据交换。 用户应用程序建立首次连接。向客户端广告重启请求特性(步骤1)。客户端请求设备重启时,将在OTA应用程序和客户端之间建立新的连接(步骤2)。 ![]() % T1 k; o/ R/ U8 b 完整版请查看:附件 |
STM32WB系列微控制器空中应用和无线固件更新.pdf
下载1.26 MB, 下载次数: 1
【NUCLEO-WB09KE评测】+3.蓝牙广播
Nucleo-STM32WB09KE测评-蓝牙调试并使用OLED显示数据
【NUCLEO-WB09KE评测】创建BLE工程和开启调试信息
【NUCLEO-WB09KE评测】+2.串口打印
【NUCLEO-WB09KE评测】+5.实现标准电量服务
【NUCLEO-WB09KE评测】BLE例程HeartRate及工具探索
STM32WB系列MCU低功耗测试
Nucleo-STM32WB09KE测评--IIC传感器读取
【NUCLEO-WB09KE评测】+4.蓝牙控制LED
【NUCLEO-WB09KE评测】+1.点灯