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/EK-TM4C129EXL:启用"将时间戳信息添加到目标输出&quot中;在CCS中,7.1 会中断CIO的断言失败

Guru**** 2537030 points
Other Parts Discussed in Thread: EK-TM4C129EXL

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/590571/ccs-ek-tm4c129exl-enabling-add-timestamp-information-to-target-output-in-ccs-7-1-breaks-cio-for-assert-failures

部件号:EK-TM4C129EXL

工具/软件:Code Composer Studio

曾使用CCS 7.1 ARM 0.0.0016万 v 16.9 .2.LTS编译器为EK-TM4C129EXL创建程序。 如果检测到错误,程序将使用RTS assert.h文件中的Assert宏中止程序。

发现当启用“将时间戳信息添加到目标输出”时,发生断言失败后,CIO控制台被填充了虚假文本,并且程序没有在loader_exit()处停止。

以下代码说明了该问题:

/*
* main.c
*/

#include <stdio.h>
#include <assee.h>

int main(void)
{
易失性int A =2;
易失性int b=3;

printf ("下一个断言应通过\n");
断言(a != b);

printf ("下一个断言应失败\n");
断言(a == b);

printf ("由于以前的断言中止了程序,所以不应显示此行\n");

返回0;}

如果在未启用“将时间戳信息添加到目标输出”时运行程序,程序将按预期运行,因为声明失败在CCS CIO控制台中报告,并且在程序因声明失败而中止后,程序在loader_exit()中停止:

如果在启用“Add timestamp information to target output”(将时间戳信息添加到目标输出)的情况下运行程序,CIO控制台将显示预期的断言失败消息(第一行为红色),但程序不会中止,而是继续运行,并且在CIO控制台中显示虚假文本:

在单步故障情况下,代码进入fputs RTS函数,将声明失败文本消息写入CCS调试器。 当执行以下行时:

	int write_return = write (_fp->fd,_ptr + num_written,num_left); 

num_left,要写入的字符数为52

write_return,报告为写入的字符数为74。

问题是write()函数返回的字符数为74个,比要求写入的字符数多22个。 这会导致fputs()函数中的循环,该函数设计用于处理部分写入,以计算仍有大量未签名的字符(4294967274)要写入,从而开始在输入字符串的末尾写入虚假文本。

如果WRITE函数返回的字符比实际写入的字符多22个, CCS调试器添加到目标输出的时间戳是22个字符,我认为问题是CCS CIO处理标准错误时错误地将插入的时间戳计入返回到目标的字符数中。

示例项目附加 在e2e.ti.com/.../TM4C129_5F00_assert_5F00_test.zip中

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

    感谢您提供详细的帖子。 你关于问题根源的理论对我来说是有意义的。 我已下载并导入项目。 我复制了工作案例。 您将选项设置为"添加时间戳信息..."的位置。 我搜索了CCS中的构建选项,但没有看到。

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

    您将选项设置为"添加时间戳信息..."的位置[/QUOT]该选项位于“调试 其他/其他选项 ”属性中。

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

    我可以看到该问题,并将CCDSK-2618归档以进行跟踪。

    John