专家们好,新问题又来了:
cc2530+2.5.1a,协调器+路由,开启INTER_PAN
客户那边的三个系统装在一起,单个系统路由节点约100个。
最近出现一台无法通信的情况:
zigbee做的串口透传。用协调器与其通信发现没响应。本地串口功能正常,用定时函数设置的呼吸灯工作正常。。用串口给其发数据然后抓包,发现有数据法出来,但信号很小(近距离-98dbm)
重新烧入程序后功能恢复正常。
分析:产品用在逆变器中,存在较大电磁干扰。之前出现过固件变异,而后操作做了0-120pages flash lock。因此有理由怀疑运行过程中后6pages变异导致运行异常的可能。
我也不需求非要知道原因了,求解决方案!
用“zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);”初始化一下?
初始化后需要重新入网,是否能用串口或IIC等通过读取数据来实现本地入网的方法?
Sfei:
如附件是另一个系统出现异常后,对该节点的抓包数据,请高手帮忙分析下该节点现在是什么状态,谢谢!
Sfei:
回复 Sfei:
我一直用串口让其透传数据,发现其一直在发nwk route request,,,关键是该帧的source address 和dest pan都是0xFFFF,,,而不是正常的短地址,这意味这什么?
Sfei:
回复 Sfei:
诶,凉了凉了,又凉了
VV:
需要把节点的NIB, extendPANID, 密钥信息,都提前保存好。
如果是有加密的话,另外还需要注意Framecounter,定期的保存在host上面。
user4381970:
回复 VV:
全局搜索了nwkFrameCounter只有初始化的地方清零。
请问这个需要如何操作保存呢?这个主要有什么作用呢,路由不转发与这个有关系吗
Sfei:
回复 VV:
完了完了,现场又出现几台一模一样上的现象,在FFFF状态下发route request。。。。
VV,
我现在的方案是长时间没有通信则恢复默认状态(烧录后未入网状态),然后通过调用host上保存的数据,直接切换至之前正常通信状态,通过设置“NIB,EXTENDPANID,密钥信息”是否就能实现?
miffy:
回复 Sfei:
我也遇到过你说的固件变异情况,理性分析之后,觉得可能是部分固件信息丢失了。归根结底是硬件问题,更换了硬件以后,做了防护措施,比如屏蔽罩,安规电路,EMI电路云云,目标只有一点,就是让脆弱的芯片能在温室里面生活。
这样芯片基本不会出故障,要说协议栈不稳定,我倒是目前只遇到过一次,网络连续几个月都运行,没有断电重启过,后面出现过一次ZC和ZR不能通讯的bug,最后重启了一下ZC就好了