zigbee网络安全配置如下:
-DSECURE=1
uint8 zgPreConfigKeys = FALSE; // TRUE;
uint8 zgUseDefaultTCLK = TRUE; // FALSE
预编译了SE_PROFILE
操作如下:
打开协调器允许加网,路由设备A加入协调器组建的网络中,然后关闭协调器允许加网且打开路由设备A允许加网,路由设备B以路由设备A为父节点加入当前zigbee网络,这些均没问题;此时让路由设备A离开当前网络重新加网,仅打开路由设备B允许加网,则路由设备A一直加不进当前网络,但打开协调器允许加网,则可以加进来。
我们通过打印信息跟踪也没发现什么问题,望TI大神帮忙看看,万分感谢!
附件是抓包文件。
huang zhou:
VV大神呢
VV:
检查AddrMgrNwkAddrLookup( extAddr, nwkAddr ),当A重新入网的时候,A信息是否在B的Addrmgr里面。
不需要使能SE_PROFILE也可以使能加密的。
huang zhou:
回复 VV:
不使能SE_PROFILE是可以加密,但存在同样的问题,我试过了。
当A重新入网的时候,A信息在B的Addrmgr里面。
VV:
回复 huang zhou:
我这边做下实验验证下。你的A设备退网就是直接把自己的网络参数清除,然后直接加网对吧
huang zhou:
回复 VV:
我试了两种退网、加网方法:
1.直接擦除flash page 121-126
2.使用如下函数:
static void dev_ClearNVtoRestartSystem(void)
{ uint8 startOption;
// 修改启动项,不自动启动
osal_nv_read(ZCD_NV_STARTUP_OPTION,0,sizeof(uint8),&startOption);
startOption &= ~ZCD_STARTOPT_AUTO_START;
osal_nv_write(ZCD_NV_STARTUP_OPTION,0,sizeof(uint8),&startOption);
// set to defalut state
zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE );
// Initializes Global device configuration items zgInitItems(TRUE);
// Initialize the Binding NV Item
BindInitNV();
// Write the defaults to NV
BindSetDefaultNV();
// Initialize the Nwk, Assoc device list, and binding NV Items
NLME_InitNV();
// Set defaults for the Nwk, Assoc device list, and binding NV Items
NLME_SetDefaultNV();
ZDSecMgrClearNVKeyValues();
// Restart system from absolute beginning
// Disables interrupts, forces WatchDog reset
SystemReset();
}
huang zhou:
回复 huang zhou:
这两种方法均试过,都是同样的问题
VV:
回复 huang zhou:
我在Z-Stack 2.5.1a上面做测试,按照你的步骤做的话,没有什么问题的。
看我附件的抓包文件
另外我使能了
TC_LINKKEY_JOINNV_RESTORE
huang zhou:
回复 VV:
你好,VV
你能在2.5.0协议栈上验证一下吗?
我刚刚在原始协议栈验证,也是同样的问题;是不是2.5.0协议栈存在这个问题呢,请帮忙验证一下,谢谢。
huang zhou:
回复 huang zhou:
VV,能不能帮忙在2.5.0协议栈上验证一下这个问题,谢谢!
我这边用新装的的2.5.0协议栈测试,也有同样的问题。