参考文档:AN728: Over-the-Air Bootload Server and Client Setup>>
实验环境:EFR32MG1P232F256GM48开发板、EmberZNet 6.3.0.0、Ubuntu 16.04、Vbox
一、建立工程:
OTA Server(Host + NCP)
1.用EFR32MG1P232F256GM48开发板做NCP
新建NCP的APP工程:ncp-uart-hw(硬件控制流)或者ncp-uart-sw(软件控制流)
新建NCP的BootLoader工程:bootloader-uart-xmodem
编译后烧录:
2.在VirtualBox虚拟机上运行的ubuntu16.04系统,编译产生的Z3GatewayHost作为Host
How to build an EZSP-UART host application>>
新建Host工程:Z3GatewayHost
在VirtualBox中设置Windows上的共享文件夹如下:
安装VBoxGuestAdditions.iso功能增强包
添加用户到vboxsf组:
$ sudo usermod -a -G vboxsf tenix(unbuntu用户名)
$ sudo reboot
用root账户进入共享目录:
$ sudo -i
# cd /media/sf_SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.3/app/builder/Z3GatewayHost
# make NO_READLINE=1
等待几分钟编译完成
# cd /media/sf_SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.3/app/builder/Z3GatewayHost/build/exe
# ./Z3GatewayHost -n 0 -p /dev/ttyACM0
回车即可输入CLI命令:
建网
plugin network-creator start 1
允许加网180s
plugin network-creator-security open-network
3.网关上的NCP做OTA升级
ZigBee Coordinate OTA:How to upgrade(downgrade) the ncp image with host application >>
需要Host支持OTA Client端,如下图,重新在Linux环境下编译Z3GatewayHost
新建NCP工程,更新版本号,制作OTA升级文件
.s37->.gbl->.ota
将OTA文件复制到共享文件夹路径下的Z3GatewayHost文件夹里面的ota-files文件夹
文件夹路径 C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.3\app\builder\Z3GatewayHost\build\exe\ota-files
重启Host,加载ota文件
输入CLI命令,启动standalone bootloader开始OTA升级
plugin ota-client bootload 0
ZigBee Router/EndDevice OTA:How to setup OTA Server and OTA Client on WSTK+4151 radio boards? >>
建立一个OAT Client工程:
生成IAR工程,编译产生OTA版本为1的固件,烧录APP程序和bootloader程序到开发板上
然后修改OTA版本为5,需要修改“.h”文件和“-postbuild.py”文件
修改“-postbuild.py”文件的 OTA版本为5
修改“.h”文件的 OTA版本为5
编译IAR产生OTA固件,将固件复制到host共享目录的“ota-files”文件夹,路径如下 :
C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.3\app\builder\Z3GatewayHost\build\exe\ota-files
在Host端重启NCP应用,显示OTA文件的相关Manufacturer ID、image type ID和Version如下:
ZigBee节点OTA更新的方式有两种:1.设备上电后5分钟内match一次ota服务器,然后每隔24小时请求一次镜像更新。2.设备入网后match过ota server后,ota server主动发送image notify给设备,设备收到后请求镜像,并开始下载OTA文件,相关抓包文件>>
二、 OTA抓包分析:
设备加网成功->延时(5分钟内随机时间)match ota server->请求新镜像->开始下载镜像->下载完成->校验镜像->设备重启
三、OTA优化:
OTA请求包的速度为short poll 的频率,可以缩短其频率为0.25s来加快ota过程,参考方法>>
效果如下:57分42中,一秒内请求了4个ota数据包,0.25一次