微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 协调器开启NV_INIT和NV_RESTORE,设备会重启。

协调器开启NV_INIT和NV_RESTORE,设备会重启。

时间:10-02 整理:3721RD 点击:

1 问题:

协调器开启NV_INIT和NV_RESTORE,设备会重启。

2 配置:

协调器开启 NV_INIT和NV_RESTORE 。关闭自动组网(PermitJoiningRequest),协议栈:2.5.1

3 操作过程:

协调器上电,节点上电,然后按按键打开网络(PermitJoiningRequest),发现只能组网一个设备。仔细分析发现协调器重启。

4 问题分析:

设备重启(ResetReason()为2)原因是watchdog重启。于是单步调试发现每个子节点做组网的时候操作ZDApp_SaveNetworkStateEvt中的 NLME_UpdateNV( NWK_NV_NIB_ENABLE|NWK_NV_DEVICELIST_ENABLE|NWK_NV_BINDING_ENABLE|NWK_NV_ADDRMGR_ENABLE ); 的时候,watchdog会重启。

5做过以下实验:

1 关闭开门狗,做3的操作。组网正常,协调器没有重启。

2 打开看门狗,屏蔽NLME_UpdateNV(NWK_NV_NIB_ENABLE|NWK_NV_DEVICELIST_ENABLE|NWK_NV_BINDING_ENABLE|NWK_NV_ADDRMGR_ENABLE ); 。组网正常,协调器没有重启

6问题解决方案:

希望帮忙分析一下问题,解决这个问题。。。急急急。。。。。。

thanks

应该是NLME_UpdateNV要做一些写flash的操作比较耗时,导致看门狗复位。

1. 将看门狗时间设为最大

2.在掉用NLME_UpdateNV之前喂下狗

已经尝试过在 NLME_UpdateNV之前喂狗(WD_KICK();),看门狗的时间一直最大,但是问题依旧。所以才提出疑问,为什么会这样。。。flash耗时也不会这样。但是NV的功能我们又不能少,看门狗不能关,所以想知道还有什么会造成这样的问题

1. 将看门狗时间设为最大

2.在掉用NLME_UpdateNV之前喂下狗 这两个我都做过,问题依旧。

今天仔细debug,发现修改了 NWK_MAX_DEVICE_LIST     40  导致问题出现,不知道这个为什么会有这个影响

底层看不到。不过猜测应该是NLME_UpdateNV会保存关联表。你设置NWK_MAX_DEVICE_LIST 越大,你能关联的的节点数就越多

从下面调用使用的参数,这个函数需要保存的数据还真不少。

NLME_UpdateNV( NWK_NV_NIB_ENABLE |NWK_NV_DEVICELIST_ENABLE |NWK_NV_BINDING_ENABLE |NWK_NV_ADDRMGR_ENABLE );

可建议的方法如下:

1. 确定是用的最大的时间吗?最大时间是一秒。

2. 改写成如下试试,分成一项项试试

NLME_UpdateNV( NWK_NV_NIB_ENABLE);

//喂狗

NLME_UpdateNV( NWK_NV_DEVICELIST_ENABLE );

//喂狗

。。。。。

这样的实验昨天也做过,但是问题依旧。想咨询一下:

1  NLME_UpdateNV( NWK_NV_NIB_ENABLE |NWK_NV_DEVICELIST_ENABLE |NWK_NV_BINDING_ENABLE |NWK_NV_ADDRMGR_ENABLE ); 这里面存储网络,哪些是必备的?(我做过一些后两项没有update的操作,但是重启后组网信息丢失)

2 修改NWK_MAX_DEVICE_LIST ,这个有什么限制?

今天做了一个实验就是:

条件:

设置NWK_MAX_DEVICE_LIST 30;

打开网络后,如果设备节点14个以内可以立马组网不会重启,如果超过14个,协调器就会重启。问题的root cause 还是没有找到,导致问题还是无法解决。

谢谢一直以来的支持。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top