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.

[参考译文] CC2652P7:当 otbr-agent 在流量生成过程中退出时、如何对问题进行故障排除?

Guru**** 2763595 points

Other Parts Discussed in Thread: CC2652P7, CC1354P10, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1602096/cc2652p7-when-the-otbr-agent-exits-during-traffic-generation-how-to-troubleshoot-the-issue

器件型号: CC2652P7
主题中讨论的其他器件: CC1354P10SysConfig

我将使用 iperf3 在两台配备 CC2652P7 芯片的路由器上生成流量。 在测试期间、otbr-agent 进程意外退出。 即使手动重新启动 otbr-agent 也不起作用;硬件重新启动是唯一的解决方案。 我可以使用哪些故障排除方法来确定根本原因?

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

    尊敬的 Zhimin:

    请 提供 otbr-agent 的日志、如以下示例所示

    https://groups.google.com/g/openthread-users/c/wqR1URcAUxM?pli=1 

    tail -f /var/log/syslog | grep otbr > otbr.txt

    https://github.com/openthread/ot-br-posix/issues/742 

    cat /var/log/syslog | grep otbr-agent

    如果您提供了 ot-br-POSIX 和 ot-ti 存储库分支 ID、也会有所帮助。  如果这是一个 ot-br-POSIX 问题并且与 CC2652P7 RCP 无关、我通过超链接添加的空格也可以发布您的问题。  否则、您可以 在 CCS 调试器中运行 RCP 映像 来确定器件是否处于未定义状态。

    此致、
    Ryan

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

    e2e.ti.com/.../otbr_2D00_agent_2D00_log.txthello、 我的器件中没有/var/log/syslog 文件。 这是 otbr-agent 退出前的打印日志。 您能告诉我们可以从其中收集到哪些信息吗?

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

    这足以表明发生“无线电 TX 超时“、然后是“检测到 RCP 故障“、而“软件复位 RCP“不会从中恢复。  这似乎是 RCP 固件崩溃的一个问题。

    如果您提供了 ot-br-POSIX 和 ot-ti 存储库分支 ID、也会有所帮助。
    您可以 在 CCS 调试器中运行 RCP 映像 来确定器件是否处于未定义状态。

    此外、如何快速可靠地复制行为?

    此致、
    Ryan

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

    我使用 CCS (Code Composer Studio) 和 XDS110 调试探针来调试 Thread 芯片。 在线程流量测试期间出现问题后、我在 CCS 中使用了暂停函数、并且线程程序在以下调用栈位置停止。 在执行复位命令时、线程芯片似乎卡住了。 您能否解释一下为什么在线程流量测试期间发出重置命令? 此重置命令对应于 otbr-agent 的哪个部分?

    CC1354P10.ccxml [Code Composer Studio — 器件调试]
    Texas Instruments XDS110 USB 调试 Probe_0/Cortex_M4_0(已暂停)
    NOROM_RFCDoorbellSendTo()、位于 RFC.c:104 0x0000D30C
    RFCC26X2_multipad.c:4041 0x0000B746 处的 RF_executeDirectImmediateCmd ()
    RFCC26X2_multipad.c:4032 0x0000B740 处的 RF_executeDirectImmediateCmd ()
    RFCC26X2_multipad.c:4094 0x0000B736 处的 RF_runDirectImmediateCmd ()
    rfCoreModifyRxAutoPend ()[Y:\0_workspace\6_CC2652\1_git_1204\TI-OT-CC13XX_CC26XX-RCP\build\bin\ot-rcp.out]、位于 0x00003E3E
    otPlatRadioEnableSrcMatch()、位于 radio.c:1760 0x00003E18
    OT::Radio::EnableSrcMatch (bool)[Y:\0_workspace\6_CC2652\1_git_1204\TI-OT-CC13XX_CC26XX-RCP\build\bin\ot-rcp.out]、位于 0x000072F6
    OT::Radio::Init() at radio.cpp:47 0x000072F0
    ot::Instance::ResetRadioStack () at instance.cpp:319 0x0000524E
    OT:::NCP::NcpBase::CommandHandler_reset (unsigned char)()、位于 NCP_BASE.cpp:1204 0x000012BC
    OT:::NCP::NcpBase::CommandHandler_reset (unsigned char)()、位于 NCP_BASE.cpp:1187 0x000012B6
    OT:::NCP::NcpBase::HandleCommand (unsigned char)()、位于 NCP_BASE.cpp:894 0x0000196C
    OT::NCP::NcpBase::HandleReceive (unsigned char const*、unsigned short)()、位于 NCP_BASE.cpp:360 0x000019DE
    OT:::NCP::NcpHdlc::HandleFrame (otError)() at multi_frame_buffer.HPP:146 0x00000C32
    OT::HDLC:Decoder::Decode (unsigned char const*、unsigned short)()(位于 HDLC.CPP:261 0x00011CF8)
    platformUartProcess() 位于 UART.c:189 0x00004AC0
    otSysProcessDrivers() 位于 system.c:256 0x0000498C
    app_main () 位于 main.c:102 0x00000220

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

    ot-Br-POSIX Linux 解决方案在器件无响应(RCP 超时)后调用 RCP 复位 、但鉴于 MCU 似乎卡在 NOROM_RFCDoorbellSendto 内、这种做法无效。

    TI 过去观察到了类似的行为、因此我要求您 尝试对 ti_radio_config.c pOverrides 进行以下更改。  此文件由 SysConfig 自动生成、因此  在重新构建之前需要执行额外的步骤来使用自定义的 ti_parace_config.c 文件:

    1. 通过/script/build 构建目标工程
    2. 打开 ot-ti/ti/ src CMakeLists.txt
      1. 注释掉  ti_devices_config.h  添加到工程  结构中列出的代码库
        1. if(TI_SIMPLELINK_KERNEL STREQUAL "freertos")
              set(SYSCONFIG_OUTPUT_C
                  ${CMAKE_CURRENT_BINARY_DIR}/syscfg/ti_devices_config.c
          #        ${CMAKE_CURRENT_BINARY_DIR}/syscfg/ti_devices_config.h
                  ${CMAKE_CURRENT_BINARY_DIR}/syscfg/ti_drivers_config.c
                  ${CMAKE_CURRENT_BINARY_DIR}/syscfg/ti_drivers_config.h

      2. 注释掉  SysConfig 自定义命令  如下所示:
        1. #add_custom_command(
          #    OUTPUT
          #        ${SYSCONFIG_OUTPUT_C}
          #        ${SYSCONFIG_OUTPUT_OTHER}
          #    COMMAND
          #        ${syscfg_cmd}
          #    DEPENDS
          #        ${sysconfig_file} 
          #    VERBATIM
          #)

    3. 打开  TI_RADIO_CONFIG.c  在工程的构建目录中:  ot-ti/build/syscfg/ti_radio_config.c src
      1. 在 (uint32_t) 0xFFFFFFFF 的最后一个元素之前、将以下覆盖项附加到 pOverrides[]数组
        1. // Overrides for CMD_RADIO_SETUP_PA
          uint32_t pOverrides[] =
          {
              // override_ieee_802_15_4_10_dbm.json
              // Rx: Set LNA bias current offset to +15 to saturate trim to max (default: 0)
              (uint32_t)0x000F8883,
              // Set VCTRIM to 0 for 20 dBm PA
              ADI_REG_OVERRIDE(1,26,0x00),
              // override_ieee_coex.json
              // CoEx: set the radio IOMUX to enable coex signals
              HW_REG_OVERRIDE(0x1110,0xCE30),
              // CoEx: Enable CoEx
              (uint32_t)0x000188F3,
              // CoEx: Enable 32 bit write for the pointer
              (uint32_t)0xC0040371,
              // CoEx: Place the pointer to the configuration struct at byte index 220
              (uint32_t)&coexConfig,
              // START OF ADDED CONTENT
              // IEEE 802.15.4: Set pilot tone length to 35 us
              HW_REG_OVERRIDE(0x5320,0x0690),
              // IEEE 802.15.4: Set pilot tone length to 35 us
              HW_REG_OVERRIDE(0x6024,0x5B20),
              // IEEE 802.15.4: Enable fast settling during pilot tone
              (uint32_t)0x10108413,
              // IEEE 802.15.4: Compensate for modified pilot tone length
              (uint32_t)0x034902A3,
              // END OF ADDED CONTENT
              (uint32_t)0xFFFFFFFF
          };

    4. 通过/script/build 构建目标工程

    此致、
    Ryan

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

    修改 pOverrides 后、线程流量测试期间的不响应频率确实已降低。 在修改之前、设备将在 3 到 5 分钟的流量测试后无响应、而在修改之后、设备现在可以在出现不响应之前运行 20 分钟以上。 我们能否进一步修改导频音长度参数? 例如、如果我们将导频音长度参数设置为 50us、那么相应的寄存器值是多少?

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

    我很高兴听到情况有所改善、但遗憾的是、我没有更多的专业知识来就其他变化提供建议。  Thread 流量测试需要多长时间、这是否是任何协议认证的要求?  占空比或减少数据包间隔是否是解决此问题的有效权变措施?  是否在设计中实现 WiFi 共存?  您是否能够使用 LAUNCHXL-CC2652P7 EVM 复制此行为?

    我意识到我之前的回答没有在 pOverrides 末尾添加“(uint32_t) 0x00000263“、您需要尝试该方法。

    // Overrides for CMD_RADIO_SETUP_PA
    uint32_t pOverrides[] =
    {
        // override_ieee_802_15_4_10_dbm.json
        // Rx: Set LNA bias current offset to +15 to saturate trim to max (default: 0)
        (uint32_t)0x000F8883,
        // Set VCTRIM to 0 for 20 dBm PA
        ADI_REG_OVERRIDE(1,26,0x00),
        // override_ieee_coex.json
        // CoEx: set the radio IOMUX to enable coex signals
        HW_REG_OVERRIDE(0x1110,0xCE30),
        // CoEx: Enable CoEx
        (uint32_t)0x000188F3,
        // CoEx: Enable 32 bit write for the pointer
        (uint32_t)0xC0040371,
        // CoEx: Place the pointer to the configuration struct at byte index 220
        (uint32_t)&coexConfig,
        // START OF ADDED CONTENT
        // IEEE 802.15.4: Set pilot tone length to 35 us
        HW_REG_OVERRIDE(0x5320,0x0690),
        // IEEE 802.15.4: Set pilot tone length to 35 us
        HW_REG_OVERRIDE(0x6024,0x5B20),
        // IEEE 802.15.4: Enable fast settling during pilot tone
        (uint32_t)0x10108413,
        // IEEE 802.15.4: Compensate for modified pilot tone length
        (uint32_t)0x034902A3,
        (uint32_t)0x00000263,
        // END OF ADDED CONTENT
        (uint32_t)0xFFFFFFFF
    };

    您也可以考虑尝试使用这个更新后的库文件夹 e2e.ti.com/.../conan_5F00_package-_2800_1_2900_.tgz

    请下载.tgz 文件、对其进行解压缩、然后 仅将源文件夹(即不是.metadata 或 docs 文件夹)与现有 ot-ti/third_party/ti_simplelink_sdk/repo/source 目录合并(即仅替换重复的文件,不要删除未更新的原始文件)。  您需要从  ot-ti/third_party/ti_simplelink_sdk/repo 和 ot-ti 目录中删除构建文件夹、然后在将新映像加载到器件之前重新构建 RCP 映像。

    请告诉我这些建议的任意组合是否有助于提高性能。

    此致、
    Ryan