在蓝牙工程中使用Gecko bootloader

开始者 <a href="http://community.silabs.com/t5/Welcome-and-Announcements/Community-Ranking-System-and-Recognition-Program/m-p/140490#U140490"><font color="#000000"><font size="2">Hero Employee</font></font> </a> Kevin_Fu 修改时间 ‎07-05-2017 12:51 PM

从蓝牙2.3.0的SDK开始,我们加入了Gecko bootloader的支持,但他并不是默认加入到工程中的。

  • 对于EFR32xG1系列的设备,在建立工程时,legacy bootloader是默认在工程里的,其存放的起始地址是0x0000
  • 对于EFR32xG12和EFR32xG13系列的设备,在建立工程时,其并不包含legacy bootloader或者Gecko bootloader,应用的起始地址是0x0000.

如果你想要将Gecko bootloader加入到工程中去,可以有如下方法。

 

第一种

1. 编译你的蓝牙工程。

2. 将其烧录至设备

3. 建立一个新的Gecko bootloader的工程,例如:BGAPI UART DFU Bootloader(点击“New project”按钮,然后选择“Gecko BootLoader”, 然后选择你需要的bootloader)

4. 点击"Generate"并编译

5. 烧录以"-combined.s37"结尾的文件至设备,这个操作会覆盖设备中可能已经存在的legacy bootloader或者dummy bootloader。

 

第二种

1. 如果你使用的是EFR32xG1系列的设备,你需要将默认的legacy bootloader从工程中移除,如果使用的是EFR32xG12和EFR32xG13系列的设备,则无需做此步骤,可以跳过。

  • 右键点击工程 -> properties
  • C/C++ build > Settings > IAR Linker for ARM > Library(IAR 用户)
    或者
    C/C++ build > Settings > GNU ARM C Linker > Miscallaneous > Other objects(GCC用户)
  • 移除binbootloader.o

2. 编译你的蓝牙工程。

3. 建立一个新的Gecko bootloader的工程,例如:BGAPI UART DFU Bootloader

4. 点击"Generate"并编译

5. 合并bootloader和应用,在命令行输入:

    commander convert bootloader-uart-bgapi-combined.s37 your_application.s37 -o app+bootloader.s37

6. 将合并的文件烧录至设备。

 

第三种

1. 以文本编辑器打开工程目录下的.isc文件。

2. 将appPlugin: gecko_bootloader=false改成appPlugin: gecko_bootloader=true

3. 将appPlugin: legacy_ble_ota_bootloader=true改成appPlugin: legacy_ble_ota_bootloader=false

4. 关闭并用App Builder重新打开(双击或者右键->Open with->App Builder)并点击“Generate”

5. 编译你的蓝牙工程。

6. 建立一个新的Gecko bootloader的工程,例如:BGAPI UART DFU Bootloader

7. 点击"Generate"并编译

8. 合并bootloader和应用,在命令行输入:

    commander convert bootloader-uart-bgapi-combined.s37 your_application.s37 -o app+bootloader.s37

9. 将合并的文件烧录至设备。

 

注意:如果你没有修改安装目录,commander.exe在C:\SiliconLabs\SimplicityStudio\v4\developer\adapter_packs\commander\目录下可以找到。GCC 是在2.4.0的SDK开始才全面支持的,2.3.x的SDK对于GCC的支持仅仅是测试阶段。