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.

[参考译文] SIMPLELINK-CC13X2-26X2-SDK:执行 interPAN 命令时 ZNP 崩溃

Guru**** 2928420 points

Other Parts Discussed in Thread: SIMPLELINK-CC13XX-CC26XX-SDK, CC2530, CC2531, Z-STACK, CC2652R

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1053970/simplelink-cc13x2-26x2-sdk-znp-crashing-when-executing-interpan-commands

器件型号:SIMPLELINK-CC13X2-26X2-SDK
主题中讨论的其他器件:SIMPLELINK-CC13XX-CC26XX-SDKCC2530CC2531Z-STACKCC2652R

执行某些 interPAN 命令后、基于 SIMPLELINK-CC13XX-CC26XX-SDK_5.30.00.56的 ZNP 固件会崩溃。 之后,国家警察不再 作出反应,必须重新重新加药,才能再次工作。 旧 SDK 也会出现这种情况(我已经使用  4.30、 4.40和5.10进行了测试)。

相同的命令序列不会使 CC2531和 CC2530的固件崩溃(Z-stack home 1.2)、因此我认为这是 simplelink SDK 中的一个错误。

包含执行 z-stack 命令的 Zigbee2MQTT 日志:

Zigbee2MQTT:debug 2021-11-15 18:31:21: Received MQTT message on 'zigbee2mqtt/bridge/request/touchlink/scan' with data '{"transaction":"39mfd-2","value":true}'
Zigbee2MQTT:info  2021-11-15 18:31:21: Start Touchlink scan
  zigbee-herdsman:controller:touchlink Set InterPAN channel to '11' +15s
  zigbee-herdsman:adapter:zStack:znp:SREQ --> AF - interPanCtl - {"cmd":1,"data":[11]} +15s
  zigbee-herdsman:adapter:zStack:unpi:writer --> frame [254,2,36,16,1,11,60] +15s
  zigbee-herdsman:adapter:zStack:unpi:parser <-- [254,1,100,16,0,117] +15s
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [254,1,100,16,0,117] +0ms
  zigbee-herdsman:adapter:zStack:unpi:parser --> parsed 1 - 3 - 4 - 16 - [0] - 117 +0ms
  zigbee-herdsman:adapter:zStack:znp:SRSP <-- AF - interPanCtl - {"status":0} +15s
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [] +1ms
  zigbee-herdsman:adapter:zStack:znp:SREQ --> AF - dataRequestExt - {"dstaddrmode":2,"dstaddr":"0x000000000000ffff","destendpoint":254,"dstpanid":65535,"srcendpoint":12,"clusterid":4096,"transid":18,"options":0,"radius":30,"len":9,"data":{"type":"Buffer","data":[17,0,0,163,155,172,203,4,18]}} +4ms
  zigbee-herdsman:adapter:zStack:unpi:writer --> frame [254,29,36,2,2,255,255,0,0,0,0,0,0,254,255,255,12,0,16,18,0,30,9,0,17,0,0,163,155,172,203,4,18,134] +4ms
  zigbee-herdsman:adapter:zStack:unpi:parser <-- [254,1,100,2,0,103] +6ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [254,1,100,2,0,103] +0ms
  zigbee-herdsman:adapter:zStack:unpi:parser --> parsed 1 - 3 - 4 - 2 - [0] - 103 +0ms
  zigbee-herdsman:adapter:zStack:znp:SRSP <-- AF - dataRequestExt - {"status":0} +7ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [] +0ms
  zigbee-herdsman:adapter:zStack:unpi:parser <-- [254,3,68,128,0,12,18,217] +3ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [254,3,68,128,0,12,18,217] +0ms
  zigbee-herdsman:adapter:zStack:unpi:parser --> parsed 3 - 2 - 4 - 128 - [0,12,18] - 217 +0ms
  zigbee-herdsman:adapter:zStack:znp:AREQ <-- AF - dataConfirm - {"status":0,"endpoint":12,"transid":18} +16s
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [] +1ms
  zigbee-herdsman:controller:touchlink Scan request failed or was not answered: 'Error: Timeout - null - 254 - null - 4096 - 1 after 500ms' +512ms
  zigbee-herdsman:controller:touchlink Set InterPAN channel to '15' +0ms
  zigbee-herdsman:adapter:zStack:znp:SREQ --> AF - interPanCtl - {"cmd":1,"data":[15]} +507ms
  zigbee-herdsman:adapter:zStack:unpi:writer --> frame [254,2,36,16,1,15,56] +508ms
  zigbee-herdsman:adapter:zStack:unpi:parser <-- [254,1,100,16,0,117] +501ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [254,1,100,16,0,117] +0ms
  zigbee-herdsman:adapter:zStack:unpi:parser --> parsed 1 - 3 - 4 - 16 - [0] - 117 +0ms
  zigbee-herdsman:adapter:zStack:znp:SRSP <-- AF - interPanCtl - {"status":0} +506ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [] +1ms
  zigbee-herdsman:adapter:zStack:znp:SREQ --> AF - dataRequestExt - {"dstaddrmode":2,"dstaddr":"0x000000000000ffff","destendpoint":254,"dstpanid":65535,"srcendpoint":12,"clusterid":4096,"transid":19,"options":0,"radius":30,"len":9,"data":{"type":"Buffer","data":[17,0,0,38,82,31,81,4,18]}} +5ms
  zigbee-herdsman:adapter:zStack:unpi:writer --> frame [254,29,36,2,2,255,255,0,0,0,0,0,0,254,255,255,12,0,16,19,0,30,9,0,17,0,0,38,82,31,81,4,18,226] +4ms
  zigbee-herdsman:adapter:zStack:unpi:parser <-- [254,1,100,2,0,103] +6ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [254,1,100,2,0,103] +0ms
  zigbee-herdsman:adapter:zStack:unpi:parser --> parsed 1 - 3 - 4 - 2 - [0] - 103 +0ms
  zigbee-herdsman:adapter:zStack:znp:SRSP <-- AF - dataRequestExt - {"status":0} +6ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [] +0ms
  zigbee-herdsman:adapter:zStack:unpi:parser <-- [254,3,68,128,0,12,19,216] +4ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [254,3,68,128,0,12,19,216] +0ms
  zigbee-herdsman:adapter:zStack:unpi:parser --> parsed 3 - 2 - 4 - 128 - [0,12,19] - 216 +0ms
  zigbee-herdsman:adapter:zStack:znp:AREQ <-- AF - dataConfirm - {"status":0,"endpoint":12,"transid":19} +513ms
  zigbee-herdsman:adapter:zStack:unpi:parser --- parseNext [] +0ms
  zigbee-herdsman:controller:touchlink Scan request failed or was not answered: 'Error: Timeout - null - 254 - null - 4096 - 1 after 500ms' +512ms
  zigbee-herdsman:controller:touchlink Set InterPAN channel to '20' +1ms
  zigbee-herdsman:adapter:zStack:znp:SREQ --> AF - interPanCtl - {"cmd":1,"data":[20]} +508ms
  zigbee-herdsman:adapter:zStack:unpi:writer --> frame [254,2,36,16,1,20,35] +508ms
  zigbee-herdsman:controller:touchlink Restore InterPAN channel +6s
  zigbee-herdsman:adapter:zStack:znp:SREQ --> AF - interPanCtl - {"cmd":0,"data":[]} +6s
  zigbee-herdsman:adapter:zStack:unpi:writer --> frame [254,1,36,16,0,53] +6s
