- 目前zigbee领域最稳定的方案仍然是TI的CC25xx方案,没有之一。
- 很多人可能遇到类似问题,CC2530/CC2538 ZNP工程,已经定义了宏TP2_LEGACY_ZC,用于协调器兼容旧zigbee设备(1.2协议)。复现步骤,网络内第一个ZR直接可以入网,第二个ZR通过中间ZR也可以入网,有Update Device之后ZC立马回复Tunnel Transport Key,可以入网,第三个设备通过中间ZR基本无法入网,中间ZR给ZC发送了Update Device,没有任何反应,导致入网失败,之后多次尝试,依旧失败。
- ubiqua抓包分析后,大概能看到如下现象



解决方案
- 经过对bdb.c和ZDSecMgr.c代码的分析,发现了bug,修改如下位置
/****************************************************************************
* @fn bdb_TCProcessJoiningList
*
* @brief Process the timer to handle the joining devices if the TC link
* key is mandatory for all devices
*
* @param none
*
* @return none
*/
void bdb_TCProcessJoiningList(void)
{
bdb_joiningDeviceList_t* tempJoiningDescNode;
if(bdb_joiningDeviceList)
{
tempJoiningDescNode = bdb_joiningDeviceList;
while(tempJoiningDescNode)
{
if(tempJoiningDescNode->NodeJoinTimeout)
{
tempJoiningDescNode->NodeJoinTimeout--;
}
i

本文详细分析了Zigbee网络中使用TI的CC2530/CC2538ZNP方案时遇到的设备入网稳定性问题。在特定情况下,第三个设备通过中间设备无法成功入网。通过ubiqua抓包分析,发现并定位到代码bug,主要涉及bdb_TCProcessJoiningList函数。解决方案是对代码进行修改,以确保在兼容zigbee1.2设备的同时,不影响3.0设备的安全性。修复后,设备入网问题得到解决。
最低0.47元/天 解锁文章
4749

被折叠的 条评论
为什么被折叠?



