Wi-SUN入门指导8:生成Wi-SUN SoC Meter OTA DFU升级所需的固件
由于我们的 EFR32FG25 USB Dongle 使用的是 EFR32FG25A121F1152IM56 无线SoC芯片,它的 flash 只有 1152 kB,不能实现固件备份式的 OTA 升级,因此我们使用 EFR32FG25 的 BRD4270B 开发板来测试 OTA 功能。BRD4270B 开发板使用的芯片是 EFR32FG25B222F1920IM56 芯片,它的 flash 大小为 1920 kB,足够放下 bootloader、应用固件和升级固件。本文主要以 BRD4270B 开发板为例,介绍生成 Wi-SUN SoC Meter OTA DFU 升级所需固件的方法。
1、在对 Meter 执行 OTA 升级之前,需要先给 Meter 烧录 bootloader 固件,所以我们先新建 bootloader工程。在 Simplicity Studio v5 软件的菜单栏点击 File,点击 New,再点击 SILICON LABS Project Wizard。
在 New Project Wizard 页面,为了方便给使用 EFR32FG25 芯片自己做板子的客户提供参考,我们没有使用 BRD4270B 开发板直接创建工程,而是使用 EFR32FG25B222F1920IM56 芯片来创建工程,所以 Target Boards 不用选择;Target Device 输入并选中 BRD4270B 开发板所使用的芯片型号:EFR32FG25B222F1920IM56,SDK 选择 Simplicity SDK Suite v2024.6.1;IDE/Toolchain 选择 GNU ARM v12.2.1;点击 NEXT。
在 MCU 下面勾选 Bootloader,点击搜索到的 Bootloader - SoC Internal Storage (single image on 1920kB device) 工程,点击 NEXT。
勾选 Copy contents,点击 FINISH。
2、默认的 bootloader 工程没有使用压缩算法,所以用于升级的 gbl 固件比较大,升级所需的时间比较长。建议使用 lzma 压缩算法,使用 lzma 压缩后的 gbl 固件大小只有没压缩 gbl 固件的 61%。
为了使用 lzma 压缩算法,我们需要安装 GBL Compression (LZMA) 组件。点击 bootloader-storage-internal-single-1920k.slcp,点击 SOFTWARE COMPONENTS,在搜索栏输入 lzma,点击搜索到的 GBL Compression (LZMA),点击 Install。
3、编译 bootloader-storage-internal-single-1920k 工程,把编译后的 hex 或者 s37 固件下载到 BRD4270B 开发板。
4、按照上面创建 bootloader 工程的方法,再使用 EFR32FG25B222F1920IM56 芯片创建 Wi-SUN - SoC Meter 工程。
为了方便跟之前使用 EFR32FG25 Wi-SUN Dongle 创建的 Meter 工程做区分,我们把工程名称改为 wisun_soc_meter_brd4270b,勾选 Copy contents,点击 FINISH。
5、点击 wisun_soc_meter_brd4270b.slcp 文件,点击 SOFTWARE COMPONENTS,在搜索栏输入 clock manager,点击搜索到的 Clock Manager 组件,点击 Configure。
勾选 HFXO Settings (if High Frequency crystal is used),
将 Clock Tree Settings 的 Default Clock Source Selection for HF clock branches 改为 HFXO。
6、点击 wisun_soc_meter_brd4270b.slcp 文件,点击 SOFTWARE COMPONENTS,在搜索栏输入 eusart,点击搜索到的 IO Stream: EUSART 组件,点击 Install。
把 INSTANCE NAME 改为 vcom,点击 Done。
等待组件安装完成后,点击 Configure,
选择串口外设,配置串口引脚。
7、接下来需要在 wisun_soc_meter_brd4270b 工程安装 OTA 所需要的 OTA DFU 组件,点击 wisun_soc_meter_brd4270b.slcp 文件,点击 SOFTWARE COMPONENTS,在搜索栏输入 ota dfu,点击搜索到的 Wi-SUN Over-The-Air Device Firmware Upgrade (OTA DFU) 组件,点击 Install。
勾选 Enable verbose mode 使用详细模式,方便在测试时打印详细的 OTA DFU log。一旦您熟悉了 OTA DFU,您就可以禁用详细模式。
把 TFTP service listening address 改为:fd00:6172:6d00::1;
把 OTA DFU notification server address 改为:fd00:6172:6d00::2。
Firmware image (gbl) file name on TFTP server 可以保持 wisun_firmware.gbl 不变,我们在 WSBRD 中也要使用同样的文件名。
8、在 wisun_soc_meter_brd4270b 工程的 app.c 文件中,为了区分 Meter 固件版本号,在 app_task() 函数的 sl_wisun_app_core_util_connect_and_wait() 这行代码前面,添加如下打印版本号和是否支持 OTA DFU 的代码:
printf("Version 1. Compiled on %s at %s\n", __DATE__, __TIME__);
#ifdef SL_CATALOG_WISUN_OTA_DFU_PRESENT
printf("OTA DFU is supported\n");
#endif
9、安装 OTA DFU 组件后,Simplicity Studio v5 软件会自动生成 led0 和 led1 的代码,如果我们不对这两个 led 的 GPIO 进行配置,编译程序会报如下错误。
在 SOFTWARE COMPONENTS 的搜索栏输入 led,点击搜索到的 Simple LED 组件,点击右边的 Add New Instances。
在 INSTANCE NAME 输入 led0,点击 Done。
led0 组件安装完成后,点击 Simple LED 组件左边的三角形图标,点击 led0,再点击 Configure。
在 SL_SIMPLE_LED_LED0 的 Selected Module 选择 BRD4270B 开发板 LED0 对应的 GPIO:PC06。
10、点击 wisun_soc_meter_brd4270b.slcp,再次点击 Simple LED 组件,点击 Add New Instances。
在 INSTANCE NAME 输入 led1,点击 Done。
led1 组件安装完成后,点击 led1,再点击 Configure。
在 SL_SIMPLE_LED_LED1 的 Selected Module 选择 BRD4270B 开发板 LED1 对应的 GPIO:PC07。
11、此时编译 wisun_soc_meter_brd4270b 工程,它会报 sl_wisun_meter_process 和 sl_wisun_meter_init 函数没有定义的错误。
因为安装 OTA DFU 组件之后,工程会启用 CoAP 优化模式,不需要使用这两个函数,所以这两个函数的源代码就被屏蔽了。
我们在 app.c 文件的 app_task() 函数里面,屏蔽 sl_wisun_meter_process(); 这行代码。
然后在 app_init.c 文件的 app_init() 函数里面,屏蔽 sl_wisun_meter_init(); 这行代码。
12、编译 wisun_soc_meter_brd4270b 工程,此时工程就能编译通过了。
13、为了区分不同版本的固件,点击 wisun_soc_meter_brd4270b 工程的 Binaries,在 wisun_soc_meter_brd4270b.s37 固件点击右键,点击 Rename。
将固件名称改为 wisun_soc_meter_brd4270b_version_1.s37,点击OK。
14、在 app.c 的 app_task() 函数中,将版本打印信息由 Version 1 改为 Version 2,重新编译 wisun_soc_meter_brd4270b 工程。
使用同样的方式,把刚编译好的固件名称改为 wisun_soc_meter_brd4270b_version_2.s37。
15、由于我们直接使用 EFR32FG25B222F1920IM56 芯片来创建 Meter 工程,没有使用 BRD4270B 开发板创建工程,所以没有使用虚拟串口。因此我们需要在开发板底板的 20pin 拓展接口上连接USB转串口工具,用来使用串口命令跟 Meter 通信,并且打印 Meter 的 log。
16、把 wisun_soc_meter_brd4270b_version_1.s37 固件烧录到 BRD4270B 开发板,EFR32FG25 芯片复位后会打印如下信息。可以看到 EFR32FG25 芯片现在使用的 Meter 固件版本号和程序编译时间。
17、找到 wisun_soc_meter_brd4270b_version_2.s37 固件的存放路径,并复制这个固件。
把 wisun_soc_meter_brd4270b_version_2.s37 固件粘贴到 commander.exe 所在的文件夹。
18、打开电脑的命令行页面,先进入到 commander.exe 所在的文件夹,再使用如下命令将 wisun_soc_meter_brd4270b_version_2.s37 固件转换为 wisun_soc_meter_brd4270b_version_2_lzma.gbl 固件,并且使用了 lzma 压缩算法。
commander gbl create --app wisun_soc_meter_brd4270b_version_2.s37 wisun_soc_meter_brd4270b_version_2_lzma.gbl --compress lzma
现在可以在 commander 文件夹中看到刚生成的 wisun_soc_meter_brd4270b_version_2_lzma.gbl 固件,后面对 Meter 做 OTA 升级时,需要把这个 gbl 固件发送到树莓派。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由潮汕小菜提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】基于Silicon Labs无线SoC芯片MG24开发套件的Matter入门指导文章汇总
本文主要介绍基于Silicon Labs MG24开发套件的Matter入门指导文章汇总。
设计经验 发布时间 : 2023-06-30
【经验】使用Simplicity Commander工具读写EFR32无线SoC芯片EUI和install code方法
本文以Silicon Labs EFR32FG23 Sub-G无线SoC芯片为例,介绍如何读写EFR32无线SoC芯片的EUI和install code的方法。
设计经验 发布时间 : 2023-04-21
Wi-SUN入门指导5:使用EFR32FG25 Wi-SUN Dongle创建Wi-SUN-SoC Meter工程
本文主要介绍如何使用EFR32FG25 Wi-SUN Dongle创建Wi-SUN - SoC Meter工程,并测试Meter跟WSBRD是否通信正常。
设计经验 发布时间 : 2024-09-24
【经验】使用串口来升级EFR32FG23无线SoC芯片固件的方法
本文主要介绍如何使用BootLoader——NCP UART XMODEM工程实现使用串口升级Silicon Labs EFR32FG23无线SoC芯片固件的方法。
设计经验 发布时间 : 2022-09-01
【经验】配置迈斯威志WizPro200EFM烧录器实现脱机烧录无线SoC芯片EFR32MG21固件的方法
Silicon Labs的EFR32MG21无线SoC芯片,主要用于ZigBee和Matter设备。本文主要介绍如何配置迈斯威志WizPro200EFM烧录器,实现脱机烧录EFR32MG21无线SoC芯片固件的方法。
设计经验 发布时间 : 2023-01-21
如何用EFR32FG23无线SoC芯片读取平均RSSI?
本文以Silicon Labs的EFR32FG23无线SoC芯片的rail_soc_simple_trx工程为例,介绍EFR32FG23芯片读取某个信道的平均RSSI的方法。
设计经验 发布时间 : 2024-03-07
【经验】如何使用RAILTEST程序测试无线SoC芯片EFR32MG的蓝牙性能?
使用过Silicon Labs无线SoC芯片EFR32MG的Zigbee功能的工程师多数已经习惯使用Railtest软件对Zigbee性能做测试,而在Railtest软件下也可以对BLE性能做测试。本文将介绍具体的设置步骤与注意事项。
设计经验 发布时间 : 2020-09-26
【经验】Matter入门指导6:用Simplicity Commander给Breakout开发板烧录固件的方法
我们在前面的Matter入门指导中已经编译好了Matter over Thread的Light、Switch和bootLoader固件。本文主要介绍使用Simplicity Commander工具给EFR32MG24 Breakout开发板烧录固件的方法。
设计经验 发布时间 : 2023-05-21
EFR32FG23无线SoC芯片读取数据包实时RSSI值的方法
本文以Silicon Labs的EFR32FG23无线SoC芯片的rail_soc_simple_trx工程为例,介绍EFR32FG23芯片读取数据包的实时RSSI值的方法。
设计经验 发布时间 : 2024-03-07
【经验】使用Simplicity Commander工具对无线SoC芯片EFR32FG23执行recover的方法
在使用芯科科技EFR32FG23时,有时一些错误的操作会导致芯片烧录一次固件之后就不能重新烧录,或无法识别到芯片等问题,需要对芯片执行recover。本文主要介绍使用Simplicity Commander工具对EFR32FG23执行recover的方法。
设计经验 发布时间 : 2022-01-15
【经验】无线SoC芯片EFR32MG21手动生成OTA文件的方法与注意事项
在使用SILICON LABS无线SoC芯片EFR32MG21芯片设计ZigBee产品时,我们会用到OTA功能,这就要产生OTA文件。EmberZNet 6.x版本的项目中会自动为启用了OTA客户端插件的项目创建OTA文件,需要我们手动去创建OTA文件。
设计经验 发布时间 : 2023-05-24
xG24开发板新增支持CircuitPython,加速物联网原型设计和开发过程
Silicon Labs致力于提升物联网无线连接技术能力,为xG24无线SoC系列开发板引入CircuitPython支持。其是针对微控制器优化的Python的开源版本,有助于扩展xG24 Explorer套件,xG24评估套件和Sparkfun Thingplus Matter - MGM240P开发板的功能,允许用户利用CircuitPython的简易性和灵活性,利用芯科科技板载的高级功能。
原厂动态 发布时间 : 2023-08-22
【经验】校准使用TCXO晶振的无线SoC芯片EFR32FG23频偏的方法
当无线SoC芯片EFR32FG23使用TCXO晶振时,无法通过修改Ctune值的方式来校准频偏。本文主要介绍通过设置频率offset值的方式,来校准使用TCXO晶振的EFR32FG23芯片频偏的方法。
设计经验 发布时间 : 2022-09-25
【经验】Simplicity Studio 5软件配置使用EFR32FG14无线SoC芯片USART串口的方法
Simplicity Studio 5(SSv5)是Silicon Labs新推出的开发软件,软件界面和使用方法跟SSv4版本有较大的区别。本文以EFR32FG14使用simple_trx工程为例,介绍Simplicity Studio 5 软件如何配置和使用EFR32FG14无线SoC芯片USART串口的方法。
设计经验 发布时间 : 2021-01-16
【经验】无线SoC芯片EFR32MG21程序中MFG_SECURITY_CONFIG参数的设置与功能
在无线SoC芯片EFR32MG21的ZigBee默认Z3Light程序运行时我们可以通过keys print这个CLI命令打印NWK key与TC Link Key等密钥参数,打印的效果如下,那我们是否可以隐藏这些密钥无法打印呢?
设计经验 发布时间 : 2023-05-26
电子商城
品牌:SILICON LABS
品类:Flex Gecko Wireless SoC
价格:¥78.9741
现货: 2,495
品牌:SILICON LABS
品类:Flex Gecko Wireless SoC
价格:¥95.7918
现货: 20
品牌:SILICON LABS
品类:Flex Gecko Wireless SoC
价格:¥58.3484
现货: 18
现货市场
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
世强深圳实验室提供Robei EDA软件免费使用服务,与VCS、NC-Verilog、Modelsim等EDA工具无缝衔接,将IC设计高度抽象化,并精简到三个基本元素:模块、引脚、连接线,自动生成代码。点击预约,支持到场/视频直播使用,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论