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:读取内存块错误(C6678)

Guru**** 2540720 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/576241/ccs-trouble-reading-memory-block-error-c6678

工具/软件:Code Composer Studio

目前,我正在C6678上使用JTAG (XDS100v2)进行开发。
一次,出现了以下错误,无法进行调试。
虽然可以进行连接,但在加载后立即发生错误,在执行程序后立即发生错误。


在长度0x4的第0页0x5fbe123e处读取内存块时出现问题:(ERROR-1178 @ 0x5FBE123C)设备功能时钟似乎关闭。 关闭并重新打开主板。 如果错误仍然存在,请确认配置和/或尝试更可靠的JTAG设置以降低TCLK)。 (仿真软件包6.0 .407.3)

但是,增加堆大小不会导致错误。
但是,由于无法再增加堆,因此在没有错误时堆已返回到大小。 然后,没有出现任何错误。

为什么会发生这种情况?
此外,请告诉我一个有效的措施来防止错误。

CCS版本:6.2 .............................................0
处理器SDK版本:03.01 .00.06

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

    您好,

    虽然可以连接,但加载后立即出现错误,执行程序后立即出现错误。[/QUOT]

    我不完全确定我是否理解所有细节,但从我读到的内容来看,似乎您可以将代码加载到设备上,它在main()停止, 然后,在您单击"继续"(绿色小按钮)后,您立即收到上面的错误,是这样吗?

    如果发生这种情况,则表示代码正在正确初始化运行时环境(在入口点_c_int00和main之间),但应用程序失败。 这是一个很好的迹象,表明系统在代码到达main()例程的位置是稳定的。

    但是,增加堆大小不会导致错误。
    但是,由于无法再增加堆,因此在没有错误时堆已返回到大小。 然后,没有出现任何错误。[/QUOT]

    第一句表示导致错误的堆不足。 但是,我不太理解第二句话,因为它似乎是矛盾的。 似乎是说您调整了堆,但错误从未返回?

    无论出现什么错误,堆用尽都是错误的常见原因,其中一些错误的行为可能无法预测。 我们的编译器和工具没有动态堆监视器,但可以使用一些技术来验证其使用情况。 以下论坛主题中提到了这些主题:

    https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/5.1831万

    https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/5.4338万

    https://e2e.ti.com/support/development_tools/compiler/f/343/t/30.6169万

    希望这能有所帮助,

    拉斐尔

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

    你好,Desouza。 感谢您的回复。

    >它在main()处停止,然后在您单击Resume (恢复)(绿色的小按钮)后,您立即看到上面的错误,是这样吗?

    按下调试按钮(绿色昆虫按钮)后,程序开始加载。

    加载完成后,出现错误并在按“恢复”按钮之前停止。

    > 似乎说您调整了堆,但错误从未返回?

    是的。

    堆大小为0x4万时发生错误。 堆大小设置为0x4.4万。 然后,没有出现任何错误。
    之后,我更正了程序,再次出现错误。 但是,我再也不能增加堆了。 因此,当堆返回到0x4万时,没有出现错误。 我无法理解这种行为。

    顺便说一下,当程序作为二进制文件运行时,它可以正常工作。 仅当JTAG已连接并使用CCS调试按钮进行操作时,才会发生错误。

    此外,请允许我提问。 使用CCS进行调试时,调试信息存储在何处? CCS是否使用堆进行调试?

    此致。