Zigbee2MQTT:error 2021-11-15 18:31:34: Request 'zigbee2mqtt/bridge/request/touchlink/scan' failed with error: 'SRSP - AF - interPanCtl after 6000ms'
Zigbee2MQTT:debug 2021-11-15 18:31:34: Error: SRSP - AF - interPanCtl after 6000ms
    at Timeout._onTimeout (/Users/koenkk/Git/zigbee2mqtt/node_modules/zigbee-herdsman/src/utils/waitress.ts:64:35)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7)
Zigbee2MQTT:info  2021-11-15 18:31:34: MQTT publish: topic 'zigbee2mqtt/bridge/response/touchlink/scan', payload '{"data":{},"error":"SRSP - AF - interPanCtl after 6000ms","status":"error","transaction":"39mfd-2"}'

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Koen:

    请进一步说明重现此问题的 InterPAN 命令的性质。  例如、是否有 重现问题的特定命令、数据、数字或间隔、以及是否始终保证最终失败?  是否能够进一步调试 ZNP 以在堆崩溃后监视堆或检查调用堆栈?

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan、

    我有一个 CC2652R Launchpad、可用于调试。 我能够从 CCS 中以调试的方式运行 SDK、而 CCS 已连接到该 SDK、我可以启动 Zigbee2MQTT 并重现问题。 在哪里可以找到所需的调试信息?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Koen:

    感谢您的设置。  请添加 HEAPMGR_MEASICIENIESS_MEASICIESS_AND 添加 "Z-Stack 用户指南"的"应用概述"部分中列出的表达式。  失败后暂停器件并记录这些值、同时显示完整的调试窗口以及代码停止的位置。  如果 您愿意使用 ROV、可以参阅调试模块、它也可能有助于禁用优化。  

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我希望这包含必要的信息:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Koen、我将告诉您是否需要从您的端到您的端再获取任何数据

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Koen:

    软件开发团队最近应用了一个修复程序、该修复程序可能会帮助(尽管很可能无法解决)您发现的问题、请遵循 此 E2E 帖子中提供的解决方法。  此外, 此问题是否仅在执行 TL 扫描时发生,还是  在正常网络操作期间也会发生?

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我应用了修复程序、但它未解决问题。 这仅在执行 TL 扫描时发生。 我不认为这个问题是由内存泄漏引起的、因为它只发生在几个命令之后(MEM 堆被设置为48kB)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Koen 的反馈。  我同意此问题不是由内存泄漏引起的。  我已经能够使用 Z-Tool 和默认 ZNP 复制行为。  我将继续向软件开发团队调查此问题。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Koen:

    软件开发团队发现,在执行 StudioAPS_SetInterPanChannel()通道更改时,Zigbee 网络任务会将其状态设置为空闲。 在此状态下、不会通过无线方式发送数据包、而是排队。  第一个通道更改工作正常、响应被发回。 但是,后续请求是在网络任务仍处于空闲状态时发出的,因此,不会发出挂起的数据包。  这就是为什么我们 看到同一个数据包在调试会话的调用堆栈内排队/去排队的原因。  这将在 v6.10 SIMPLELINK-CC13XX-CC26XX-SDK 中解决,但同时也可以添加  NWK_setStateIdle (false);在  stubAP_SetNewChannel 函数内的 stubAPs.c 中,以解决该问题。

        ZMacSetReq( ZMacRxOnIdle, &rxOnIdle );
    
        channelChangeInProgress = FALSE;
        nwk_setStateIdle( FALSE );      //LINE ADDED
    
        return ( ZSuccess );
      }

    我在我的系统上验证了此解决方案、但请测试它、并告诉我它是否也适用于您。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉我的回复太晚了、我确实解决了这个问题!