微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > zigbee 中继失效

zigbee 中继失效

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

大家好!

         环境如下:

         1 个 ZR, 4个ZED, 1个ZC

         4个ZED 连接===》 ZR 然后 连接====》ZC

 

         ZR 应用层上 做了一个定时器,每8秒 发一下 ACTIVE EP 请求, 检测ZR 与ZC 的连接情况

        

  if(events & NETLINK_CHECK_EVT)
  {      
     if(Being_Link == FALSE)
     {
      #ifdef LEDShow
        HalLedSet ( HAL_LED_2, HAL_LED_MODE_OFF);
        if(!BasicReset)
          HalLedBlink ( HAL_LED_1, 0,LOST_NETWROK_FLASH, LOST_NETWROK_CYCLE );
      #endif 
     }
     else
     {
      #ifdef LEDShow
        HalLedSet ( HAL_LED_1 | HAL_LED_2, HAL_LED_MODE_OFF);
      #endif
     }
     
     if(FailedLinkCnt >= LoseLinkCnt_Limit)
     {
       Being_Link = FALSE;
       FailedLinkCnt =0;
     }
     else
     {
       FailedLinkCnt++;
     }
     
     ZDP_ActiveEPReq(&Coordinator_dstAddr,Coordinator_dstAddr.addr.shortAddr,0);
     osal_start_timerEx( zclVrouter_TaskID, NETLINK_CHECK_EVT, NETLINK_CHECK_CYCLE);//8second
     return ( events ^ NETLINK_CHECK_EVT );
  } 

     整个环境允许了30~40 分钟左右,  然后发现ZR 连接状态的指示灯一直闪。。。

    抓包软件,显示ZR 没有再发ACTIVE EP  request、、、、、

    然后挂在  ZR 下面的ZED 发送给ZC 的消息,  ZR 接到了但是没有帮它们 转发~~~~~~全吞了!

    但是,我查看了一些ZC 的信号还是很好, 但是ZR 就是没有把信息转发给ZC。。。。。

    

     抓包的log 如下: 5700.ZR lose connect with ZC.rar

       

    

有点怀疑是ZR上面的memory 溢出了。因为Active EP request发送和Response会占用较多的memory 分配。

你是哪个版本的协议栈?

你可以使用memory 调试的方法,把下面改成TRUE,然后用IAR调试模式下运行,去检查memory里面的情况。

// For information about memory profiling, refer to SWRA204 "Heap Memory Management", section 1.5.
#if !defined OSALMEM_PROFILER
#define OSALMEM_PROFILER FALSE // Enable/disable the memory usage profiling buckets.
#endif

另外你可以用其他的数据包做心跳包,测试下。或者直接把这个心跳包关了。

另外你自己的应用程序里面是否有memory 动态分配,但是没有释放的?

VV,  确实ZR 上的内存泄漏了! 后来我已经查到了。

另外有两个 问题想请教你:

1. ZC 广播 的信息  是否会 通过 ZR 广播到  ZR 的下级节点?

2. ZR 下级节点是 休眠设备, 那么 ZR 能为下级节点 缓存 多少条 广播信息?

3 如果ZC 断电了, 此时ZR 下级 的ZED 如果发送消息 到ZC ,  ZR 是否会为 ZED  缓存消息? 还是 直接发出去?

“另外你可以用其他的数据包做心跳包”

你的意思 是自定义  一个私有的吗?   在现有基础上 (不改动ZC 端程序) , 有没有其他更好的   数据包?

谢谢!

MarS

VV,  确实ZR 上的内存泄漏了! 后来我已经查到了。

另外有两个 问题想请教你:

1. ZC 广播 的信息  是否会 通过 ZR 广播到  ZR 的下级节点?

取决于使用的广播地址

// 0xFFFC: Routers and Coordinators
// 0xFFFD: Everyone with RxOnWhenIdle == TRUE
// 0xFFFE: Reserved (legacy: used for 'invalid address')
All device// = 0xFFFF

2. ZR 下级节点是 休眠设备, 那么 ZR 能为下级节点 缓存 多少条 广播信息?

每个设备最多3条,最多12条

3 如果ZC 断电了, 此时ZR 下级 的ZED 如果发送消息 到ZC ,  ZR 是否会为 ZED  缓存消息? 还是 直接发出去?

直接发出去了,路由的目的为了转发

“另外你可以用其他的数据包做心跳包”

比方说IEEE Request之类的

你的意思 是自定义  一个私有的吗?   在现有基础上 (不改动ZC 端程序) , 有没有其他更好的   数据包?

谢谢!

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

网站地图

Top