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.

[参考译文] CC1311P3:是否可以消除对 log_data 和 log_ptr (.log_data/.log_ptr)的日志依赖?

Guru**** 2468610 points
Other Parts Discussed in Thread: CC1311P3

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1448309/cc1311p3-is-it-possible-to-remove-log-dependence-on-log_data-and-log_ptr-log_data-log_ptr

器件型号:CC1311P3

工具与软件:

我在其他几个平台上使用 SWO 跟踪来实现运行时串行输出、因此我尝试在 CC1311P3上对其进行设置。  我了解 ITM 跟踪是如何整合到 TI 的日志记录驱动程序/API 中的、但我对日志元数据使用外部存储器的情况感到困惑、以及为什么 ITM 跟踪甚至会使用/需要这些元数据。  对于 LogSinkBuf、我可以理解、但在我的用例中禁用了它。

以下是功能问题:

1 -能否消除对 LOG_DATA 的依赖、或者我是否被迫为我的用例中这个不必要的部分分配一些板载 RAM (我的生产硬件不会 有外部 RAM 芯片)?

2 -即使我无法删除 log_data 和 log_ptr、但如果我只使用 ITM SWO 输出、它们是否实际上会被使用?  (换句话说、我实际上是否必须为它们分配大量的 RAM)

2 -是否有任何配置 CCS-Theia 以显示 SWO 输出的示例?

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

    我联系了研发部门、他们表示元数据不会分配器件中的存储器。 这些段仅放置在 ELF 文件中、不会加载到 RAM (内部或外部)。

    (TI 实用程序 API:日志界面)

    每次调用日志 API 时、都会在.out 文件中放置一个元数据字符串。 此字符串包含有关 API 类型、文件、行模块、级别的信息以及与日志调用站点关联的其他信息。 每个调用站点向名为.log_data 的特定存储器段发出一个字符串。 除此之外、指向.log_data 中该字符串的指针存储在另一个名为.log_ptr 的段中。 由于.log_ptr 段始终位于相同的位置、并且每个条目大小相同、因此可以使用索引方案来引用每个日志字符串。 log_ptr 中的条目0将指向第一个字符串、条目1将指向第二个字符串、等等 在某些无法传输整个32位地址作为对字符串引用的器件上、这是必要的、而是可以通过日志接收器实现传输8位索引。 若要使用日志记录、应将此部分添加到链接器命令文件中 . 默认情况下、该段指向不可加载的存储器区域。 这意味着元数据不会加载到目标器件上。 相反、各种日志记录可视化工具(例如 Wireshark 和 TI ROV2)将从该部分读取元数据并正确解码日志语句。 这种方法的好处是目标上消耗的存储器非常少 . 此外、当调用日志 API 时、日志传输只需要存储或发送指向此元节的指针。

    对于 CCS-Theia 问题、我建议您将问题发布在 CCS 论坛上:

    (+) Code Composer Studio 论坛- Code Composer Studio ︎- TI E2E 支持论坛

    Siri