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.

[参考译文] CC1354P10:在同一 UART 上打印 ns_trace +温度日志时系统冻结 (CC1354/Wi-SUN)

Guru**** 2812305 points

Other Parts Discussed in Thread: CC1354P10, SYSBIOS, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1619456/cc1354p10-system-freezes-when-printing-ns_trace-temperature-logs-on-same-uart-cc1354-wi-sun

部件号: CC1354P10
主题中讨论的其他器件: SYSBIOSSysConfig

您好:

当尝试使用同一 UART 打印 ns_trace 消息和应用温度读数时、我看到系统冻结。

硬件/软件

MCU:CC1354P10

板:LaunchPad(板载 XDS110)

SDK:SimpleLink SDK 8.x

堆栈:Wi-SUN FAN

RTOS:TI-RTOS7/SYSBIOS

UART:UART2 @ 115200

UART 输出通过路由  板载 XDS110 虚拟 COM 端口 (USB CDC) 连接到 PC。

ns_trace 输出单独  正常
-在没有 UART 打印的情况下运行 的温度任务正常
-仅应用程序记录器 即可

温度值时自动重置  当 ns_trace 处于活动状态时 、系统将冻结。

示例:printf(“TEMP:%.1f C\r\n“,温度);

 

启用此功能后、系统会在引导后立即停止。

看到的最后一条消息:UART 就绪

 

那么:

  • 日程安排器被阻止
  • 检测信号 LED 停止
  • 未发生硬故障

//ns_trace UART 绑定

ns_trace_init();
ns_trace_set_uart_handle (gUartHandle);

//ns_trace put char 实现

void ns_put_char_blocking (const char ch)

If (g_traceUartHandle!= NULL)

size_t bytesWritten;
UART2_write (g_traceUartHandle、&ch、1、&bytesWritten);
}
}

观察结果

-UART 打开成功
-仅当两个输出都处于活动状态时才会冻结
-删除温度打印可解决问题
-将 ns_trace 重定向到 ITM、而不是 UART→系统正常运行

可疑原因

我怀疑冻结可能是由以下原因造成的:

  • 阻止来自多个上下文的 UART 写入
  • UART 驱动器内部锁定
  • 信标死锁或优先级反转
  • XDS110 VCOM 缓冲和阻塞行为
  • 逐字符跟踪输出

我的问题是:

在同一 UART 上使用 ns_trace 和应用程序打印是否安全?

阻止多个任务的 UART 写入是否会导致死锁?

TI UART 驱动程序是否在内部锁定、从而使嵌套写入不安全?

 XDS110 USB CDC 缓冲区可以阻止 UART 写入吗?


组合 ns_trace 和应用程序日志的建议架构是什么?

请提供任何指导。

谢谢你。

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

    您好、

    这可能与此相关吗?  CC1312R7:ns_trace.c tr_info/tr_debug/tr_warn/tr_error 在打印长字符串时崩溃

    此致、

    Arthur

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

    再次大家好、

    您的问题似乎与此处所示的问题相同:  RE:CC1354P10:NS_CoAP_NODE (CC1354 Wi-SUN FAN):虽然 UART2 正常工作、但未打印 UART 日志 (nanostackNetworkHandler [DBG]/[INFO]) 

    此致、

    Arthur

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

    您好、

    • 但事实并非如此:我现在可以成功打开 UART2 并打印“UART ready“。

    • 但是、系统在开始写入时会立即崩溃/冻结(第一个真实的 UART2_write/printf 流量)。

    • 如果我不打印、任务将运行(LED 心跳继续)。

    • 一旦我在启用 ns_trace 的情况下开始定期打印(例如温度值)、系统就会停止(未打印硬故障;看起来像调度程序停止/死锁)。

    • 经常出现的最后一行:UART 就绪(有时多一行,然后冻结)。

    UART 就绪
    [trace] ns_trace UART bound=4eb98
    [info][main]:图书馆资料|日期:2025 年 12 月 18 日、时间:19:38:14,版本:1.6.2.

    [info][main]:Wi-SUN 堆栈版本:1.1.0、Wi-SUN 协议版本:1.0+

    临时:任务已启动
    【应用】seq=0 T=26.0C  
    应用] seq=1 T=26.0C

    然后冻结。 冻结序列号不是固定的。 它在每次启动时更改:1、2、5、 1、...

     

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

    您好!

    如果您将 UART 写入配置为 UART2_Mode_nonblocking ;(在 uartParams 结构中)、您仍然会看到这个问题吗?

    请注意、您还必须在 SysConfig 中对其进行设置:  

    否则、当程序停止时、程序计数器和栈指针寄存器指向的位置会是什么? 查看 ROV 工具的表述也会很有趣: 使用运行时对象视图 (ROV2)


    此致、

    Arthur

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

    我认为、CCS Theia 对 ROV 的功能有限。

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

    尊敬的 Burc:

    确实。 在这种情况下、我建议您使用 CCS 12.8。

    此致、

    Arthur