Silicon Labs Gecko bootloader 简介

用户头像
taox
关注
发布于: 2020 年 06 月 04 日
Silicon Labs Gecko bootloader 简介



bootloader

bootloader是一个存储在事先预留的闪存中的程序,它可以初始化设备、更新固件映像,并执行一些完整性检查。Silicon Labs 支持设备不使用 bootloader,但是此设备只能通过硬件烧录工具更新固件。

Silicon Labs 网络器件支持使用两种不同的 bootloader 更新固件:standalone bootloader 和 application bootloader。



1)Standalone Bootloader

Standalone Bootloader 使用UART、SPI等外部通信接口获取应用程序映像。当固件更新过程启动时,新代码将覆盖现有堆栈和应用程序代码。如果在此过程中发生任何错误,原有的应用程序无法恢复,必须重新开始固件更新过程。



2)Application Bootloader

Application Bootloader 可以进一步分为使用外部存储来保存程序更新映像和使用本地存储来保存程序更新映像这两种类别。在完全下载了程序更新映像文件之后,才开始固件更新过程。由于Application Bootloader 不参与获取程序更新映像,并且在固件更新过程启动之前下载整个映像,因此下载错误不会对正在运行的映像造成不利影响。



Gecko Bootloader

Silicon Labs Gecko Bootloader 是一个可用于所有较新的无线MCU的可配置代码库。它使用一种称为GBL 的特殊格式的映像更新文件。Silicon Labs 系列1器件的 Gecko Bootloader 是一个两阶段设计,最小的第一阶段引导程序可以用来更新主引导程序。Silicon Labs 系列2设备的第一阶段引导程序被一个与硬件等价的安全元素替代,仅由主引导程序组成。



Memory Space For Gecko Bootloader

Silicon Labs 建议至少为引导加载程序保留16kB空间。系列1器件典型的配置为2KB first stage bootloader 和 14KB main bootloader。



On EFR32xG1 devices (Mighty Gecko, Flex Gecko, and Blue Gecko families), the bootloader resides in main flash.

  • First stage bootloader @ 0x0

  • Main bootloader @ 0x800

  • Application @ 0x4000



On EFR32xG12 and later Series 1 devices, the bootloader resides in the bootloader area in the Information Block

  • Application @ 0x0

  • First stage bootloader @ 0x0FE10000

  • Main bootloader @ 0x0FE10800



On EFR32xG21, the main bootloader resides in main flash:

  • Main bootloader @ 0x0

  • Application @ 0x4000



Default Memory Layout on Devices

Silicon Labs EmberZNet SDK 设计了3类内存布局,接下来我将举例分析Flash大小为512KB的EFR32系列1器件的内存布局。



1)Standalone

可以配合 UART XMODEM Bootloader 使用,token区位于Flash末尾。由于更新固件时,新代码直接覆盖原有堆栈和应用程序代码,所以不需要分配存储程序映像的Storage区。



2) Local Storage

可以配合Internal Storage Bootloader使用,token区位于Flash中间。

即使设备不支持OTA,Storage区也无法用于存储Application代码





3)Application

可以配合Internal Storage Bootloader使用,token区位于Flash末尾,Storage空间地址需要自行分配。

如果设备不支持OTA,即Strorage大小为0,那么除了末尾的token区,都可以用来存储Application代码。



可以配合SPI Flaash Storage Bootloader使用,token区位于Flash末尾,Storage区要分配于外部flash中



发布于: 2020 年 06 月 04 日 阅读数: 44
用户头像

taox

关注

还未添加个人签名 2017.11.12 加入

还未添加个人简介

评论

发布
暂无评论
Silicon Labs Gecko bootloader 简介