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

协调器的热备份

需求:假定一个zigbee系统,由于稳定性的要求。当出现主协调器故障时,备用协调器马上能替代主协调工作,而不影响系统的控制。即冗余要求。

问题:ZIGBEE上要如何实现。

VV:

你把原先协调器NV里面的数据读出来写到新的Coordinator里面就可以了

lihua jia:

回复 VV:

请教VV:

1、是否将zgItemTable中涉及的ID从NV读出来再写入新的协调器就可做备份协调器了?

2、直接由协调器添加入网的最大路由器数目是由什么量决定的?协调器中记录的设备信息会越来越多,有一些已经离开网络或者坏掉的设备依然会占用空间。如果网络中有某个设备坏掉了,想将协调器中对其记录的信息删除,以便将空间留给新加入的设备,应该怎么做?具体该擦除哪些空间呢?调用什么函数?

图1是协调器刚上电,还没有设备加入网络图2是IEEE地址为00 12 4B 00 01 4F C3 00的路由器加入网络图3是IEEE地址为00 12 4B 00 01 4F C0 8D的路由器加入网络,如方框标注由此可以看出入网的设备信息是在XDATA地址为0x105E的位置开始记录,一直到0x117B的存储空间都是空的,不知道是否这一部分区域都是用来存储入网信息的?NV各个地址都存了哪些信息?有相关资料推荐吗?

图3

图2

lihua jia:

哪位高手给解答一下啊

VV:

回复 lihua jia:

对于子设备的最大数是有

// Maximum number in tables#if !defined( NWK_MAX_DEVICE_LIST ) #define NWK_MAX_DEVICE_LIST 20 // Maximum number of devices in the // Assoc/Device list.#endif

节点的信息在

AssociatedDevList[x]中

如果是Z-Stack Home 1.2.0以后的协议栈的话,对end device有child aging功能,当End device长时间没有发送data request以后,父设备会去做删除操作。

lihua jia:

回复 VV:

如果设备直接从协调器入网,协调器也会有NWK_MAX_DEVICE_LIST的数量限制吗?

协调器设置了NV_RESTORE,设备掉电之后这些信息应该仍然在NV中存储吧,该怎么从协调器中删除 那些故障的设备信息?

VV:

回复 lihua jia:

协调器也会有限制的

不要直接去操作NV里面的东西,会有相关的函数删除子设备信息,在函数里面自动会去NV删除东西的。

/* * Remove a device from the list. Uses the extended address. */extern byte AssocRemove( byte *extAddr );

YINGQI li:

回复 VV:

关于你提出拷贝原先的协调NV内容。

目的: 当前主要的是想复制终端的设备信息,让备用协调器的AssociatedDevList中能和原先协调器的一样。(绑定表之类的暂时不考虑)

测试方式:对比了ZComDef.h文件的条目,利用osal_nv_read从主协调器拷贝出ZCD_NV_ADDRMGR与ZCD_NV_DEVICE_LIST信息,再用osal_nv_write写入备用协调器。但是测试发现备用协调器AssociatedDevLis还是空的。

问1:我测试的方式是否正确?

问2:具体需要拷贝哪些NV内容才能实现备份?

问3:是osal_nv_read函数还是用HalFlashRead去实现拷贝复制?

赞(0)
未经允许不得转载:TI中文支持网 » 协调器的热备份
分享到: 更多 (0)