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.

[参考译文] CCS/CODECOMPOSER:使用 std::cout 时中止

Guru**** 2562120 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/757703/ccs-codecomposer-abort-while-using-std-cout

器件型号:CODECOMPOSER

工具/软件:Code Composer Studio

您好!

参考 此处的问题 、我打开一个新线程。 我在这里遇到的问题是、在 某些情况下、标准 COUT 操作失败。 我再次不确定我的项目设置、因此我再次附上了一个极简示例。 运行此命令将导致 abort():

我基本上要做的是将枚举类项的值转换为 int。  但是、我可以看到、我的枚举类变量的内容同样非常隐秘、因此这可能与前一个线程相关:

感谢您的支持。

e2e.ti.com/.../std_5F00_cout_5F00_abort_280029005F00_EK_5F00_TM4C1294XL_5F00_TI.zip

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

    您好!

    您是否看过以下文章?

    http://processors.wiki.ti.com/index.php/Tips_for_using_printf

    具体来说、是关于堆大小和 C I/O 缓冲区放置的部分

    谢谢

    Ki

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

    您好!
    我没有听到您的反馈,因此这个问题已经解决了。 如果您希望继续讨论、请在下面发布包含更新的回复(或创建新主题帖)。

    谢谢、
    Ki

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

    [quote user="Volker Weber">运行此操作将导致 abort():我运行了该程序并发现两个问题:

    1.最初运行在具有以下调用栈的 abort()中结束时:

    abort() at exit.c:105 0x00017F5A
    __VLA_alloc (void *)() at VLA_alloc.c:255 0x0000CB16
    std:__2 <char, std::__2::ostreambuf_iterator<char, std::__2::char_traits :num_ature >><char, std::__2::char_traits :do_put (std:__2:ostreambuf _ >、std::__2::ios_base &、char、long) const (int、long)() at locale:1、460 0x0000F50C
    std:__2:::basic_oatie.<char, std::__2::char_traits ::运算符<<(int)(位于 locale:1、278 0x0000F25E
    main() at bigtime.cpp:80 0x000137E6
    _c_int00 () at boot.asm:254 0x0001365C (_c_int00不包含帧信息)

    RTOS 对象视图(ROV) BIOS ->扫描报告发生了 Hwi 堆栈溢出的错误。

    在 bigtime.cfg 中更改了:

    program.stack = 768; 

    至:

    program.stack = 1024; 

    以防止 Hwi 堆栈溢出。

    2.程序仍然以下列调用栈结束在 abort()中:

    abort() at exit.c:105 0x00017F5A
    __VLA_alloc (void *)() at VLA_alloc.c:255 0x0000CB16
    std:__2 <char, std::__2::ostreambuf_iterator<char, std::__2::char_traits :num_ature >><char, std::__2::char_traits :do_put (std:__2:ostreambuf _ >、std::__2::ios_base &、char、long) const (int、long)() at locale:1、460 0x0000F50C
    std:__2:::basic_oatie.<char, std::__2::char_traits ::运算符<<(int)(位于 locale:1、278 0x0000F25E
    main() at bigtime.cpp:80 0x000137E6
    _c_int00 () at boot.asm:254 0x0001365C (_c_int00不包含帧信息)

    这是因为没有足够的堆来分配需要3000字节的 VLA (可变长度数组)存储池。

    在 bigtime.cfg 中更改了:

    BIOS.heapSize = 2048; 

    至:

    BIOS.heapSize = 4096; 

    然后、该程序运行到完成状态、在 CIO 控制台上报告以下情况:

    开始应用程序。我最喜欢的歌曲是:2. 

    随着程序的进一步更改、可能需要进一步增加堆栈和 heapSize。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ki、您好 Chester、
    很抱歉、我是在假期后回到办公室的。
    您的两种方法都解决了我的问题、链接中的信息将导致切斯特发布的结果。 感谢您的链接和详细示例!

    Volker