【经验】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
本网站所有内容禁止转载,否则追究法律责任!
相关研发服务和供应服务
相关推荐
【经验】手把手教—EFR32BG SoC如何通过Gecko Bootloader进行串口DFU固件升级
本文将描述如何生成Gecko Bootloader工程和测试EFR32BG 低功耗蓝牙SoC的DFU串口升级功能。
设计经验 发布时间 : 2017-07-24
【经验】10分钟完成BLE蓝牙智能工程搭建到数据交互代码实现
Silicon Labs低功耗蓝牙智能SoC芯片EFR32BG系列,支持最新的蓝牙5.0版本协议栈,内嵌免费GUN编译工具(基于GCC)。
设计经验 发布时间 : 2017-09-24
Silicon Labs(芯科科技) EFR32 RF评估指南应用笔记(AN972)
描述- AN972: EFR32 RF Evaluation Guide.
型号- EFR32BG1B132F128,EFR32BG1P332F256GJ43-C0R,EFR32BG12P232F1024GL125-B,EFR32FG12P232F1024GM48-BR,EFR32BG1B232F256GJ43-C0,EFR32BG1V132F128GM32-C0,EFR32BG1V132F256GJ43-C0R,EFR32FG12P231F1024GM48-BR,EFR32FG12P232F1024GL125-B,EFR32BG1V132F256GM32-B0,EFR32MG1B232F256GM32-C0,EFR32BG1P232F256GM48-B0,EFR32BG1V132F256,EFR32MG1P232F256GM48-B0,EFR32MG1B232F256,EFR32FG12P231F1024GL125-B,EFR32MG1P133F256GM48-C0,EFR32FG1P131F256,EFR32FG1V132F32GM48-B0,EFR32BG1B132F128GM32-C0,EFR32FG1P131F128,EFR32MG1B132F256GM48-C0,EFR32BG12P433F1024GM48-B,EFR32MG1P233F256GM48-C0,EFR32MG1V132F256GM32-C0,EFR32FG12P431F1024GM48-B,EFR32BG,EFR32BG1B132F256,EFR32MG1B232F256GM32-C0R,EFR32BG12P232F1024GM48-B,EFR32MG1B232F256GM32-B0,EFR32BG12P232F1024GM48-BR,EFR32BG12P132F1024GM48-B,EFR32MG1B732F256GM32-C0R,EFR32BG1V132F128,EFR32MG1P232F256GM48-C0,EFR32BG1P233F256GM48-C0,EFR32BG1P332F256GM32-B0,EFR32BG1P332F256GM48-B0,EFR32MG1B132F256GM48-B0,EFR32FG12P433F1024GL125-B,EFR32MG1P233F256,EFR32FG1V132F128GM48-B0,EFR32BG1B232F256GM32-B0,EFR32BG1P233F256,EFR32FG12P232F1024,EFR32BG1B132F256GM48-C0R,EFR32BG12P332F1024GM48-B,EFR32FG12P231F1024,EFR32BG12P433F1024GL125-B,EFR32MG1V132F256GM32-C0R,EFR32FG12P431F1024GL125-B,EFR32FG12P432F1024GL125-B,EFR32MG1B732F256,EFR32BG12P432F1024GL125-B,EFR32BG1B232F128,EFR32BG12P232F1024,EFR32BG12P332F1024,EFR32FG12P433F1024,EFR32MG1P232F256GM48-C0R,EFR32BG1V132F128GM32-C0R,EFR32MG1V132F256,EFR32BG12P433F1024,EFR32BG12P433F1024GM48-BR,EFR32BG1V132F256GM32-C0,EFR32MG1B132F256,EFR32FG12P431F1024GM48-BR,EFR32MG1B132F256GM32-C0R,EFR32BG12P432F1024GM48-BR,EFR32FG1V132F64GM48-B0,EFR32BG1V132F128GM48-B0,EFR32FG12P431F1024GL125-BR,EFR32FG12P432F1024GM48-BR,EFR32BG1B232F256GM48-B0,EFR32FG12P433F1024GM48-BR,EFR32BG12P432F1024GL125-BR,EFR32BG12P332F1024GL125-B,EFR32FG1P132F64GM48-B0,EFR32BG1B232F256GJ43-C0R,EFR32BG1B232F256,EFR32BG1V132F256GJ43-C0,EFR32MG1P133F256,EFR32MG1B232F256GM48-B0,EFR32FG12P433F1024GM48-B,EFR32BG12P332F1024GM48-BR,EFR32FG1P132F256GM32-B0R,EFR32FG1P132F64,EFR32FG12P231F1024GL125-BR,EFR32BG12P432F1024GM48-B,EFR32BG1B232F256GM48-C0,EFR32FG1P132F256,EFR32FG12P433F1024GL125-BR,EFR32FG1P132F256GM48-B0,EFR32MG,EFR32BG12P232F1024GL125-BR,EFR32BG1P232F256GM32-C0,EFR32FG1P132F128GM48-B0,EFR32MG1P232F256GM32-B0,EFR32BG1B132F128GM48-B0,EFR32BG1V132F256GM48-B0,EFR32MG1B232F256GM48-C0,EFR32BG1B232F128GM48-B0,EFR32BG12P132F1024GL125-B,EFR32MG1P132IM32,EFR32FG,EFR32FG12P231F1024GM48-B,EFR32FG1P132F128,EFR32FG1V132F64,EFR32BG1P332F256GJ43-C0,EFR32FG12P232F1024GL125-BR,EFR32BG12P132F1024GL125-BR,EFR32BG1B132F256GM32-C0R,EFR32FG1V132F128,EFR32MG1B132F256GM32-C0,EFR32FG12P432F1024,EFR32MG1V132F256GM48-B0,EFR32MG1P132F256GM48-B0,EFR32BG1B132F256GM48-C0,EFR32BG1P332F256,EFR32MG1P232F256,EFR32FG12P432F1024GM48-B,EFR32FG12P232F1024GM48-B,EFR32BG12P132F1024GM48-BR,EFR32FG12P431F1024,EFR32BG12P132F1024,EFR32MG1B732F256GM32-C0,EFR32FG1P131F64GM32-C0R,EFR32BG12P432F1024,EFR32BG1P332F256GM32-C0,EFR32FG1V132F32,EFR32FG1V132F256,EFR32BG12P332F1024GL125-BR,EFR32FG1P131F64,EFR32BG1P233F256GM48-C0R,EFR32FG12P432F1024GL125-BR,EFR32BG1B132F256GM48-B0,EFR32MG1V132F256GM48-C0,EFR32BG12P433F1024GL125-BR,EFR32MG1P132F256,EFR32BG1P232F256,EFR32FG1V132F256GM48-B0,EFR32MG1P232F256GM32-C0
Silicon Labs(芯科科技) AN961 基于全能Gecko和Flex Gecko系列的定制器件 应用笔记
型号- EFR32BG1B132F128,EFR32BG1P332F256GJ43-C0R,EFR32FG12P232F1024GM48-BR,EFR32BG12P232F1024GL125-B,EFR32BG1B232F256GJ43-C0,EFR32BG1V132F128GM32-C0,EFR32BG1V132F256GJ43-C0R,EFR32FG12P232F1024GL125-B,EFR32FG12P231F1024GM48-BR,EFR32BG1V132F256GM32-B0,EFR32MG1B232F256GM32-C0,EFR32BG1P232F256GM48-B0,EFR32MG1P232F256GM48-B0,EFR32BG1V132F256,EFR32MG1B232F256,EFR32FG12P231F1024GL125-B,EFR32MG1P133F256GM48-C0,EFR32FG1P131F256,EFR32FG1V132F32GM48-B0,EFR32BG1B132F128GM32-C0,EFR32MG1B132F256GM48-C0,EFR32FG1P131F128,EFR32BG12P433F1024GM48-B,EFR32MG1P233F256GM48-C0,EFR32MG1V132F256GM32-C0,EFR32FG12P431F1024GM48-B,EFR32BG,EFR32BG1B132F256,EFR32MG1B232F256GM32-C0R,EFR32BG12P232F1024GM48-B,EFR32MG1B232F256GM32-B0,EFR32BG12P232F1024GM48-BR,EFR32MG1B732F256GM32-C0R,EFR32BG12P132F1024GM48-B,EFR32BG1V132F128,EFR32MG1P232F256GM48-C0,EFR32BG1P233F256GM48-C0,EFR32BG1P332F256GM32-B0,EFR32MG1B132F256GM48-B0,EFR32BG1P332F256GM48-B0,EFR32FG12P433F1024GL125-B,EFR32MG1P233F256,EFR32FG1V132F128GM48-B0,EFR32BG1B232F256GM32-B0,EFR32BG1P233F256,EFR32FG12P232F1024,EFR32BG1B132F256GM48-C0R,EFR32BG12P332F1024GM48-B,EFR32FG12P231F1024,EFR32MG1V132F256GM32-C0R,EFR32BG12P433F1024GL125-B,EFR32MG1B732F256,EFR32FG12P432F1024GL125-B,EFR32FG12P431F1024GL125-B,EFR32BG1B232F128,EFR32BG12P432F1024GL125-B,EFR32BG12P332F1024,EFR32BG12P232F1024,EFR32FG12P433F1024,EFR32MG1P232F256GM48-C0R,EFR32BG1V132F128GM32-C0R,EFR32MG1V132F256,EFR32BG12P433F1024,EFR32BG12P433F1024GM48-BR,EFR32BG1V132F256GM32-C0,EFR32MG1B132F256,EFR32MG1B132F256GM32-C0R,EFR32FG12P431F1024GM48-BR,EFR32FG1V132F64GM48-B0,EFR32BG12P432F1024GM48-BR,EFR32FG12P432F1024GM48-BR,EFR32FG12P431F1024GL125-BR,EFR32BG1V132F128GM48-B0,EFR32BG1B232F256GM48-B0,EFR32FG12P433F1024GM48-BR,EFR32BG12P432F1024GL125-BR,EFR32FG1P132F64GM48-B0,EFR32BG12P332F1024GL125-B,EFR32BG1B232F256GJ43-C0R,EFR32BG1B232F256,EFR32MG1P133F256,EFR32BG1V132F256GJ43-C0,EFR32MG1B232F256GM48-B0,EFR32FG12P433F1024GM48-B,EFR32FG1P132F256GM32-B0R,EFR32BG12P332F1024GM48-BR,EFR32FG1P132F64,EFR32FG12P231F1024GL125-BR,EFR32BG1B232F256GM48-C0,EFR32BG12P432F1024GM48-B,EFR32FG1P132F256,EFR32FG12P433F1024GL125-BR,EFR32FG1P132F256GM48-B0,EFR32MG,EFR32BG12P232F1024GL125-BR,EFR32BG1P232F256GM32-C0,EFR32MG1P232F256GM32-B0,EFR32FG1P132F128GM48-B0,EFR32MG1B232F256GM48-C0,EFR32BG1B132F128GM48-B0,EFR32BG1V132F256GM48-B0,EFR32BG1B232F128GM48-B0,EFR32BG12P132F1024GL125-B,EFR32MG1P132IM32,EFR32FG,EFR32FG12P231F1024GM48-B,EFR32FG1P132F128,EFR32FG1V132F64,EFR32BG1P332F256GJ43-C0,EFR32FG12P232F1024GL125-BR,EFR32BG12P132F1024GL125-BR,EFR32BG1B132F256GM32-C0R,EFR32MG1B132F256GM32-C0,EFR32FG1V132F128,EFR32FG12P432F1024,EFR32MG1V132F256GM48-B0,EFR32MG1P132F256GM48-B0,EFR32MG1P232F256,EFR32BG1P332F256,EFR32BG1B132F256GM48-C0,EFR32FG12P432F1024GM48-B,EFR32FG12P232F1024GM48-B,EFR32BG12P132F1024GM48-BR,EFR32FG12P431F1024,EFR32MG1B732F256GM32-C0,EFR32BG12P132F1024,EFR32FG1P131F64GM32-C0R,EFR32FG1V132F32,EFR32BG1P332F256GM32-C0,EFR32BG12P432F1024,EFR32FG1V132F256,EFR32BG12P332F1024GL125-BR,EFR32FG1P131F64,EFR32BG1P233F256GM48-C0R,EFR32FG12P432F1024GL125-BR,EFR32BG1B132F256GM48-B0,EFR32MG1V132F256GM48-C0,EFR32BG12P433F1024GL125-BR,EFR32MG1P132F256,EFR32BG1P232F256,EFR32MG1P232F256GM32-C0,EFR32FG1V132F256GM48-B0
物联网无线连接最佳解决方案:非智能蓝牙莫属
EFR32BG是一款高性能、低功耗Blue Gecko无线SoC,不仅整合了Gecko MCU技术和2.4GHz RF收发器,还具有强大的片上处理能力,32位ARM Cortex- M4内核处理器,最高40MHz的扩展频率,强大的数据信号处理能力,支持多种加密算法,助力物联网。
新产品 发布时间 : 2016-08-18
BGM13S Blue Gecko Bluetooth® SiP Module Data Sheet
型号- BGM13S22F512GA-V3,BGM13S32,BGM13S22F512GN-V3R,BGM13S22,BGM13S32F512GA-V3,BGM13S,BGM13S22F512GN-V3,BGM13S32F512GA-V3R,BGM13S22F512GA-V3R,BGM13S32F512GN-V3,BGM13S32F512GN-V3R
【应用】支持PTA共存机制的WIFI、ZigBee、BlueTooth和4G多协议智能家居网关应用方案
早期的多协议智能家居网关大多不支持共存机制,在拥挤的2.4GHz频段中,存在着相互干扰的问题,影响通讯效果。为解决上述问题,本方案采用支持PTA共存机制的WIFI、ZigBee、BlueTooth的SOC芯片和全网通4G模块,并搭配高性价比的电源和高精度晶振,实现支持共存机制的多协议智能家居网关应用方案。
应用方案 发布时间 : 2020-04-11
Silicon Labs(芯科科技) Bluetooth®芯片和模块选型指南
描述- Silicon Labs is the trusted partner for the worldleading consumer and industrial brands and small and medium sized companies. Customers develop solutions for wide range of applications, from medical devices to smart lighting to building automation, and much more.
型号- BGM210P,BGM210L,BG27,BG24,BGM240S,BG22,BG21,BGM220S,BGM240P,BGM220P
蓝牙SoC EFR32BG在 Simplicity Studio中如何配置串口进行log输出,使用printf功能进行输出?
打开Simplicity studio软件,点击comfigurtor进入配置界面,然后在需要的功能框图上打勾,保存,在左侧代码列表里就能生成配置代码文件。在生成代码文件中进行添加Printf输出语句。
技术问答 发布时间 : 2017-06-02
EFR32BG13无线电板BRD4104A原理图(REV.A00)
型号- EFR32BG1B132F128,EFR32BG1P332F256GJ43-C0R,EFR32BG12P232F1024GL125-B,EFR32BG1B232F256GJ43-C0,EFR32BG1V132F128GM32-C0,EFR32BG1V132F256GJ43-C0R,EFR32BG12P332F1024GM48-BR,EFR32BG1V132F256GM32-B0,EFR32BG1P232F256GM48-B0,EFR32BG1B232F256GM48-C0,EFR32BG1V132F256,EFR32BG12P432F1024GM48-B,EFR32BG12P232F1024GL125-BR,EFR32BG1P232F256GM32-C0,EFR32BG1B132F128GM32-C0,EFR32BG1B132F128GM48-B0,EFR32BG1V132F256GM48-B0,EFR32BG1B232F128GM48-B0,EFR32BG12P433F1024GM48-B,EFR32BG12P132F1024GL125-B,EFR32BG,EFR32BG1B132F256,EFR32BG12P232F1024GM48-B,EFR32BG12P232F1024GM48-BR,EFR32BG12P132F1024GM48-B,EFR32BG1V132F128,EFR32BG1P233F256GM48-C0,EFR32BG1P332F256GM32-B0,EFR32BG1P332F256GM48-B0,EFR32BG1P332F256GJ43-C0,EFR32BG1B232F256GM32-B0,EFR32BG12P132F1024GL125-BR,EFR32BG1B132F256GM32-C0R,EFR32BG1P233F256,EFR32BG1B132F256GM48-C0R,EFR32BG12P332F1024GM48-B,EFR32BG1P332F256,EFR32BG1B132F256GM48-C0,EFR32BG12P132F1024GM48-BR,EFR32BG12P433F1024GL125-B,EFR32BG12P132F1024,EFR32BG1B232F128,EFR32BG12P432F1024GL125-B,EFR32BG1P332F256GM32-C0,EFR32BG12P432F1024,EFR32BG12P332F1024,EFR32BG12P232F1024,EFR32BG12P332F1024GL125-BR,EFR32BG1V132F128GM32-C0R,EFR32BG12P433F1024,EFR32BG12P433F1024GM48-BR,EFR32BG1V132F256GM32-C0,EFR32BG1P233F256GM48-C0R,EFR32BG12P432F1024GM48-BR,EFR32BG1B132F256GM48-B0,EFR32BG1V132F128GM48-B0,EFR32BG1B232F256GM48-B0,EFR32BG12P433F1024GL125-BR,EFR32BG12P432F1024GL125-BR,EFR32BG1P232F256,EFR32BG12P332F1024GL125-B,EFR32BG1B232F256GJ43-C0R,EFR32BG1B232F256,EFR32BG1V132F256GJ43-C0
BGM240S Bluetooth™ SiP Module Data Sheet
型号- XGM240-RB4318A,BGM240SA22VNA2,BGM240SB22VNA2R,BGM240S22A,BGM240SB22VNA2,BGM240S,BGM240SA22VNA2R
Silicon Labs(芯科科技) BT121 Bluetooth Smart功能模块 数据手册
型号- BT121-A-V2C,BT121,BT121-A-V2-IAP,DKBT,BT121-A-V1-IAP,BT121-A-V1,BT121-A-V2,BT121-A
Silicon Labs(芯科科技) bluegiga WT41-A/WT41-N远程Bluetooth模块数据手册
型号- WT41,WT41-A,WT41-A-HCI,WT41-A-AI5,WT41-N,WT41-E-HCI
BGM121/BGM123 Blue Gecko Bluetooth® SiP Module Data Sheet
型号- BGM123A,BGM121A256,BGM121N256V2,BGM121,BGM123,SLWRB4302A,BGM121A256V2,SLWRB4300A,BGM121A,BGM123A256V2R,BGM121N256V2R,BGM121N,BGM123N,BGM121A256V2R,SLWSTK6101C,BGM123N256V2R,BGM123N256V2,BGM123A256V2,BGM111A256
电子商城
现货市场
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
根据用户的蓝牙模块,使用Bluetooth 蓝牙测试装置MT8852B,测试蓝牙1.0至5.1,包括传输速率、功率、频率、调制和接收机灵敏度,生成测试报告。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
查看全部2条回复