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.

[参考译文] TM4C129ENCPDT:UARTprintf 与 printf - printf 如何将数据发送到 CCS 控制台?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/772879/tm4c129encpdt-uartprintf-vs-printf---how-does-printf-send-data-to-ccs-console

器件型号:TM4C129ENCPDT

我使用了 UARTprintf、连接了 USB CDC、并在 CCS 终端中打开了相应的串行端口。 在这种情况下、我完全了解数据如何从固件传输到屏幕。 提供了 UARTprintf 的源代码。

我最近还注意到、printf 输出将出现在 CCS 控制台中。 我找不到 printf 的来源、我想了解数据在连接到计算机的过程中是如何获得的。 有人能不能在这上面弄清楚呢?

在相关的注释中、我想断开此控制台输出并确保使用我自己的 printf。 搜索此论坛后、建议的设置在我的项目中不可见、因此我不知道要查看的其他位置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Brian、
    打印到 Code Composer Studio 控制台窗口的 printf 函数使用断点和 JTAG 将字符从器件传输到 PC。 它用于调试过程。 下面是一个包含一些详细信息的链接:
    processors.wiki.ti.com/.../Tips_for_using_printf
    我将继续关注此主题、但会将其传递给编译器团队、因为他们将能够更好地回答您的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Brian Willoughby18">我找不到 printf 的源代码,我想了解数据是如何通过与计算机的连接获得的。 有人能不能对此有所了解?CIO系统调用协议 在使用 TI ARM 编译器时对协议有一些细节。 使用 GCC ARM 编译器时  、使用半主机协议。

    对于 TI ARM 编译器、printf 和支持函数的源文件位于中 /ccsv8/tools/compiler/ti-cgt-arm_ /lib/src 目录。  trgmsg.c 是包含低级 __TI_writemsg()和 __TI_readmsg()的源文件,它们作为 CIO 协议的一部分在目标上的程序与 CCS 调试器之间进行通信。

    [引用 user="Brian Willoughby18">在相关说明中、我想断开此控制台输出并确保使用我自己的 printf。仅当目标尝试使用 CIO 时(并且已选择调试项目属性"启用 CIO 功能使用")、CIO 控制台才会出现在 CCS 调试器中 (需要设置断点)"选项)。 您是不是说您正在创建一个替换 printf、并且希望其输出出现在 CCS 调试器的 CIO 控制台中?

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

    CIO 控制台仅在目标尝试使用 CIO (并且已选择调试项目属性"Enable CIO function use (requires setting a breakpoint)"选项)时出现在 CCS 调试器中。 您是不是说您正在创建一个替换 printf、并且希望其输出出现在 CCS 调试器的 CIO 控制台中?

    [/报价]

    不、我想避开 CIO 控制台、并确保我的闪存二进制文件不包含任何该代码。

    我很困惑、因为、

    1) 1)我不知道 CIO 控制台存在

    2) 2)我们在项目开始时开始使用 UARTprintf()

    3) 3)我们最终编写了自己的 UART_printf()

    4)我们随后使用预处理器宏在项目基础上将 printf()定义为 UARTprintf()或 UART_printf()

    5) 5)最后,作为一项测试,我离开了我们的宏并注意到周围有 printf(),然后担心我无法删除它。

    感谢您指出 CCS 中的"Enable CIO Function Use"选项。 较旧的 E2E 线程指向不同的方向、我找不到它。 对于跟着运行的用户、该选项位于 Debug 下的项目属性中、然后是 Program/Memory Load Options。