Thread 中讨论的其他器件:SysConfig、 Z-stack
我正在尝试为 Zigbee 项目启用看门狗功能(用作温度传感器)、并注意到好像从来没有任何系统重新启动。 我已从 syscfg 文件中启用看门狗、并按照文档中所述配置看门狗(也是我在 Resource Explorer 中的看门狗示例中完成的相同方法)。 它的配置方式如下:
Board_initGeneral(); Watchdog_init(); Watchdog_Params_init(&wdgParams); wdgParams.callbackFxn = wdgCallback; wdgParams.resetMode = Watchdog_RESET_OFF; // tried Watchdog_RESET_ON as well, nothing different happens wdgParams.debugStallMode = Watchdog_DEBUG_STALL_ON; wdgHandle = Watchdog_open(CONFIG_WATCHDOG_0, &wdgParams); if (!wdgHandle) { while (1) ; } uint32_t tickValue = Watchdog_convertMsToTicks(wdgHandle, 10000); Watchdog_setReload(wdgHandle, tickValue);
与 Watchdog_reset_off 一起使用的看门狗回调:
Void wdgCallback(UArg handle){ while(1) { } }
现在、我从不重置看门狗、因此我希望我的应用每10秒崩溃一次、然后重新启动。 但这种情况从未发生。
当使用 Watchdog_reset_off 调试器函数时、可以看到调试器一直卡在回调中、因此在配置的时间之后看门狗可被正确触发。 它从不离开、也不向协调器发送任何数据。
当 调试器使用 Watchdog_reset_on 时、可以看到随着调试器崩溃和无法与电路板交谈会发生一些事情。 但是、在查看 Home Assistant 时、我可以看到电路板按照配置的报告设置将数据包发送到堆栈。
对于 ZigBee 应用、是否需要进行一些特殊设置以使看门狗正常工作? 我的看门狗配置看起来与示例中提供的配置相同;我不明白为什么它不起作用。
试图使用看门狗是针对以下问题的解决方案:在从协调器中移除器件后、似乎会崩溃、需要硬件重启才能再次进行修复。 我认为如果我要使用看门狗、该器件会在一段时间后自行重新启动、并准备好进行维修。 是否有更巧妙的解决方案来解决此问题?