TI中文支持网
TI专业的中文技术问题搜集分享网站

zigbee 中继失效

大家好!

         环境如下:

         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 LEDShowHalLedSet ( HAL_LED_2, HAL_LED_MODE_OFF);if(!BasicReset)HalLedBlink ( HAL_LED_1, 0,LOST_NETWROK_FLASH, LOST_NETWROK_CYCLE );#endif}else{#ifdef LEDShowHalLedSet ( 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);//8secondreturn ( events ^ NETLINK_CHECK_EVT );} 

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

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

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

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

    

     抓包的log 如下:

       

    

VV:

有点怀疑是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 动态分配,但是没有释放的?

MarS:

回复 VV:

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

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

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

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

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

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

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

谢谢!

VV:

回复 MarS:

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 端程序) , 有没有其他更好的   数据包?

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » zigbee 中继失效
分享到: 更多 (0)