This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

协调器死机问题

Other Parts Discussed in Thread: CC2538

协调器在什么情况下会死机?现在协调器会死机。(串口没有反应,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,协调器发出最后一帧广播后就没有发出了

    主机死机.psd
  • 抓到发送数据后死机。看时间=299606,协调器发出最后一帧广播就没有发出了

    法送数据后死机.psd
  • 虽然协调器没有广播,但是终端的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老师虽然现在没有死机了,但是我还是想弄明白为啥终端可以将协调器弄死机

  • 最近我们也遇到协调器死机的问题,最新的协议栈3.0.1,还是如此不稳定,连续不重启一直运行了两个月左右,就死机了,也发不出去数据,也收不到数据,最后重启之后就恢复了,为了安全起见,程序里面根本没用一次malloc分配内存,就是害怕内存泄漏
  • zigbee做了一年,一整 套系统 ,耗费金钱巨大,最后发现协调器是个大坑,真TM想找TI赔钱!!

    开始做的时候都没往这个风险上评估

    做出来才发现很容易死机,平均一秒钟处理不了1 个30字节的包,因为有些节点的数据会同时到达,形成几百字节,协调器直接死了,软件看门狗都不管用,如果zigbee想要稳定好用,得有个性能强,稳定一点的网关芯片,但zigbee的代码没法移植 到其它射频前端

  • 聽起來像是你應用程序串口的處理上有問題、我自己協調器也有使用ZNP/MT command、一直以來串口這邊是沒什麼大問題的
  • 我觉得你们可以考虑一下silicon labs的EM35x 系列MCU,上层网关代码移植起来应该不费劲,底层都是UART通讯的,zcl层放到网关上层来实现,MCU主要用来收发数据就可以了。

    或者可以考虑用NXP的方案也可以,小米为什么不用TI的,而是用NXP的方案也不无道理的
  • 私人覺得用EM35x不如直上EFR32、NXP也不錯,但是串口問題如果是應用程序造成的,不把原因找出來,用誰家的方案最後都會遇到問題
  • 使用的串口0,dma方式,hal uart dma.c ti自带的,那块代码逻辑复杂看不太懂,也没改它,而且和gprs交互时,都是收到可写信号‘‘>’’时才调用hal uart dma write(),明天我贴串口代码出来,麻烦大神们救命
  • 我又买了两块cc2538的板回来,准备跑下zstack3.0,看看它在压力测试下的表现。如果可以的话,就把网关用2538来实现,设备还是用2530