Z-Stack 2.5.1a,终端定时发送消息给协调器,没有路由器。
如果协调器先上电,再开终端,通讯正常。
反过来,如果终端先上电,协调器后上电,终端无法连上协调器。
请问怎么debug?
YiKai Chen:
抓包看看是什麼狀況
Viki Shi:
“如果终端先上电,协调器后上电,终端无法连上协调器。”建议这部分抓包一下,帮助判断问题
user6008379:
回复 Viki Shi:
我们做了这样一个实验,请帮忙分析一下。
协议栈:Z-Stack 2.5.1a (不要说太旧了,在CC2530跑这个还真顺畅,换成3.0各种资源不足)
芯片:CC2530,终端和协调器都是
工程模板:GenericApp问题描述:终端先上电,协调器后上电,终端连不上协调器,现象表示为协调器收不到终端定时发来的消息;需要复位终端,才能通讯。
解决方法:我们在协调器加上NV_RESTORE宏定义,终端不加,可以解决上述问题。
请问,为什么终端没有加NV_RESTORE可以解决上述问题?
我们的应用中,终端是电池供电,终端只是发消息给协调器,不接收协调器通知。不想在终端加NV_RESTORE,因为不方便在更换协调器后通知终端清除NV。
YiKai Chen:
回复 user6008379:
有沒有抓包先分析是什麼狀況?
user6008379:
回复 YiKai Chen:
这是协调器不定义NV_RESTORE情况下,复位协调器后终端无法入网,抓取协调器侧数据包的情况。
Coordinator-without-nv-restore.psd
YiKai Chen:
回复 user6008379:
协调器不定义NV_RESTORE,复位协调器后會重新組網,除非终端也不不定义NV_RESTORE,不然复位协调器后终端无法入网是正常的
Viki Shi:
回复 user6008379:
如果要断电复位后恢复网络,终端和协调器都要添加NV_RESTORE
user6008379:
回复 Viki Shi:
所以我来问为什么我只在协调器加NV_RESTORE就感觉解决问题了。
我的应用中终端只发不收,如果加了NV_RESTORE,无法通知终端清除NV(比如更换了协调器)。
YiKai Chen:
回复 user6008379:
协调器加NV_RESTORE断电复位后還是會用原來的網路資訊,所以你的终端還是可以用原來的網路資訊rejoin
user6008379:
回复 YiKai Chen:
ok RESTORE问题澄清了。
目前剩下最后一个问题。一个终端,一个协调器。终端正常连上协调器A。把协调器A断电,换一个烧录同样程序的协调器B上电,发现终端尝试多次都无法连上协调器B。
把协调器B断电,将协调器A重新上电,终端仍然可以连上协调器A。
请问怎么解决?