微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 协调器不发送route request的问题

协调器不发送route request的问题

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

我用的CC2538+zmesh协议栈

我设置协调器工作在many to one模式,CONCENTRATOR_ENABLE设置为true

CONCENTRATOR_DISCOVERY_TIME = 3;

用sniffer抓包发现,协调器只发送link status,不发送route request,是怎么回事

进一步发现,如果协议栈中定义了

-DNV_INIT
-DNV_RESTORE

则协调器不会发送route request,如果没有定义,则会发送route request

我用的Z-Stack Mesh 1.0.0,代码没有任何修改,只是在f8wcoord.cfg中增加如下:

==========================================================================

//保存网络状态
-DNV_INIT
-DNV_RESTORE

-DCONCENTRATOR_ENABLE=TRUE
-DCONCENTRATOR_DISCOVERY_TIME=3

//Link Status 网络维护包,邻居表
-DNWK_LINK_STATUS_PERIOD=3

又进一步发现,在ZDApp.c的479行:

// At start up, do one MTO route discovery if the device is a concentrator
if ( zgConcentratorEnable == TRUE )
{
// Start next event
osal_start_timerEx( NWK_TaskID, NWK_MTO_RTG_REQ_EVT, 100 );
}

当定义了NV_INIT和NV_RESTORE,执行到479行时zgConcentratorEnable 值为0,怀疑协议栈在恢复NV变量的时候有bug。。

原来是IAR的问题,IAR download and debug的时候不擦除flash吗,

@chao sun3

CONCENTRATOR_DISCOVERY_TIME = 3的含义,协调器每隔3秒会发一次MTO Router Request,而且是广播数据。

这样的频率太高了,一方面是网络内大量的广播数据,另外是每发一次MTO Router Request会让下面的节点重新选择一次Coordinator的路径,没必要如此频繁的选择到Coordinator的路径。一般建议把改变量设置为120s发一次

-DNWK_LINK_STATUS_PERIOD=3是用来维护邻居之间的链路状况的,一般默认为为15s一次,3s种太短了。

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

网站地图

Top