• Gecko Bootloader的介绍(Silicon Labs)【一】


    Gecko Bootloader的介绍(Silicon Labs)

    关键字: ZigBee,Thread, Bluetooth, EFR32, EFM32,EmberZnet, Bootloader, Gecko, Silicon labs, ARM , Cortex-M4, Cortex-M33

    摘要:

           在使用Silicon labs的MCU和无线芯片进行开发时,都会使用Bootloader, 包括zigbee, thread, Bluetooth, efm32,还有其他私有协议。Boot+应用的设计是目前主流平台都采用的固件组合方式,即能够快速完成启动,可以进行固件的直接替换或者更新,即使产品已经布署或者销售,在使用过程仍然可以实现维护,比如功能升级或者bug修复等。

    正文:

    ---------------------------

           产品中bootloader存在的前提下,可以通过UART, SPI,USB,或者空中无线传输,将新的应用固件传输到设备中,重启后由Bootloader进行固件的完整性检查,切换或者擦除旧固件再更新等操作,这是完成设备更新的基本原理。

           在silicon的产品中,由于历史原因,存在gecko bootloader和 ember bootloader两种,后者仅在EM35X等芯片上还有使用,逐步停止使用,因此我们在这里只介绍Gecko bootloader。Gecko Bootloader本身也有多种类型, 这里就简称为boot,在设计产品时可以根据维护设备的需要,选择适合的类型。

    两大类不同工作原理的Bootloader

    独立引导

    Standalone Bootloader

    设备开始升级后,运行Boot,通过UART, SPI或者空中传输等方式将新的固件直接写到原有固件所存在的区域。

    过程不可逆,升级一旦开始,必须要完成升级,如果出错,可能要从新开始。Boot和app之间很少交互。

    应用交互型引导

    Application Bootloader

    设备的应用程序工作状态下,运行app, 将新的固件通过UART,SPI,USB或者空中传输等方式将新版固件完整地传输的设备上。并存储于外部存储器(如EEPROM,DATAFLASH)中,然后交boot来验证新版app,通过后再将新固件复制到Flash之中,升级完成。

    升级过程可以中断或者取消。升级过程中出错可以继点续传输或者重来。Boot要在app完成新版固件传输之后才会被调用。

    设备的应用程序工作状态下,运行app, 将新的固件通过UART,SPI,USB或者空中传输等方式将新版固件完整地传输的设备上。并存储于片上存储器,即事先分配好的一段FLASH,然后交boot来验证新版app,通过后由boot切换启动固件或者将用新固件覆盖旧固件,升级完成。

    升级过程可以中断或者取消。升级过程中出错可以继点续传输或者重来。Boot要在app完成新版固件传输之后才会被调用。

           在应用中有一个特例, 使用Silicon labs提供的ZigBee/Thread  NCP固件,只能使用独立引导(Standalone Bootloader)。

           有关Silicon Labs bootloader更多的细节,可以阅读官方文档 ug103.6, ug266, an772。

           Bootloader自身的架构

           Gecko bootloader是可以配置的代码库,用gbl文件作为升级镜像,也就是升级的文件通常以gbl后辍名提供给网关或者云端。适用于EFM32 或者 EFR32系列的芯片。但在EFR32 Series 1和Series 2上是不同的。前者分为两个阶段,第一段加载引导用于更新第二段(也称为主引导程序)。在Series2芯片上第一阶段的引导程序被等效的硬件代替(Secure Element), 所以整个引导程序仅有主引导程序部分。第一阶段的引导程序或者Secure Element允许对第二阶段的引导程序进行现场更新,这样就可能对bootloader的整体功能进行修改,比如新增功能,更改通信协议,添加新的安全功能,修复程序等。

    后面补充一些其他信息。

    https://www.cnblogs.com/newbit/p/boot2.html

     https://www.cnblogs.com/newbit/p/boot3.html

    https://www.cnblogs.com/newbit/p/boot4.html

  • 相关阅读:
    【转】关于维生素的那些事
    【转】MaBatis学习---源码分析MyBatis缓存原理
    【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比
    【转】Java学习---垃圾回收算法与 JVM 垃圾回收器综述
    Qt 中的对象模型(Object Model)
    The Property System
    Qt--core模块概述
    QtCore概述
    在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)
    同一个进程的多个线程堆栈共享状况
  • 原文地址:https://www.cnblogs.com/newbit/p/boot1.html
Copyright © 2020-2023  润新知