【经验】EFR32BG低功耗蓝牙SoC串口DFU固件升级上位机实现过程详解
一般系统设计时,都会支持固件升级功能,这样可以很方便的修复旧版本固件存在的问题。另外也能让系统通过固件升级获得最新的性能和应用。EFR32BG低功耗蓝牙SoC支持两种固件升级方式:串口DFU升级和空中OTA升级。本文将详细解读EFR32BG低功耗蓝牙SoC芯片串口DFU固件升级的上位机实现过程。
实际上EFR32BG低功耗蓝牙SoC的串口DFU过程是完全参照《Bluetooth Smart Software API Reference Manual》中的API命令来实现的,详见2.1 Device Firmware Upgrade(dfu)章节:
1. Boot device to DFU mode with DFU reset command
2. Wait for DFU boot event
3. Send command Flash Set Address to start the firmware update
4. Upload the firmware with Flash Upload commands until all the data has been uploaded
5. Send when all the data has been uploaded
6. Finalize the DFU firmware update with Reset command.
下面我们通过解读UART数据包的形式揭开上面这6个DFU过程的步骤的技术秘密。为此我首先抓取了DFU过程中UART TX和RX端口的全部交互数据。我使用到的两个串口log文件如下:
A:DFU log EFR32 UART RX.txt文件是host MCU 发给 EFR32BG的数据。
B:DFU log EFR32 UART TX.txt文件是EFR32BG 回发给host MCU的数据。
揭秘开始啦:
第1步骤:Boot device to DFU mode with DFU reset command:
BGLib命令是gecko_cmd_dfu_reset(1);// 16进制数据是:20 01 00 00 01
上位机发送这条命令给EFR32BG,让其进入DFU模式,如下图,最开始时有20 01 00 00 01命令。
第2步骤:Wait for DFU boot event
在DFU log EFR32 UART TX.txt 最开头能找到EFR32BG响应gecko_cmd_dfu_reset(1)命令后回复的DFU boot event事件给host MCU。下图红色的就是返回的事件。
第3步骤:Send command Flash Set Address to start the firmware update
BGLib命令:gecko_cmd_dfu_flash_set_address(0);// 16进制数据是:20 04 00 01 00 00 00 00,地址设置为00 00 00 00。
这个可以在DFU log EFR32 UART RX.txt的最开头能找到,host MCU发送了这个20 04 00 01 00 00 00 00命令给EFR32BG,如下图:
第4步骤:Upload the firmware with Flash Upload commands until all the data has been uploaded
这一步非常关键,命令查看API描述文档--2.1.1.2 cmd_dfu_flash_upload,且注意以下两点:
A:升级使用的文件必须是gbl文件。不能使用bin文件。
B:注意数据格式和Minimum payload length参数的设置。
下图红色框内和紫色框内的数据,是一次性写入UART发送给EFR32BG芯片。这里做了分行显示,以便查看。以下数据是hex格式:
20 31 00 02 30 EB 17 A6 03 08 00 00 00 00 00 00 03 00 00 00 00 F4 0A 0A F4 1C 00 00 00 20 00 00 00 00 00 00 00 00 02 03 02 00 00 00 00 00 00 00 00 00 00 00 00
前面黄色部分是命令,Minimum payload length = 0x31。表明后面UART还需发送0x31个字节的数据。绿色0x30这个字节是命令和实际数据部分都没有的数据,但是这个0x30表示后面跟着0x30个gbl文件的内容。这个0x30是必须要加上的。
对比gbl文件的最开始0x30字节,就可以发现,升级使用的full_ncp_adv1.gbl文件的数据是从EB开始,正好是:前面绿色标记后面跟着的数据。
传输gbl新固件数据时,UART传输的固件数据长度是以16字节的整数倍数量来发送的,例如本次示范单次传输0x30个字节数据(0x30字节= 16字节x 3)。当gbl文件的长度不是0x30的整数倍时,传输到最后一包数据,就必然会出现小于0x30字节的情况。不过没关系。根据数据包的格式来修正Minimum payload length的参数值就可以了。下图是发送gbl新固件的最后0x0B个字节数据长度的UART数据包。Minimum payload length = 0x0C,后面跟着0x0B数据长度,然后是gbl数据内容。
下图是gbl文件最末尾的字节数据。
到此全部gbl文件数据就传输完毕了。
第5步骤:Send cmd_dfu_flash_upload_finish when all the data has been uploaded
全部gbl固件数据发送完毕以后,需要调用命令来结束上传。在DFU log EFR32 UART RX.txt文件最末尾能看到gbl文件传输结束以后,host MCU 向EFR32BG SOC发送了 cmd_dfu_flash_upload_finish命令。如果第4步骤上传过程中发生错误,在当前这个命令时就会返回错误代码,需要重新做DFU的全部过程。如果返回时00 00,说明固件上传过程没有问题。
第6步骤:Finalize the DFU firmware update with Reset command.
当gbl新固件结束上传以后,升级就完成了,这时候调用复位命令,让EFR32BG重新复位,开始运行新固件了。在DFU log EFR32 UART RX.txt文件最末尾能看到,host MCU向EFR32BG SOC发送了Reset command命令,参数为0x00。BGLib命令为gecko_cmd_dfu_reset(0),UART DFU到此顺利结束,恭喜你调试成功。
揭秘结束!
可以按照这些步骤开始编写DFU 串口升级的HOST端实现代码啦。Ready Go!
相关技术文档:
SILICON LABS EFR32BG13蓝色壁虎蓝牙低能源SoC系列数据手册 详情>>>
Silicon Labs Bluetooth Smart软件API 参考手册 详情>>>
- |
- +1 赞 0
- 收藏
- 评论 13
本网站所有内容禁止转载,否则追究法律责任!
相关推荐
【应用】支持PTA共存机制的WIFI、ZigBee、BlueTooth和4G多协议智能家居网关应用方案
早期的多协议智能家居网关大多不支持共存机制,在拥挤的2.4GHz频段中,存在着相互干扰的问题,影响通讯效果。为解决上述问题,本方案采用支持PTA共存机制的WIFI、ZigBee、BlueTooth的SOC芯片和全网通4G模块,并搭配高性价比的电源和高精度晶振,实现支持共存机制的多协议智能家居网关应用方案。
BGM220S 无线 Gecko Bluetooth® 模块数据表
型号- BGM220SC22WGA2,BGM220S,BGM220SC22HNA2,BGM220S12A,BGM220SC12WGA2,BGM220S22A
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、改进、已知问题、弃用项目和移除项目等信息。
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
BGM220P 无线 Gecko Bluetooth 模块数据表
描述- BGM220P是一款基于EFR32BG22 SoC的无线蓝牙模块,专为电池供电的物联网(IoT)产品设计。该模块支持蓝牙5.2标准,具备高性能射频范围和低能耗特性,同时内置天线和高传输功率。它集成了丰富的外设和多种时钟管理选项,并提供了全面的可升级软件栈和全球法规认证,适用于资产追踪、运动健身设备、便携式医疗设备、智能家居、工业和楼宇自动化等领域。
型号- BGM220PC22WGA2,BGM220PC22HNA2,BGM220P22A,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系统。
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
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
蓝牙®Mesh ADK 6.0.4.0
描述- 本资料介绍了蓝牙Mesh ADK 6.0.4.0版本,包括其功能、兼容性、新特性、改进点、已知问题及解决方法。该软件支持多对多的通信,适用于大规模设备网络构建,特别适合于建筑自动化、传感器网络和资产跟踪等领域。资料还涵盖了安装和使用指南,以及如何获取技术支持和产品信息。
BGX13P Bluetooth®Xpress模块数据表
描述- BGX13P蓝牙模块是一款适用于小型设备的低功耗蓝牙解决方案,具备串行接口,支持原始数据流或命令API控制。该模块符合蓝牙5标准,具有高性能射频、低功耗等特点,适用于健康、体育、智能家居等领域。
型号- BGX13PXXXXXXX,BGX13PXXXX,BGX13P22GA-V31R,BGX13P22GAV31,BGM13P32A,BGX13P22,BGX13P22GA-V21R,BGX13P22GA-V31,BGX13P22GA-V21,BGM13P32E,BGX13P,BGX13P22GA
BGM220S Gecko Bluetooth®无线模块产品介绍
描述- 该资料介绍了BGM220S无线Gecko蓝牙模块,这是一款专为电池供电的物联网产品设计的模块。它基于EFR32BG22 SoC,提供蓝牙低能耗连接,同时具备优异的射频范围和性能、未来兼容性、增强的安全性功能和低功耗。该模块适用于广泛的领域,包括资产标签、便携式医疗设备、运动健身器材、智能家居、工业和楼宇自动化以及蓝牙网状网络。
型号- BGM220SC22WGA2,BGM220S2,BGM220S,BGM220SC22HNA2,BGM220S12A,BGM220S22A MODEL,BGM220SC12WGA2,BGM220S22A
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。
实验室地址: 深圳 提交需求>
查看全部2条回复