协调器死机问题
协调器在什么情况下会死机?现在协调器会死机。(串口没有反应,Packet Sniffer抓没有广播。断电重启后恢复正常)。问题出现的没有规律性,多数情况出现在终端退组网时候,退网方式都是终端使用
osal_memset( &leaveReq, 0, sizeof( NLME_LeaveReq_t ) );
leaveReq.rejoin = FALSE;
leaveReq.extAddr = NULL;
if ( NLME_LeaveReq( &leaveReq ) != ZSuccess )
{
ZDApp_LeaveReset( FALSE );
}
退网。没有操作协调器。
抓到了再运行过程中死机的数据,看时间=7251694,协调器发出最后一帧广播后就没有发出了
抓到发送数据后死机。看时间=299606,协调器发出最后一帧广播就没有发出了
虽然协调器没有广播,但是终端的DataRequest协调器回复了的
如果收发数据读没有,硬件中断可以响应吗?可以检查你们的程序中是否有内存泄漏,可以打开OSALMEM_PROFILER测试下。
AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_PERIODIC_CLUSTERID,
len,
str+1,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// HalUARTWrite(0,"error\n",5);
// Error occurred in request to send.
}
这个函数运行错误会不会出现这个情况
如何打开OSALMEM_PROFILER,
真是奇葩了,终端在低功耗串口唤醒后使用
NLME_SetPollRate(100);//请求父节点数据
进入中断前使用
NLME_SetPollRate(3000);//请求父节点数据
这两个函数用的太频繁了就让协调器死机了。终端引起协调器死机,太奇葩了。
VV老师虽然现在没有死机了,但是我还是想弄明白为啥终端可以将协调器弄死机