最近学习和调试了FR32xG24 Explorer Kit 开发套件的蓝牙OTA功能,记录一下调试过程。
基于Blinky demo程序进行调试,其中包含了BLE OTA功能,DFU的全称是Device Firmware Upgrade,可以通过蓝牙无线升级芯片固件。
先在程序中加入版本打印,分别编译一个V1.0和V1.1版本的程序,用来测试验证ota升级效果。

1. 蓝牙OTA服务
开发板运行后,用蓝牙测试demo APP: EFRConnect,可以扫描到设备,设备名称为Blink Example

设备蓝牙包含了如下几个服务,其中的OTA Service就是用于OTA升级传送的服务:

APP上连接上设备后,在右上角弹出菜单的OTA DFU功能可以进行OTA升级操作:

OTA升级页面提示需要.gbl格式的升级文件,在工程目录查找未见有.gbl文件,可能是需要另外生成的,下面就去生成一个

2. 生成.gbl格式升级文件
直接运行生成gbl文件的脚本creat_bl_files.bat出错了,错误信息如下:


按照提示添加了PATH_GCCARM环境变量还是报错,继续查询AN1086这个文档,2.3节有详细说明如何配置和操作步骤,需要将两个环境变量都按照本机实际路径配置好才行。
AN1086: Using the Gecko Bootloader withthe Silicon Labs Bluetooth® Applications
这个文档很好,里面详细描述了程序加载,空间分配,升级方式和操作步骤等。

设置好全部环境变量后,可以成功执行脚本了

脚本执行成功会新建一个output_gbl目录

3.通过手机APP对芯片进行无线升级
将生成的application.gbl文件拷贝到手机中,再次连接进入OTA页面,在PARTIAL OTA下,选中application.gbl文件,然后点击OTA可以开始升级传输,APP会有进度提示

升级进度到达100%后升级完成,点击END,芯片会自动重启

通过串口调试信息可以看到有打印新的版本号,说明升级成功并已经运行了新版本的程序

|