微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > Zstack3.0 无法组网, End-device无法收到 APSME_RequestKeyReq 请求的响应

Zstack3.0 无法组网, End-device无法收到 APSME_RequestKeyReq 请求的响应

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

使用ZStack 3.0.1 代码,在End-Device组网过程后期,会依次请求 TC_STACK_VERSION, TC_LINK_KEY

跟踪结果反映 TC_LINK_KEY请求超时(5sec),抓包信息怎么看Coord有没有反馈?

1. 编译开关:ZIGBEEPRO / SECURE=1 / ZG_SECURE_DYNAMIC=0 / TC_LINKKEY_JOIN / REFLECTOR /

ZDAPP_CONFIG_PAN_ID=0xFFFF

2. 串口调试信息

 bdb_event_loop( events=4)
 bdb_event_loop( events=8000)
ZDApp_event_loop : evt = 1
        ZDO_NETWORK_INIT
 ZDApp_event_loop : evt = 10
        ZDO_STATE_CHANGE_EVT -> 2    -----===>  DEV_NWK_DISC
ZDApp_event_loop : evt = 8000
        SYS_EVENT_MSG->evt = 1       -------->  ZDO_NWK_DISC_CNF
ZDApp_event_loop : evt = 10
        ZDO_STATE_CHANGE_EVT -> 3    -----===>  DEV_NWK_JOINING
ZDO_JoinConfirmCB : nwkStatus =  0
 ZDApp_event_loop : evt = 8000
        SYS_EVENT_MSG->evt = 2       -------->  ZDO_NWK_JOIN_IND
ZDApp_ProcessNetworkJoin : DEV_END_DEVICE_UNAUTH   
 ZDApp_event_loop : evt = 10
        ZDO_STATE_CHANGE_EVT -> 5    -----===>  DEV_END_DEVICE_UNAUTH
ZDApp_event_loop : evt = 8000
        SYS_EVENT_MSG->evt = 4       -------->  ZDO_TRANSPORT_KEY_IND
ZDApp_event_loop : evt = 80
ZDApp_event_loop : evt = 8210
        SYS_EVENT_MSG->evt = FD     -------->  AF_DATA_CONFIRM_CMD
ZDApp_event_loop : evt = 210
        ZDO_STATE_CHANGE_EVT -> 6   -----===>  DEV_END_DEVICE    
ZDApp_event_loop : evt = 200
bdb_event_loop( events=4)
 bdb_event_loop( events=8000) bdb_ProcessOSALMsg : ...TC_LINK_KEY_EXCHANGE : msgPtr->hdr.status =0,  TC_STACK_VERSION(1)
ZDApp_event_loop : evt = 8000
        SYS_EVENT_MSG->evt = FD     -------->  AF_DATA_CONFIRM_CMD
ZDApp_event_loop : evt = 8000
        SYS_EVENT_MSG->evt = 1A     -------->  AF_INCOMING_MSG_CMD
ZDP_IncomingData : handled=1
 bdb_event_loop( events=8000) bdb_ProcessOSALMsg : ...TC_LINK_KEY_EXCHANGE : msgPtr->hdr.status =0,  TC_LINK_KEY(2)
 bdb_event_loop( events=1000) bdb_processTimeout : bdbCommissioningState=1
 bdb_event_loop( events=8000) bdb_ProcessOSALMsg : ...TC_LINK_KEY_EXCHANGE : msgPtr->hdr.status =1,  TC_LINK_KEY(2)
 bdb_event_loop( events=1000) bdb_processTimeout : bdbCommissioningState=1
 bdb_event_loop( events=8000) bdb_ProcessOSALMsg : ...TC_LINK_KEY_EXCHANGE : msgPtr->hdr.status =1,  TC_LINK_KEY(2)
 bdb_event_loop( events=1000) bdb_processTimeout : bdbCommissioningState=1
 bdb_event_loop( events=8000) bdb_ProcessOSALMsg : ...TC_LINK_KEY_EXCHANGE : msgPtr->hdr.status =1,  TC_LINK_KEY(2)

3.  抓包结果,具体见附件zstack-3.0.1-3-cannot-join-full.psd

EndDevice 调用 APSME_RequestKeyReq() 后,Coord就重启,不能确定是软重启还是硬重启。

 然后 EndDevice自然无法获得来自Coord的响应。

神啊,救救我。

单步调试结果证明 EndDevice 调用 bdb_requestTCLinkKey()  ->APSME_RequestKeyReq()   不会造成 Coord重启

 造成Coord重启的是EndDevice在此后的某个操作。

协调器处理Request Key命令的地方在 ZDSecMgrRequestKeyInd函数里面,

ZDSecMgrTclkReq

可以断点调试下,是因为什么原因复位的。

另外你可以在main函数刚进入的地方,都一个reset 寄存器的值,可以知道前一次复位的原因是什么。

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

网站地图

Top