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.

[参考译文] TMS320F28379D:查看 CCS 中 C 标准库函数#39;printf ()#39的输出

Guru**** 2609955 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1062226/tms320f28379d-seeing-output-of-c-standard-library-function-printf-in-ccs

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

您好:

我正在使用项目中 C 标准库中的'printf()'函数。  

printf("Data received!");

当我在 CCS 中调试程序时、我看不到'printf()'函数的输出。

在 CCS 中进行调试时、如何查看'printf()'函数输出?

我在 TI E2E 中研究了此问题、但找不到最终解决方案。

我的 CCS 版本为 v11.0.00012。  此外、我使用的是编译器 TI v21.6.0.LTS 版本。

Sinan、

谢谢、致以诚挚的问候。

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

    您好!

    输出应在控制台窗口中可见。 您能否确认 stdio.h 已包含在内?

    谢谢、

    Ashwini

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

    您好、 Ashwini:

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-of-c-standard-library-function-printf-cs/3933624#3933624"]您是否可以确认已包含 stdio.h?]

    是的。 我在程序中包含了'stdio.h'文件。

    如何在输出控制台窗口中看到'printf()'函数? 您能举个例子吗? (示例代码:printf ("收到的数据!");)

    谢谢、
    Sinan。

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

    您好、Sinan、

    没有什么特别需要做的。 添加 stdio.h 并包含运行时库应该就足够了。 在 C2000Ware 3.04或更高版本中、请参阅运行在 Launchpad 上的"examples\demos\benchmark\ACI_motor_benchmark\f2837x"中的基准测试示例。 此示例将基准测试数据打印到控制台。

    谢谢、

    Ashwini

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

    请参阅 让 C I/O 正常工作/疑难解答 、了解为什么 CCS 控制台中不显示输出。

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

    您好、切斯特:

    [引用 userid="91588" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-c-standard-library-function-printf-cs/3935246#3935246"]获取操作/报价单[

    我查看了该资源、但无法在 我的项目中实现'C I/O 通信缓冲器放置'。

    谢谢、

    Sinan。

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

    您好、 Ashwini:

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-c-standard-library-function-printf-ccs/39348#3934848"]\f37x_prochmarks[\f2837x]\fbenchmark

    我将该项目与自己的项目进行了比较。  但我看不到'printf()'函数有什么区别。  我想 CCS 存在问题

    谢谢、
    Sinan。

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

    您好、Sinan、

    祝您新年快乐!

    您是否能够通过 ACI_MOTOR_Benchmark 示例查看 printf 输出?

    谢谢、

    Ashwini

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

    您好、 Ashwini:

    非常感谢。 我也祝你新年快乐健康。

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-of-c-standard-library-function-printf-ccs/3945224#3945224"]您是否能够使用引用 cif_printf_probate[?]

    是的、我通过 ACI_MOTOR_Benchmark 示例看到了 printf 输出。 但我无法在我自己的程序中运行它。 我使用下面的示例。 您能否在此示例中实现 printf?

    C2000Ware_3_04_00_00\driverlib\f2837xd\examples\cpu1\spi\spi_ex1_loopback

    谢谢、此致、
    Sinan。

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

    您好、Sinan、

    我将尝试修改环回示例并告知您。

    谢谢、

    Ashwini

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

    您好、Sinan、

    我修改了 SPI_ex1_loopback 示例、方法是在 初始化调用之间的 while (1)之前添加 printf、在 while (1)循环内添加一个 printf、所有这些都显示在控制台上。 我只需添加 stdio.h 头文件并在链接器命令文件中向.text 和.bss 段添加更多内存、就像添加了 printf 一样、运行时库可能会被拉入并增加了代码大小。

    您在应用程序中的哪个位置添加 printf 语句?

    谢谢、

    Ashwini

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

    您好、 Ashwini:

    我想在 while (1)之前添加 printf 语句。 也许稍后我可以在 while (1)循环中添加 printf。

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-of-c-standard-library-function-printf-in-ccs/3949682"]您在添加应用程序语句时的点是什么?]

    在我的应用程序中、将 printf 语句插入 到我想要的任何位置是否有问题?

    谢谢、
    Sinan。

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

    您好、Sinan、

    我能够在控制台上看到 printf 语句中的 printf 字符串被添加到 main 内的第一个 C 语句中、直到 while (1)循环之前。

    奇怪的是、这对您不起作用。 在我的测试中、我在 Launchpad 上使用了"CPU1_RAM"构建配置。 这也是您尝试过的吗?

    谢谢、

    Ashwini

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

    您好、 Ashwini:

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-c-standard-library-function-printf-cs/3950886#3950886"]您是否已经尝试过以下哪些操作?

    是的、我使用了"CPU1_RAM"构建 配置。  我无法将 printf 与"CPU1_FLASH"构建 配置一起使用?

    谢谢、

    Sinan。

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

    您好、Sinan、

    它应该适用于 RAM 和闪存、我想知道您的设置和我的设置之间还有什么不同、因为我只尝试了 RAM 构建配置、所以我提出了这个问题。

    由于一切看起来都一样、我不知道为什么它不适合您。 让我联系 CCS 团队的其他专家、看看他们是否可以在这里提供帮助。

    谢谢、

    Ashwini

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

    您好、 Ashwini:

    解决此问题是否有任何进展?

    谢谢、

    Sinan。

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

    您好、Sinan、

    建议查看故障排除文档:

    https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_tips_for_using_printf.html#getting-c-i-o-working-troubleshooting

    您能否确保将.CIO 段分配到链接器命令文件中的读取/写入存储器。

    谢谢、

    Ashwini

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

    您好、Ashwini:

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-of-c-standard-library-function-printf-cs/3959365#3959365"]您还可以确保在.cio 命令/引用文件中分配了一个段。

    链接器命令文件中没有.cio 段

    链接器命令 文件(2837xD_RAM_lnk_CPU1.cmd)的内容如下:

    MEMORY
    {
    PAGE 0 :
       /* BEGIN is used for the "boot to SARAM" bootloader mode   */
    
       BEGIN            : origin = 0x000000, length = 0x000002
       RAMM0            : origin = 0x000123, length = 0x0002DD
       RAMD0            : origin = 0x00B000, length = 0x000800
       RAMLS0           : origin = 0x008000, length = 0x000800
       RAMLS1           : origin = 0x008800, length = 0x000800
       RAMLS2           : origin = 0x009000, length = 0x000800
       RAMLS3           : origin = 0x009800, length = 0x000800
       RAMLS4           : origin = 0x00A000, length = 0x000800
       RESET            : origin = 0x3FFFC0, length = 0x000002
    
    PAGE 1 :
    
       BOOT_RSVD       : origin = 0x000002, length = 0x000121     /* Part of M0, BOOT rom will use this for stack */
       RAMM1           : origin = 0x000400, length = 0x0003F8     /* on-chip RAM block M1 */
    //   RAMM1_RSVD      : origin = 0x0007F8, length = 0x000008     /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
       RAMD1           : origin = 0x00B800, length = 0x000800
    
       RAMLS5      : origin = 0x00A800, length = 0x000800
    
       RAMGS0      : origin = 0x00C000, length = 0x001000
       RAMGS1      : origin = 0x00D000, length = 0x001000
       RAMGS2      : origin = 0x00E000, length = 0x001000
       RAMGS3      : origin = 0x00F000, length = 0x001000
       RAMGS4      : origin = 0x010000, length = 0x001000
       RAMGS5      : origin = 0x011000, length = 0x001000
       RAMGS6      : origin = 0x012000, length = 0x001000
       RAMGS7      : origin = 0x013000, length = 0x001000
       RAMGS8      : origin = 0x014000, length = 0x001000
       RAMGS9      : origin = 0x015000, length = 0x001000
       RAMGS10     : origin = 0x016000, length = 0x001000
    
    //   RAMGS11     : origin = 0x017000, length = 0x000FF8   /* Uncomment for F28374D, F28376D devices */
    
    //   RAMGS11_RSVD : origin = 0x017FF8, length = 0x000008    /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
       RAMGS11     : origin = 0x017000, length = 0x001000     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */
       RAMGS12     : origin = 0x018000, length = 0x001000     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */
       RAMGS13     : origin = 0x019000, length = 0x001000     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */
       RAMGS14     : origin = 0x01A000, length = 0x001000     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */
       RAMGS15     : origin = 0x01B000, length = 0x000FF8     /* Only Available on F28379D, F28377D, F28375D devices. Remove line on other devices. */
       
    //   RAMGS15_RSVD : origin = 0x01BFF8, length = 0x000008    /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
                                                                /* Only on F28379D, F28377D, F28375D devices. Remove line on other devices. */
    
       CPU2TOCPU1RAM   : origin = 0x03F800, length = 0x000400
       CPU1TOCPU2RAM   : origin = 0x03FC00, length = 0x000400
    
       CANA_MSG_RAM     : origin = 0x049000, length = 0x000800
       CANB_MSG_RAM     : origin = 0x04B000, length = 0x000800
    }
    
    
    SECTIONS
    {
       codestart        : > BEGIN,     PAGE = 0
       .text            : >> RAMD0 |  RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4,   PAGE = 0
       .cinit           : > RAMM0,     PAGE = 0
       .switch          : > RAMM0,     PAGE = 0
       .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */
       .stack           : > RAMM1,     PAGE = 1
    
    #if defined(__TI_EABI__)
       .bss             : > RAMLS5,    PAGE = 1
       .bss:output      : > RAMLS3,    PAGE = 0
       .init_array      : > RAMM0,     PAGE = 0
       .const           : > RAMLS5,    PAGE = 1
       .data            : > RAMLS5,    PAGE = 1
       .sysmem          : > RAMLS5,    PAGE = 1
    #else
       .pinit           : > RAMM0,     PAGE = 0
       .ebss            : > RAMLS5,    PAGE = 1
       .econst          : > RAMLS5,    PAGE = 1
       .esysmem         : > RAMLS5,    PAGE = 1
    #endif
    
       Filter_RegsFile  : > RAMGS0,    PAGE = 1
    
    
       ramgs0           : > RAMGS0,    PAGE = 1
       ramgs1           : > RAMGS1,    PAGE = 1
    
    #ifdef __TI_COMPILER_VERSION__
       #if __TI_COMPILER_VERSION__ >= 15009000
        .TI.ramfunc : {} > RAMM0,      PAGE = 0
       #else
        ramfuncs    : > RAMM0      PAGE = 0   
       #endif
    #endif
    
       /* The following section definitions are required when using the IPC API Drivers */
        GROUP : > CPU1TOCPU2RAM, PAGE = 1
        {
            PUTBUFFER
            PUTWRITEIDX
            GETREADIDX
        }
    
        GROUP : > CPU2TOCPU1RAM, PAGE = 1
        {
            GETBUFFER :    TYPE = DSECT
            GETWRITEIDX :  TYPE = DSECT
            PUTREADIDX :   TYPE = DSECT
        }
    
        /* The following section definition are for SDFM examples */
       Filter1_RegsFile : > RAMGS1, PAGE = 1, fill=0x1111
       Filter2_RegsFile : > RAMGS2, PAGE = 1, fill=0x2222
       Filter3_RegsFile : > RAMGS3, PAGE = 1, fill=0x3333
       Filter4_RegsFile : > RAMGS4, PAGE = 1, fill=0x4444
       Difference_RegsFile : >RAMGS5,   PAGE = 1, fill=0x3333
    }
    
    /*
    //===========================================================================
    // End of file.
    //===========================================================================
    */
    

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-of-c-standard-library-function-printf-cs/3950886#3950886"]我 刚刚从控制台的第一个控制台调用中添加到 printf/sloop 语句[前面]。

    您能否向我发送您制作的运行 printf 项目文件?

    谢谢、

    Sinan。

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

    您好、Sinan、

    我已将该项目附在此处:

    e2e.ti.com/.../6318.spi_5F00_ex1_5F00_loopback.zip

    谢谢、
    Ashwini

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

    您好、Ashwini:

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-of-c-standard-library-function-printf-cs/3962823#3962823"]ex6318_spi_loopback []

    在此示例中、printf 语句正在运行。

    您能否与我分步分享您在程序中使用 printf 语句时所做的工作?

    谢谢、此致、

    Sinan。

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

    您好、Sinan、

    我记得添加 stdio.h 头文件和 printf 语句。 您可以将我发送的源与 C2000Ware 中的源进行比较、以了解差异。

    谢谢、

    Ashwini

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

    您好、Ashwini

    我的问题得到了解决。 我感谢你。

    我稍后将关闭此帖子案例。

    非常感谢您的反馈。

    还感谢 TI E2E 一如既往地提供快速支持。

    祝您度过美好的一天、时刻保持安全。

    Sinan、
    谢谢、致以诚挚的问候。

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

    您好、Sinan、

    很高兴知道事情对您有效。 请您与我们分享此修复方法、以便我们将来能够更好地支持此类问题吗?

    谢谢、
    Ashwini

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

    您好、 Ashwini、

    很抱歉我迟到了。  我有点忙。

    [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-of-c-standard-library-function-printf-ccs/3971844#3971844"]以便您将来能够更好地分享这些问题[?]

    我进行了以下修复、以便能够在项目的 C 标准库中使用'printf()'函数:

    1. 我包括在内  标准库。
    2. 我在程序中的任何位置调用了'printf()'函数。 printf ("Hello world。\n");
    3. 我编辑了项目链接器文件、如您发送给我的文件中的链接器文件。 (2837xD_RAM_lnk_CPU1.cmd) [引用 userid="84566" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1062226/tms320f28379d-sensing-output-of-c-standard-library-function-function-forume/print28623]在此处添加了以下链接:
    4. 我编译了项目并对其进行了调试。 我在控制台中成功看到了所需的输出。

    Sinan、
    谢谢、致以诚挚的问候。