主题中讨论的其他器件:CODECOMPOSER
香榭丽舍
客户询问:
我看到由于 fprintf、我的任务的堆栈消耗非常高。
如果要使用–printf_support 选项、是否需要重建 SDK 库?
"需要 printf/scanf 支持级别(--printf_support) "
谢谢、
/Wolfgang
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.
香榭丽舍
客户询问:
我看到由于 fprintf、我的任务的堆栈消耗非常高。
如果要使用–printf_support 选项、是否需要重建 SDK 库?
"需要 printf/scanf 支持级别(--printf_support) "
谢谢、
/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、
如果您在调试器中使用运行时对象视图工具、这是否会为您提供可靠的堆栈峰值? 此工具在运行时监控堆栈而不是分析编译器、因此应避免 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