微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > zigbee设备升级后如何让设备还在原网络中

zigbee设备升级后如何让设备还在原网络中

时间:10-02 整理:3721RD 点击:

ZStack版本是HA1.2.1 , 编译了NV_INIT 和 NV_RESTORE 。遇到了一个问题: 当通过OTA对网络设备进行固件更新后,设备会以重新入网的形式加入到网络中,这样还可以接收,但是对协调器升级固件后就不再加入原网络中了,而是自己重新建立网络,,,请问大神,如何可以让设备(协调器 和 其他网络节点) OTA升级固件后还在原来网络中?

我的想法是升级过程中不擦除 NV 所在的那几个 page,理论上这样是可以的,但是不知道有没有什么问题呢?

谢谢指导。

第一确保NV的内容不要被擦除,然后复位前需要把相关的start option清楚掉

zgWriteStartupOptions( ZG_STARTUP_CLEAR, ZCD_STARTOPT_DEFAULT_CONFIG_STATE | ZCD_STARTOPT_DEFAULT_NETWORK_STATE );

另外你也可以调试下,有没有从NV里面回复,主要看

uint8 ZDOInitDevice( uint16 startDelay )函数中,

#if defined ( NV_RESTORE )
// Get Keypad directly to see if a reset nv is needed.
// Hold down the SW_BYPASS_NV key (defined in OnBoard.h)
// while booting to skip past NV Restore.
if ( HalKeyRead() == SW_BYPASS_NV )
networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;
else
{
// Determine if NV should be restored
networkStateNV = ZDApp_ReadNetworkRestoreState();
}

if ( networkStateNV == ZDO_INITDEV_RESTORED_NETWORK_STATE )
{
networkStateNV = ZDApp_RestoreNetworkState();
}
else
{
// Wipe out the network state in NV
NLME_InitNV();
NLME_SetDefaultNV();
// clear NWK key values
ZDSecMgrClearNVKeyValues();
}
#endif

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top