【经验】手把手教—EFR32BG SoC如何通过Gecko Bootloader进行串口DFU固件升级
一、测试前准备
EFR32BG系列的低功耗蓝牙SoC芯片的SDK,在2.3版本以后,simplicity studio V4生成的代码工程里面默认是没有uart bootloader功能的。但是提供了一份独立的Gecko Bootloader工程。本文将描述如何生成Gecko Bootloader工程和测试EFR32BG 低功耗蓝牙SoC的DFU串口升级功能,简单的说就是通过uart口更新EFR32BG固件。
在测试以前需要准备以下软件或者材料:
1)安装simplicity studio V4
2)安装 BLE SDK 2.3.2.0.
3)IAR 7.8版本以上
4)安装MinGW 编译环境。
说明:本文中,我测试使用的SSv4和MinGW都是安装在了D盘,测试时请根据实际安装路径操作。
二、MinGW安装
MinGW下载链接:https://sourceforge.net/projects/mingw-w64/files/latest/download?source=recommended
下载以后,运行“ mingw-w64-install.exe”安装时请选择如下,这个是我测试时使用的安装选项,可以正确编译和完成DFU测试:
选择好安装路径以后就会开始安装,整个过程会先下载一些文件,然后自动完成安装,全程无需再设置或者干预安装。
安装完成以后,可以测试一下MinGW是否运行正常。双击安装目录下的bat文件即可运行MinGW:D:\Program Files (x86)\mingw-w64-layne\x86_64-6.2.0-win32-seh-rt_v5-rev1
在弹出的命令行界面输入命令:gcc -v(注意空格),会看到最后出来gcc的版本是和安装的一样6.2版本。说明MinGW的gcc编译器运行正常,如下图
三、commander软件准备
1)请确认commander软件是最新的版本,可以在这个路径下找到:
D:\SiliconLabs\SimplicityStudio\v4\developer\adapter_packs\commander
运行commander.exe后可以查看版本信息,如果版本过低,请下载最新的ssv4,并完成更新:
四、生成Gecko Bootloader工程代码和目标文件
1)在SSv4主页面中输入使用的芯片正确型号,并选中这个型号。如下图所示,本次测试使用的芯片型号是EFR32BG1B132F256GM32,以此为例。
2)确认SSv4首页面中已经选中了SDK 2.3.2,如果不是,请重新选择,如下图所示。
SDK 2.3.2确认以后,就可以开始新建Gecko Bootloader工程了。
3)选择Gecko Bootloader,点击"next"。
4)选择BGAPI UART DFU Bootloader,点击"next"。
如有需要,可以下图的project name 框内重新命名工程名称:
进入到下面的页面后,请只勾选IAR编译工具,本次测试使用IAR编译器来编译工程代码,并再次确认芯片型号无误后,点击"finish"按钮,生成代码工程:
5)在生成的代码工程后,打开工程里面的.isc文件。设置bootloader 相关的参数。
Uart参数设置如下:可以设置uart 波特率,TX和RX的引脚分配。
设置uart 使能引脚,本次测试作为bootloader的uart一直是使能的,不采用使能引脚,因此这项勾线,在此取消了。
可以设置引脚来出发进入uart dfu,如果不用,这个勾选可以去掉。如下图:
6)全部设置完成以后,点击下图"Generate"按钮,生成源代码,并编译源代码,会得到uart dfu bootloader的目标文件:
得到的目标文件如下,在工程所在路径下的IAR ARM - Default文件夹可以找到,bootloader-uart-bgapi_2-combined.s37 文件就是我们测试需要的Gecko Bootloader目标文件:
五、
生成1份NCP Empty用户代码,然后修改device name为两个不同的名字,并编译,这样就可以得到两个不同的名称的蓝牙设备名称的应用代码目标文件。用于测试UART DFU升级使用。每次使用不同的用户代码目标文件来升级,会发现EFR32BG广播出来的设备名称改变了。就说明升级成功了。详细操作如下:
1)生成NCP Empty工程代码:
在SSv4主界面上选中芯片型号或者EVB的型号之后,"New project" >> "Bluetooth SDK" >>"next" >>" Bluetooth SDK 2.3.2" >> "next" >> "NCP target- Empty" >> " next" >> "next" >> " 到达这个页面后,检查芯片型号和IAR编译器是否选择正确" >> "finish"
2)在工程代码里面,打开efr32bg1b132f256gm32.hwconf文件。默认生成的NCP代码使用的uart会使能硬件流控。如果不希望用硬件流控,可以到这个文件里面去取消相关设置。
3)在生成的工程里面,打开*isc文件。在页面上修改device name,然后点击"Generate"生成源代码。在源代码的main函数中,添加自动发送广播的命令。这样DFU升级完成以后就会自动开始广播了。
代码添加如下:
4)上一步完成之后,开始编译代码,编译之后,得到的目标文件有以下几种文件格式,但是gecko bootloader升级使用的文件格式是gbl文件。在NCP工程代码目标下的IAR ARM – Default文件夹都找不到这个格式的文件。
这时候,在工程目录下有另外一个create_ebl_files.bat文件。双击之后就能自动生成gbl文件了,存放在output_gbl文件夹中。如下:
在output_gbl文件夹中会看到3个文件。我们选取其中的full.gbl文件用于升级使用。
然后重复第3步骤,修改device name,重新generate一下,并得到新的full.gbl文件。
到此我们就得到了2份具有不同广播设备名称的NCP用户程序了。还有1份Gecko bootloader目标文件。
六、生成uart-dfu.exe上位机软件
运行MinGW,在命令行中输入:
Cd d:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.0\app\bluetooth_2.3\examples_ncp_host\uart_dfu
运行mingw32-make命令,编译工程,得到uart-dfu.exe可执行文件。该文件存放在d:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.0\app\bluetooth_2.3\examples_ncp_host\uart_dfu\ exe
编译结果如下:
这个编译过程无任何报错,也无需修改uart_dfu文件夹中的任何文件。编译得到uart-dfu.exe文件后,把 uart-dfu.exe 和之前生成两个full.gbl文件,以及gecko bootloader的bootloader-uart-bgapi_2-combined.s37文件一起放到一个文件夹中。如下:
七、DFU 串口升级测试
1)先用commander软件烧录bootloader-uart-bgapi_2-combined.s37文件到目标板中。
开始DFU升级,命令行路径切换路径到EFR32BG Gecko Bootloader test文件夹下运行uart-dfu.exe COM34 115200 full_ncp_adv1.gbl命令,开始DFU升级,升级完成会提示finish。如下:
特别说明:COM34要根据电脑实际识别到的串口号来修改。
看到finish出现,表明DFU升级完成,打开手机APP软件。搜索到这个蓝牙广播的名称,就说明DFU升级成功了。然后可以尝试使用另外一份不同设备名称gbl文件再次升级测试。
八、扩展思维:
以上测试全部使用的是NCP的目标代码,请问使用SSv4生成的SoC的应用代码,是否可以使用gecko bootloader来升级呢?如果想得到更多的答案,请下载"世强元件电商"手机APP软件,成为VIP用户就可以找到答案。
相关技术文档:
SILICON LABS EFR32BG13 EFR32 Blue Gecko SoC数据手册 详情>>>
看到这里您是否又有项目灵感需实现,点击下面开发软件帮你忙。
Silicon Labs Simplicity Studio平台开发工具
- |
- +1 赞 0
- 收藏
- 评论 5
本网站所有内容禁止转载,否则追究法律责任!
相关推荐
【经验】EFR32BG低功耗蓝牙SoC串口DFU固件升级上位机实现过程详解
EFR32BG的串口DFU过程是完全参照《Bluetooth Smart Software API Reference Manual》中的API命令来实现。
【应用】支持PTA共存机制的WIFI、ZigBee、BlueTooth和4G多协议智能家居网关应用方案
早期的多协议智能家居网关大多不支持共存机制,在拥挤的2.4GHz频段中,存在着相互干扰的问题,影响通讯效果。为解决上述问题,本方案采用支持PTA共存机制的WIFI、ZigBee、BlueTooth的SOC芯片和全网通4G模块,并搭配高性价比的电源和高精度晶振,实现支持共存机制的多协议智能家居网关应用方案。
Bluetooth®Mesh SDK 7.0.2.0 GA Simplicity SDK套件2024.6.2
描述- 本资料介绍了Silicon Labs的Bluetooth mesh SDK 7.0.2.0 GA版本,该版本支持蓝牙mesh网络功能,适用于构建大规模设备网络。主要内容包括:迁移至Simplicity SDK Suite,移除对Series 0/1的支持,支持delta-compressed固件更新。此外,还介绍了兼容的编译器、新特性、新API、改进、已知问题、弃用项目和移除项目等信息。
BGM220S 无线 Gecko Bluetooth® 模块数据表
型号- BGM220SC22WGA2,BGM220S,BGM220SC22HNA2,BGM220S12A,BGM220SC12WGA2,BGM220S22A
Silicon Labs(芯科科技) Bluetooth®芯片和模块选型指南
目录- Bluetooth® - Rapid Growth in IoT Why the Silicon Labs Bluetooth® Portfolio is Ideal Bluetooth® SoC and Module Selector Guide Bluetooth® Application Examples About Silicon Labs
型号- BGM210P,BGM210L,BG27,BG24,BG22,BGM240S,BG21,BGM220S,BGM240P,BGM220P
蓝牙®Mesh ADK 7.0.2.0
描述- 本资料介绍了Silicon Labs的Bluetooth Mesh ADK 7.0.2.0版本,该版本支持蓝牙Mesh和蓝牙5功能。主要内容包括:新增支持导入和导出BT Mesh配置数据库的API;改进了移动应用程序,使其成为评估标准Silabs示例和演示的工具;修复了配置失败和节点重启时Mesh对象消失等问题;兼容iOS 15、iOS 16、iOS 17和Android 12、Android 13、Android 14系统。
BGM220P 无线 Gecko Bluetooth 模块数据表
描述- BGM220P是一款基于EFR32BG22 SoC的无线蓝牙模块,专为电池供电的物联网(IoT)产品设计。该模块支持蓝牙5.2标准,具备高性能射频范围和低能耗特性,同时内置天线和高传输功率。它集成了丰富的外设和多种时钟管理选项,并提供了全面的可升级软件栈和全球法规认证,适用于资产追踪、运动健身设备、便携式医疗设备、智能家居、工业和楼宇自动化等领域。
型号- BGM220PC22WGA2,BGM220PC22HNA2,BGM220P22A,BGM220P
Silicon Labs(芯科科技) BT121 Bluetooth Smart功能模块 数据手册
描述- 该文档详细介绍了BT121蓝牙智能模块的技术规格和应用指南。BT121是一款集成了高性能蓝牙无线电、低功耗ARM Cortex微控制器和Bluegiga蓝牙智能堆栈软件的模块,适用于需要同时支持蓝牙智能和经典连接的应用。它具有多种硬件接口,包括UART、SPI、I2C等,并支持多种蓝牙协议。
型号- BT121-A-V2C,BT121,BT121-A-V2-IAP,DKBT,BT121-A-V1-IAP,BT121-A-V1,BT121-A-V2,BT121-A
蓝牙®Mesh ADK 6.0.2.0
描述- 本资料介绍了Silicon Labs公司发布的蓝牙Mesh ADK 6.0.2.0版本,该版本支持蓝牙Mesh和蓝牙5功能。主要内容包括:支持网络照明控制(NLC)配置文件,支持iOS和Android系统,以及详细的技术更新和问题修复。资料还提供了安装和使用指南,以及技术支持信息。
Silicon Labs(芯科科技) bluegiga WT12 Bluetooth 2 类模块数据手册
描述- 本资料介绍了Bluegiga Technologies公司生产的WT12蓝牙模块。该模块集成了天线、蓝牙无线电和板载iWRAP蓝牙堆栈,适用于快速将蓝牙无线技术集成到设计中。它支持蓝牙2.1 + EDR,具有UART和USB主机接口,并具备多种软件编程IO引脚。
型号- WT12-A-HCI21,WT12,WT12-A-AI5,WT12-A-3,WT12-A-C,WT12-A-AI56C,WT12-A-AI4
蓝牙®Mesh ADK 6.0.4.0
描述- 本资料介绍了蓝牙Mesh ADK 6.0.4.0版本,包括其功能、兼容性、新特性、改进点、已知问题及解决方法。该软件支持多对多的通信,适用于大规模设备网络构建,特别适合于建筑自动化、传感器网络和资产跟踪等领域。资料还涵盖了安装和使用指南,以及如何获取技术支持和产品信息。
Silicon Labs(芯科科技) WT11u Bluetooth® Module数据手册
描述- 本资料为Silicon Labs公司WT11u蓝牙模块的数据手册。该模块是一款集成了天线、蓝牙无线电和iWRAP蓝牙堆栈的全集成Class 1模块,适用于快速将长距离和高性能蓝牙无线技术集成到设计中。
型号- WT11U-E-HCI21,WT11U-A,WT11U,WT11U-E-AI5,WT11U-A-HCI21,WT11U-E-AI56,WT11U-A-AI56,WT11U-A-AI5,WT11U-A-AI55,WT11U-E,WT11U-E-AI55
BGX13P Bluetooth®Xpress模块数据表
描述- BGX13P蓝牙模块是一款适用于小型设备的低功耗蓝牙解决方案,具备串行接口,支持原始数据流或命令API控制。该模块符合蓝牙5标准,具有高性能射频、低功耗等特点,适用于健康、体育、智能家居等领域。
型号- BGX13PXXXXXXX,BGX13PXXXX,BGX13P22GA-V31R,BGX13P22GAV31,BGM13P32A,BGX13P22,BGX13P22GA-V21R,BGX13P22GA-V31,BGX13P22GA-V21,BGM13P32E,BGX13P,BGX13P22GA
Bluetooth®Mesh SDK 6.1.2.0 GA Gecko SDK套件4.4
描述- 本资料介绍了Silicon Labs发布的蓝牙mesh SDK 6.1.2.0 GA版本。该SDK支持蓝牙mesh和蓝牙5.3功能,适用于创建大规模设备网络,包括智能家居、传感器网络和资产管理系统。新版本增加了Mesh 1.1规范的支持和网络照明控制(NLC)配置文件。此外,还提供了新的API和改进的功能,包括诊断类的新命令和支持分段消息处理。同时,也列出了已知问题、已弃用项目和移除项目,并提供了安装和使用指南以及安全信息。
电子商城
现货市场
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
支持Bluetooth SIG最新的测试规范,支持2.0(EDR), 2.1(EDR), 3.0(HS), 4.0(LE)规范, 并且能完整覆盖BR/EDR/HS/BLE的所有射频测试项目。测试标准:RF.TS/4.03 ;RF-PHYTS/40.3。
实验室地址: 深圳 提交需求>
查看全部1条回复
查看全部2条回复