Other Parts Discussed in Thread: CC2652R7, Z-STACK, SYSCONFIG
器件型号: CC2652R7
主题中讨论的其他器件: Z-STACK、 SYSCONFIG
您好:
我正在处理一个电池供电的 Zigbee 终端设备 (ZED) 项目、需要帮助解决两个相关问题:
硬件/软件环境:
-设备: CC2652R7(定制板)
- Z-Stack 版本: 3.x (SDK 8.30)
-配置: ZigBee 终端设备(休眠终端设备)
——
问题 1:未解释的网络休假事件
我们的电池供电终端设备偶尔会意外离开 Zigbee 网络(极少数情况下,现场设备中有~0.1%)。 由于这是间歇性的、很难在我们的实验室中重现问题、因此我还没有监听器日志或器件跟踪。 我确实有信息表明、旧版本的 SDK (6.20) 上也出现了此问题。
问题:
-什么是已知的机制,可以导致 ZED 离开网络而无需明确的应用程序请求?
-我应该看看:父母丢失超时,轮询率问题,安全故障,低电池行为,或其他什么?
-我是否应该监控特定的 NV 项目或运行时标志,以检测为什么发生休假?
——
问题 2:NLME_RestoreFromNV() 返回 False
为了解决问题 1、我正在实施网络备份/恢复机制、将网络参数保存到单独的自定义 NVS 区域。 设备离开网络后、我要恢复参数并重新加入封闭网络(禁用允许加入)。
当前实施的方案:
1.成功加入后:
-将 NIB 数据保存到自定义 NVS 区域
-保存安全密钥
2.尝试引导/重新连接时:
-从自定义 NVS 恢复 NIB 数据
-从自定义 NVS 恢复安全密钥
-调用 bdb_setNodeIsOnANetwork()-告诉 BDB 设备有网络参数、以便它可以尝试安全重新连接
-清除启动选项以允许在下次启动时恢复网络状态
-通过 osal_nv_write 写入 NIb
-重新启动设备
问题:
NLME_RestoreFromNV() 始终返回 false。 由于这是一个预编译的库函数、因此无法调试其失败的原因。
问题:
-什么情况会导致 NLME_RestoreFromNV () 返回 false ?
-在调用此函数之前,是否必须设置特定的初始化序列或 NV 项?
-我是否应该在休假事件后使用不同的 API 来恢复网络状态?
-网络密钥是否需要与 NIB 结构分开处理?
我尝试过的方法:
-已验证的 NV 写入操作成功
-已验证的 NIB 数据完整性,并在恢复前进行 CRC 检查
-在初始化序列中的不同点调用恢复
希望就这两个问题提供任何指导。 对于问题 1、即使是一般的调试策略也会有所帮助。 对于问题 2、了解恢复 API 要求将取消阻止我的原型。
谢谢!