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.

[参考译文] CC3235SF:需要重建 SDK 库以从 fprintf 切换到 printf?

Guru**** 2564090 points
Other Parts Discussed in Thread: CODECOMPOSER

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1002521/cc3235sf-need-to-rebuild-sdk-libraries-to-switch-from-fprintf-to-printf

器件型号:CC3235SF
主题中讨论的其他器件:CODECOMPOSER

香榭丽舍

客户询问:

我看到由于 fprintf、我的任务的堆栈消耗非常高。

如果要使用–printf_support 选项、是否需要重建 SDK 库?

 "需要 printf/scanf 支持级别(--printf_support)        "

谢谢、

/Wolfgang

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

    您好、Wolfgang、

    该标志将需要重建库、但除非定义了调试跟踪、否则直接使用 printf 的库极少。 客户可能希望首先检查重建库是否会改善堆栈消耗。

    此致、

    Sarah

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

    您好、Sarah、

    谢谢你。 我将通知我的客户。

    最棒的

    /Wolfgang

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

    我之所以提出这一要求、是因为堆栈使用工具(来自 CodeComposer Studio)提供的值看起来不有效。
    即使 分配给某些任务的堆栈大小高于 StackUsage 工具提供的值、我也会获得这些任务的堆栈溢出异常。

    我认为这可能是由于"xxxprintf()"- StackUsage 报告对 vsnprintf(每个耗时30字节)的调用,而在__TI_printfi()上的调用则没有值。

    当不使用--printf_support 选项时,数字看起来完全不同(值更高),但 至少(在调整任务堆栈以匹配 StackUsage 中的值之后)我不会得到异常。

    因此、我认为 链接库可能仍然使用"full"版本的 sprintf、或者"nofloat"的 StackUsage 测量无效。 我发现以下主题 CCS/CC1310:当-printf_support nofloat - Code Composer Studio 论坛- Code Composer Studio ︎- TI E2E 支持论坛时、堆栈使用情况缺失 、但它已经存在3年了。 存在事件错误报告(CodeGen-5179) 、但我无法在 -软件问题报告(SIR)(TI.com)中找到它

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

    您好、Piotr、

    该主题讨论堆栈使用工具报告不足。  我相信、我们已经切换了外部跟踪工具、因为该线程是创建的、所以现在可以在 EXT_EP-9037中找到它。 不幸的是,这一进程仍在进行中。

    虽然该错误确实会限制调试工具的有效性、但 不会影响您的应用。 您是否在应用程序中看到了堆栈溢出异常和奇数行为?

    哪个链接库正在使用您要重建的 vsnprintf?

    此致、

    Sarah

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

    你好,Sarah

    我最初提出的问题的根源如下:

    我的系统中有四个任务、每个任务都有自己的堆栈。 当我找到 StackUsage 工具时、我决定优化 为每个任务分配的堆栈。
    在编译器的默认设置下、我注意到 了非常高的需求-因此我决定使用选项--printf_support=nofloat。
    StackUsage 工具报告的值要低得多。 我使用了这些值并将我的操作系统任务配置为它们(当然还有+10%-20%的裕度)。
    但是、之后我收到了堆栈溢出异常。
    我认为 这可能是因为我没有重新编译标准库-这就是我问主要问题的原因。

    我更深入地研究了文档、现在我的理解是--printf_support=nofloat 不需要自行重建库。 我认为它在内部处理得很好。  我得到的异常是由于 StackUsage 工具提供的值报告不足(EXT_EP-9037仍处于打开状态将确认该情况)。

    现在的问题是:

    - 是否计划修复 StackUsage 工具(以及何时)?
    -   什么是__TI_printfi()的真正堆栈用法-如果我事先知道它可以是一种变通办法。 我只需将它(在我的标题中)添加到 StackUsage 工具提供的任何值

    此致

    第页

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

    您好、Piotr、

    工具修复当前没有时间线、 但最近已对 TT 进行了一些更新。

    至于_TI_printfi_nofloat 的确切大小、我必须找到该信息。 您是否正在使用 TI Arm Clang 编译器?

    此致、

    Sarah

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

    我使用 ti-cgt-arm_20.2.LTS -我认为它是基于 clang 的。

    BR
    第页

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

    您好、Piotr、

    如果您在调试器中使用运行时对象视图工具、这是否会为您提供可靠的堆栈峰值? 此工具在运行时监控堆栈而不是分析编译器、因此应避免 StackUsage 工具出现错误。

    此外、ti-cgt-arm_20.2.LTS 是旧版 TI 编译器。 TI Arm Clang 编译器的当前版本为 ti-cgt-clang-arm_1.3.0.LTS。 我建议您看一看、因为有许多代码优化改进、包括 printf。 您可以在 CC32xx SDK 中找到具有更新链接器文件   的逆时针项目、如果您想查看所有差异、还可以在用户指南中找到迁移指南。 如果从 SDK 导入逆时针项目时遇到问题、 请参阅此 常见问题解答。

    此致、

    Sarah

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

    你好

    我还没有能够查看基于 Clang 的 TI 编译器。

    但是、我尝试使用 ROV 工具。 从演示来看、它看起来很不错-但看起来它仅支持 TI RTOS、不支持吗?

    但我们需要(事实上也希望)使用 FreeRTOS。 是否有任何方法可以让 ROV 与 FreeRTOS 配合使用?

    不过、如果您能够为我提供 __TI_printfi_nofloat ()的堆栈消耗(即使是粗略的) 、对于 Legcy 和 Clang 基本编译 器而言、我们调整 StackUsage 工具结果将绰绰有余。

    提前感谢。

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

    您好、Piotr、

    ROV 确实支持 FreeRTOS;它已添加到 CCS v10.1.1和 CC32xx SDK 4.30中(如果需要、v4.30需要一个次要修复程序。 V4.40及更高版本应开箱即可使用)。  与 TI-RTOS 相比、支持受限、但它仍有助于识别堆栈峰值。

    我找不到 有关__TI_printfi_nofloat 确切大小的文档。 下一步是创建一个新主题、以请求工具团队提供帮助。 如果您使用此页面顶部的"提出相关问题"按钮创建新主题、我可以确保正确分配该主题。

    此致、

    Sarah

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

    问题已发布。

    有关 ROV。
    我有 CCS v10.2.0和 CC32xx SDK v4.40.00.07版本、但无法使其正常工作。
    我是否需要将仪表/TI 实用程序模块添加到代码中?

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

    您好、Piotr、

    不可以、我从 SDK 4.40导入了一个 FreeRTOS 示例、构建了该示例、然后启动调试会话并从工具菜单中打开 ROV。

    您能否附上无法正常工作的内容的屏幕截图?

    此致、

    Sarah

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

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

    您好、Piotr、

    我不确定是否支持所有 ROV 功能、但您应该会在左侧的模块菜单中看到"FreeRTOS "、位于"Monitor"上方。 在这里、我能够看到任务实例。

    您使用的是 FreeRTOS 版本? XDC 工具的版本是什么?

    此致、

    Sarah