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.

[参考译文] CC1352R:ROV、LOG_printf () 不能使用 CCSv20

Guru**** 2874030 points

Other Parts Discussed in Thread: SYSCONFIG, CC1311R3, CC1311P3

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1631584/cc1352r-rov-log_printf-does-not-work-using-ccsv20

器件型号: CC1352R
Thread 中讨论的其他器件: SysConfigCC1311R3CC1311P3

Scott Specker 和我正在为 TI 的大多数 MCU 创建 MCU/FreeRTOS 技术讲座。 我们将所有解决方案从 CCSv12.8 升级到 CCSv20.4.1。 ROV 对大多数用户来说是一件大事、它在 CCSv20 中对我们来说无法正常工作。

使用 CCSv20.4.1 和 CC13xx SDK 8.31.00.11。 仅使用 FreeRTOS。 代码在 LAUNCHXL-CC1352R LaunchPad 上运行正常(只需要简单的闪烁 LED 功能即可)。 SYSCFG_c.ROV.xs 由 syscfg 生成、它包含所有 ROV 脚本(如下所示)。 它受支持。 在编译、加载和运行时、ROV “不可用“。 我还需要做些什么才能让 ROV 正常显示? SDK 中的 CCS12.8 和 CC1352 均支持 Theia、所有这些都能正常工作。  

我的第二个问题是 — 最终我尝试让 LOG_printf () 像 CCSv12.8 一样工作。 但是没有 ROV 工作,我看不到 log_printf() 的结果,但编译正常。 是否有某种开关 (enable) 可以让 LOG_printf () 将结果打印到日志缓冲区?

以下是 ROV 脚本:

CCSv20-CC1352R-NO-ROV1.png

这是让 LED 闪烁 5 次后的结果图片:

CCSv20-CC1352R-NO-ROV2.png

有什么想法我可以尝试?

谢谢、

Eric Wilbur

ericw@mindshareadvantage.com

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

    您好、Eric、

    CC13xx SDK 8.31(甚至是最新的 8.32)不受官方支持、无法在 CCS 20.4 上运行、因此推荐的版本仍然是 CCS 12.8、尽管我个人使用 CCS 20.4、但它适用于大多数工具。 但是、您已经注意到、某些 ROV 功能不受支持。

    1. 我可以在 CCS 20.5 的版本说明中看到、 CCS 20.4 中的一个错误已修复、其中、如果在 调试会话启动时启动了 ROV 窗口、则 ROV 不会显示任何数据。 与您遇到的情况非常相似。  [EXT_EP-13052]如果在调试会话启动时打开数据、则 ROV 不显示数据 — 软件问题报告 (SIR)

    但是、按刷新按钮可以解决问题、或者只在调试会话完全启动后打开 ROV。 您是否尝试过提供的一个示例、例如“empty"示“示例?

    2.  每当您在 SysConfig 上添加日志模块 SinkBuf 实例时、LogSinkBuf 就会自动添加到 ROV 中。 您可以在 syscfg_c.ROV.xs 上看到这一点

    "ti/log/LogSinkBuf.rov.js", /* /ti/log/LogSinkBuf ROV support */

    但是、CCS20 不支持 LogSinkBuf ROV 模块本身、因为所需的元数据与 CCS 12.8 不同。  即使您可以看到其他模块的 ROV 数据,您也无法 获取 LOG_printf () 来将结果打印到 ROV 日志缓冲区。 没有任何开关/定义可以启用它。

    但是、您可以将 LOG_printf () 重定向到其他接收端 (ITM 或 UART)、并使用 TI 记录器工具显示它们: 使用 TI SimpleLink SDK 进行日志记录。

    它可能不容易设置、但推荐使用这种方法、因为 SRAM/UART 所需的可用 ITM 较少。

    此致、

    Daniel

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

    丹尼尔,感谢非常清楚的解释。 当我在运行/停止后调用 ROV 时、我能够看到 ROV 刚刚好。 是的、v20 中的日志记录要复杂得多、但具有很大的灵活性。 非常感谢!

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

    您好、Eric、

    我能够移植 LogSinkBuf 以使其与 CCS 20.4.1 配合使用。 这需要一些对您的研讨会可能不可行的手动工作、但我将在此处为任何其他读者记录。 这可能会破坏与 ITM 12.8 和其他 TI 记录器接收端 (UART/Logger) 的兼容性。 在正式支持之前、这是一种解决方法。

    1.下载以下 zip 文件:

    e2e.ti.com/.../F2_5F00_LogSinkBuf_5F00_ROV.zip

    2.直接在 SDK 目录(例如 C:\ti\simplelink_cc13xx_cc26xx_sdk_8_31_00_11)中提取 该文件并覆盖现有文件。 zip 文件夹中包含以下文件:

    • source/ti/drivers/power/PowerCC26X2.c
    • source/ti/drivers/power/PowerCC26XX.c
    • source/ti/log/.meta/LogModule.syscfg.js
    • source/ti/log/.meta/LogSinkBuf.syscfg.js
    • source/ti/log/.meta/drivers.component.js
    • source/ti/log/Log.h
    • source/ti/log/LogSinkBuf.c
    • source/ti/log/LogSinkBuf.h
    • source/ti/log/LogSinkBuf_theia.ROV.js

    3.此外、将以下两个文件复制到 CCS 工程的根目录中。  之所以需要此功能、是因为 CCS 默认将使用预编译驱动程序库、我们需要覆盖函数。

    • LogSinkBuf.c
    • LogSinkBuf.h

    4.启动调试器!

    此致、

    Daniel

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

    Daniel、非常感谢您给我们做的额外工作。 这将对您的客户(我们的学生)非常有用。 另外,我假设当你说“直到它被正式支持意味着你的团队(SDK 团队)的意图是通过在未来的 SDK 版本中基于正常内存的接收器缓冲区支持 LOG_printf ()?

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

    您好、Eric、

    我无法对此进行评论、也无法承诺未来 SDK 版本将支持的内容。

    此致、

    Daniel

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

    Daniel、再次感谢为基于内存的记录器提供 1352 的解决方法。 我的后续问题是:我想弄清楚 UART“管道“是否在大多数 TI MCU 上工作、如果是、我们可以将其添加到代码中进行日志记录、并使用 CCS 中内置的终端来查看消息。 这样、对于 v20、我们有一种日志记录方法、它可以在 100%的时间内工作、而不必处理这些修补程序。 学生(用户)可能会在我们的按需研讨会中欣赏到这一点。 您可能无法评论其他 MCU、但 1352 是否支持此功能? 如果是、是否有一个教程可以指导我如何设置它?

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

    您好、Eric、

    通过 UART 进行管道传递的 TI 记录器适用于我们的所有 F2 Sub-1 器件 CC13x1、CC13x2、CC13x4、包括 CC1352。

    但是、CC13x1 器件(例如 CC1311P3、CC1311R3)仅支持一个 UART 接口、这意味着只有当应用程序尚未使用 UART 时才能使用 TI 记录器。 我们的许多示例已经使用 UART 来显示信息或控制器件。

    其余器件支持两个 UART 接口、因此可将一个接口用于应用程序、将一个接口用于调试注释。 但是、连接到 MCU 的 XDS110 仅支持一个 UART。 因此、您必须将第二个 UART-TX 重定向到接头引脚、并使用跳线连接到第二个 XDS110 或类似 USB 转串行端口的 UART-RX。

    如果您的应用程序不使用 UART 并且您只打算使用 Log_printf()、则不需要额外的硬件。  

    此处提供了说明: 使用 TI SimpleLink SDK 进行日志记录

    此致、

    Daniel