Other Parts Discussed in Thread: CC2652P7, CC1354P10, SYSCONFIG
器件型号: CC2652P7
主题中讨论的其他器件: CC1354P10、 SysConfig
我将使用 iperf3 在两台配备 CC2652P7 芯片的路由器上生成流量。 在测试期间、otbr-agent 进程意外退出。 即使手动重新启动 otbr-agent 也不起作用;硬件重新启动是唯一的解决方案。 我可以使用哪些故障排除方法来确定根本原因?
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.
尊敬的 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 文件:
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#add_custom_command(
# OUTPUT
# ${SYSCONFIG_OUTPUT_C}
# ${SYSCONFIG_OUTPUT_OTHER}
# COMMAND
# ${syscfg_cmd}
# DEPENDS
# ${sysconfig_file}
# VERBATIM
#)// 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
};此致、
Ryan
我很高兴听到情况有所改善、但遗憾的是、我没有更多的专业知识来就其他变化提供建议。 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