1、协议栈用的版本是ZHA1.2.2a
2、这个问题的发作完全没有规律,有时候十天半月都没事,有时隔一两天就发生;
3、出问题后,协调器其他功能都正常,包括串口的通讯和IO的响应,只有link status不发,所以与其他设备的无线通讯就都没了;
4、无线部分也不是全部死机,有路由设备上报信息时,它也能回ACK,发生路由查找,它也能发送route request。另外看门狗和系统定时器也使正常的,邻居表通过串口打印出来里边数据也正常。
zigbee网络只要出现这个协调器不发link status的问题,过会网络就瘫痪了,除非重启协调器。现在有个项目都提心吊胆的~~~~~~
Viki Shi:
请打一下补丁再测试:processors.wiki.ti.com/…/Zigbee_Known_Issues_and_Proposed_Fixes
user5020974:
回复 Viki Shi:
您好,上边的链接内容看完了,但是没有发现有对这个问题的修复呀?里边基本都是针对zigbee3.0协议栈的问题修复,大部分都是关于BDB功能的。
就看到一个相关的“CC2530/1 ZNP device sporadically returns ZMemError“,里边的建议是把堆的大小改大到2800,但是ZHA1.2.2a里边的默认堆的大小已经是3K了~
user5020974:
回复 user5020974:
不过问题的出现感觉确实跟内存有关系,经常能收到下边这些错误应答:
#define MAC_NO_RESOURCES0x1A/* The operation could not be completed because nomemory resources were available */
#define ZDP_TABLE_FULL0x8c// No table space to support operation
而且网里边的设备数量越多,越爱出问题
Viki Shi:
回复 user5020974:
你用的芯片是CC2530吗?
YiKai Chen:
回复 user5020974:
如果解決不了或許可以試試定時重啟协调器
user5020974:
回复 Viki Shi:
对 是2530芯片。因为现在已经生产的网关都已经定好是2530模组的接口了,不好替换了
user6069081:
回复 YiKai Chen:
请问z-stack3.0.2重启协调器而不是复位该用哪个函数?
YiKai Chen:
回复 user6069081:
使用OnBloard.h裡面的SystemReset
user6069081:
回复 YiKai Chen:
SystemReset跟SystemResetSoft有什么不同?
Susan Yang:
回复 user6069081:
SystemReset
这种重启的机制是关闭中断并死循环,然后WatchDog超时,从而导致的重启即“硬重启”。
SystemResetSoft
这种重启将PC指针重置为0,也就是上电时代码启动的位置,即“软重启”。