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

协调器的热备份

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

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

问题:ZIGBEE上要如何实现。

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

请教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

哪位高手给解答一下啊

对于子设备的最大数是有

// 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以后,父设备会去做删除操作。

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

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

协调器也会有限制的

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

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

关于你提出拷贝原先的协调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去实现拷贝复制?

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

网站地图

Top