使用协议栈 Z-Stack Home 1.2.2a.44539 中的 Z-Tool 进行 PanID 和 Channel 的修改始终不成功。
通过其中的 Util -> UTIL_SET_PANID 和 UTIL_SET_CHANNELS 进行 PanID 和 Channel 修改的,然后通过 UTIL_GET_NV_INFO 进行读取,发现修改没有修改成功。
是不是修改 PanID 和 Channel 需要进行其他什么操作?
Viki Shi:
需要开启MT_UTIL_FUNC,然后才能使用 UTIL_SET_PANID 和 UTIL_SET_CHANNELS指令,具体操作请参考Z-Stack Monitor and Test API.pdf
yong zhou3:
回复 Viki Shi:
肯定开启了的啊,不然Z-Tool 也不会有显示吧
YiKai Chen:
這兩個修改是寫入到ZCD_NV_PANID、ZCD_NV_CHANLIST這兩個nv id,但是UTIL_GET_NV_INFO 读取不會去讀ZCD_NV_PANID、ZCD_NV_CHANLIST這兩個id
yong zhou3:
回复 YiKai Chen:
/* Scan channel list (bit mask) */ if ( osal_nv_read( ZCD_NV_CHANLIST, 0, sizeof( tmp32 ), &tmp32 ) ) { stat |= 0x02; } else { pBuf[0] = BREAK_UINT32( tmp32, 3 ); pBuf[1] = BREAK_UINT32( tmp32, 2 ); pBuf[2] = BREAK_UINT32( tmp32, 1 ); pBuf[3] = BREAK_UINT32( tmp32, 0 ); } pBuf += sizeof( tmp32 );
/* ZigBee PanID */ if ( osal_nv_read( ZCD_NV_PANID, 0, sizeof( tmp16 ), &tmp16 ) ) { stat |= 0x04; } else { pBuf[0] = LO_UINT16( tmp16 ); pBuf[1] = HI_UINT16( tmp16 ); } pBuf += sizeof( tmp16 );
这个就是 MT_UTIL.c 中 MT_UtilGetNvInfo 读取 PanID 和 Channel 的部分,是读的 NV 中的啊
YiKai Chen:
回复 yong zhou3:
不好意思我早上看錯了,我調試了一下發現MT_UtilGetNvInfo是有正確读取 存下來的PanID 和 Channel 的,所以看起來是ZTool的bug
yong zhou3:
回复 YiKai Chen:
我也发现了这个问题,PanID 是对的,但是channel 感觉没有修改成功。请问对于修改PanID和channel 有没有好用一点的方法,主要用于协调器坏了用新协调器替换坏的
YiKai Chen:
回复 yong zhou3:
直接把下面的NV ID讀出來再寫到新的协调器
ZCD_NV_EXTADDR(0x0001)
ZCD_NV_BOOTCOUNTER(0x0002) – optional, If Diagnostics feature is necessary (new for HA spec.1.2)
ZCD_NV_NIB(0x0021)
ZCD_NV_EXTENDED_PAN_ID(0x002D)
ZCD_NV_NWK_ACTIVE_KEY_INFO(0x003A)
ZCD_NV_NWK_ALTERN_KEY_INFO(0x003B)
ZCD_NV_APS_USE_EXT_PANID(0x0047)
ZCD_NV_PRECFGKEY(0x0062)
ZCD_NV_TCLK_TABLE_START(0x0101)
yong zhou3:
回复 YiKai Chen:
同一套代码编译出来的也需要备份key吗
YiKai Chen:
回复 yong zhou3:
Z-Stack 3.0以上會用random產生network key,所以還是备份key吧
yong zhou3:
回复 YiKai Chen:
用的Z-Stack Home 1.2.2a.44539 ,或者您有没有一个例子之类的可以提供,弄了好久了都没有成功