在无法连接 J-Link 调试器的场景下,固件更新需要依赖 Bootloader 机制。Silicon Labs Connect v3.x 支持两种主要方式:通过 UART/SPI 连接进行的 Standalone Bootloading,以及无需物理连接的 OTA(Over-the-Air)引导加载。OTA 过程依赖 Application Bootloader 从板载存储(SPI Flash 或内部 Flash)更新固件,而 OTA 映像传输本身则由主应用程序负责。Documentation Index
Fetch the complete documentation index at: https://mintlify.com/dsyx/docs.silabs.com_zh/llms.txt
Use this file to discover all available pages before exploring further.
Gecko Bootloader
Silicon Labs Connect 仅支持 Gecko Bootloader,适用于 Wireless Gecko(EFR32™)产品系列。Standalone Bootloader
推荐使用 UART XMODEM Bootloader 示例。通过 UART 或 SPI 连接更新固件,支持 GPIO 激活进入 bootloader 模式(默认启用)。
Application Bootloader(OTA)
推荐使用 SPI Flash Storage Bootloader(EFR32 连接 SPI Flash 时)或 Internal Storage Bootloader。注意:Connect OTA 协议仅支持 single image bootloader。
配置 Connect 应用程序以支持 Bootloading
安装 Bootloader Application Interface 组件
安装该组件后将自动完成:
- 修改 EFR32xG1 上的内存分配(Bootloader 使用 Flash 前 16 kB)
- 添加 bootloader 相关代码的编译时定义
- 提供可与 Bootloader 交互的 C 函数(如切换到 bootloader 模式)
使用 Standalone Bootloader(SoC 应用)
若在 Gecko Bootloader 中启用了 GPIO 激活功能(默认启用),可在按住激活按钮的同时重置 MCU 进入 bootloader 模式。也可在应用程序中通过代码切换:OTA 无线固件更新
广播 OTA vs. 单播 OTA
- 广播 OTA(Broadcast OTA)
- 单播 OTA(Unicast OTA)
映像广播给所有设备(设备可忽略,相当于多播)。优点:
- 可同时更新多个设备,效率高
- 网络负担较小
- 仅支持 single-hop 范围(Coordinator 无法更新 Range Extender 后面的端点)
- 无法用于 Sleepy End Device
- Broadcast Plugin 最大支持 50 个客户端
两种 OTA 方法均不适用于 MAC Mode,且均支持安全消息。
所需 OTA 组件
| 场景 | 所需组件 |
|---|---|
| 广播和单播 OTA(通用) | OTA Bootloader Interface、OTA Bootloader Test Common |
| 广播 OTA | OTA Broadcast Bootloader Client、OTA Broadcast Bootloader Server、OTA Broadcast Bootloader Test |
| 单播 OTA | OTA Unicast Bootloader Client、OTA Unicast Bootloader Server、OTA Unicast Bootloader Test |
广播 OTA 工作原理
单播 OTA 工作原理
远程引导加载请求
广播和单播 OTA 组件均支持远程引导加载请求:OTA 服务端可请求客户端执行引导加载操作,客户端收到命令后将下载的映像加载到主存储器并引导启动。实战演示:在 Sensor-Sink 中使用 OTA
以下以广播 OTA 为例,完整演示 OTA 流程(Sink 作为 OTA 服务端,Sensor 作为 OTA 客户端)。创建项目
创建 Sink(OTA 服务端)项目
安装以下组件(除 Bootloader Application Interface 外):
- OTA Bootloader Interface
- OTA Bootloader Test Common
- OTA Broadcast Bootloader Server
- OTA Broadcast Bootloader Test
创建两个 Sensor(OTA 客户端)项目
两个项目间做出区分(如不同的启动打印信息或 LED 行为)。安装以下组件:
- OTA Bootloader Interface
- OTA Bootloader Test Common
- OTA Broadcast Bootloader Client
- OTA Broadcast Bootloader Test
刷写应用程序
生成 GBL 文件
加载映像到 OTA 服务端
- 加载到 SPI Flash
- 加载到内部 Flash