微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 路由断电后重新上电,设备组不上网

路由断电后重新上电,设备组不上网

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

各位大神,求助,急急急!

现在有20多个设备组网,1个协调器,2个路由器,剩下的都终端节点

设备组网成功后,我把路由关电,然后重新上电。

终端设备有时恢复网络失败,rejoin也偶尔失败(这个可能属于正常现象)
但是最严重的时候设备的flash都被改变了(比如ZCD_NV_STARTUP_OPTION),导致我就算重新上电,也无法恢复原有的网络,变成了重新加入网络。

请问是否预编译了NV_RESTORE?

所有设备都开启的NV_RESTORE,我今天继续运行发现,好像是设备被复位了,但是为什么会被复位呢(频繁插拔路由器)

另外我定义了xWDT_IN_PM1,所以应该不是看门狗

if ( events & ZDO_DEVICE_RESET )
{
#ifdef ZBA_FALLBACK_NWKKEY
if ( devState == DEV_END_DEVICE_UNAUTH )
{
ZDSecMgrFallbackNwkKey();
}
else
#endif
{
// Set the NV startup option to force a "new" join.
zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE );

// The device has been in the UNAUTH state, so reset
// Note: there will be no return from this call
SystemResetSoft();
}

继续追踪发现,设备运行到这里了。强制恢复成一个新设备了。

这是什么原因导致的呢?我是否可以把zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE );

继续追踪,发现设备给路由发送了很多的NWK REJOIN REQUEST,然后路由给设备发送了一个NWK LEAVE,设备收到NWK LEAVE之后,复位了设备。

我在路由上开启了CHILD_AGING功能,这会导致路由发送NWK LEAVE命令吗?

求解答,各位大神。

继续追踪发现,

我断开路由器之后,设备显示恢复成孤儿设备,没有其他路由和协调器接收该孤儿设备,

然后设备会去寻找可加入的网络,如果找到可以加入的网络,设备会发送rejoin命令,

此时协调器只能加入6台终端设备,但是有8台设备搜索到可以加入网络,并且都发送了nwk rejoin request,

前6台设备都收到了nwk rejoin response,后2台设备因为AssociatedDevList已满,所以协调器发送了nwk leave

而终端设备收到leave命令后改写了ZCD_NV_STARTUP_OPTION,然后执行了复位。

所以之后设备就按一个新的设备去加入网络了。而不是恢复网络了。

不知道理解是否正确,这是分析包看到的结果。

暂时的改善方法是:

// Set the NV startup option to force a "new" join.
//zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE );   //屏蔽了这两句话

// The device has been in the UNAUTH state, so reset
// Note: there will be no return from this call
//SystemResetSoft();   //屏蔽了这两句话

暂时测试还没有问题。

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

网站地图

Top