Skip to main content

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.

Bootloader 是存储在预留闪存中的程序,负责初始化设备、更新固件映像,并可执行完整性检查。Silicon Labs 于 2017 年推出的 Gecko Bootloader 是一个可通过 Simplicity Studio IDE 配置的代码库,可与 EFM32 和 EFR32 Series 1 及更新的各类协议栈配合使用。GSDK 4.0 起,Gecko Bootloader 进一步重构为基于组件(Component)的设计,进一步提升了灵活性与可维护性。

引导加载的两种模式

Silicon Labs 网络设备使用两种不同的 Bootloader 模式执行固件更新。

Standalone Bootloader

通过外部通信接口(UART/SPI)直接接收并写入固件映像,整个过程为单阶段,无需应用程序参与。适用于串行连接的设备和 NCP(Network Co-Processor)。

Application Bootloader

由正在运行的应用程序先将新映像下载到下载空间(Download Space),Bootloader 再验证并将其复制到主闪存。支持 OTA 和外部/内部存储两种变体。

Standalone Bootloader 详解

Standalone Bootloader 是使用外部通信接口获取 Application 映像的程序。固件更新是一个单阶段过程,新的固件映像直接覆盖现有的应用程序代码,无需应用程序本身参与。通常,应用程序与 Bootloader 交互的唯一时机是请求重新引导到 Bootloader。
启动固件更新后,新代码将覆盖现有的栈和应用程序代码。若在此过程中发生任何错误,则无法恢复应用程序,必须重新开始该过程。

Application Bootloader 详解

Application Bootloader 在应用程序下载完更新映像文件后开始固件更新过程。下载空间(Download Space)通常是:
  • 外部存储器:EEPROM 或 dataflash
  • 内部闪存:芯片内部闪存的一部分(本地存储变体)
由于 Application Bootloader 不参与映像的获取,下载错误不会影响正在运行的映像。下载过程可随时重新开始或暂停,并可在更新前验证映像的完整性。
可以将 Gecko Bootloader 配置为接受一个多升级映像列表,以尝试验证和应用,从而允许存储备份副本。

Gecko Bootloader 架构

Gecko Bootloader 由三个核心组件构成:
包含两个 Bootloader 阶段的主要功能,负责写入内部主闪存、执行 Bootloader 更新以及重置到应用程序。
不同的引导加载应用场景需要不同的硬件驱动程序,供 Bootloader 其他组件调用,如 UART、SPI、内部/外部闪存驱动。
所有可选或可配置的 Main Bootloader 功能均以组件(GSDK 4.0+)或插件(旧版本)实现,包括 UART/SPI 通信、SPI 闪存、内部闪存及加密操作等。

两阶段设计

Series 1 设备

1

First Stage Bootloader 运行

First Stage Bootloader 存储在固定位置,不可现场更新,仅包含读写内部闪存固定地址的功能。
2

Main Bootloader 验证更新

正在运行的 Main Bootloader 验证 Bootloader 更新映像的完整性和真实性,将其写入内部闪存,并发出重新引导信号。
3

First Stage 完成更新

First Stage Bootloader 验证 Main Bootloader 更新映像的完整性,然后将其复制到 Main Bootloader 的位置,完成更新。

Series 2 设备

在 Series 2 设备上,First Stage Bootloader 被 SE(Secure Engine,安全引擎) 取代,Gecko Bootloader 仅包含 Main Bootloader。SE 分为以下类型:
缩写说明
HSEHardware Secure Engine(硬件安全引擎),含或不含 Secure Vault
VSEVirtual Secure Engine(虚拟安全引擎)
SESecure Engine(泛指 HSE 或 VSE)

Gecko Bootloader 核心特性

Series 1 通过两阶段设计实现,Series 2 通过 SE 实现。支持添加新功能、更改通信协议、添加新安全特性和修复程序。

GBL 升级文件格式

Gecko Bootloader 使用专有的 GBL(Gecko BootLoader)文件格式作为更新映像文件,扩展名为 .gbl。GBL 文件可以:
  • 未签名/已签名
  • 未加密/已加密
  • 包含 Application 映像、Bootloader 升级映像或 SE 升级映像,也可组合

内存空间布局

不同系列和型号的设备,Bootloader 的内存布局有所差异:
Bootloader 位于主闪存:
First stage bootloader @ 0x0
Main bootloader        @ 0x800
Application            @ 0x4000
Silicon Labs 建议为 Series 1 和 EFR32xG21 设备的 Bootloader 保留 16 kB,为 EFR32xG22 设备保留 24 kB

设计决策参考

选择 Bootloader 类型前,需考虑以下因素:

映像获取方式

设备是通过 OTA 获取新映像,还是通过单独的有线接口?是否已连接互联网网关?

存储能力

设备是否有外部存储芯片?内部闪存是否足以存储当前和新的应用程序映像各一份?

安全需求

需要什么级别的映像安全性?是否需要签名验证或加密?

通信驱动

将使用哪种通信驱动(单协议)?是否需要多协议支持?
Gecko Bootloader 平台的可配置设计意味着开发人员可以创建 Bootloader 以适应几乎任何设计选择。详细配置信息请参阅 UG489: Silicon Labs Gecko Bootloader User’s Guide for GSDK 4.0 and Higher

Build docs developers (and LLMs) love