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.

[参考译文] AM2432:如何在内核1上启用调试器断点

Guru**** 2422790 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1504015/am2432-how-to-enable-debugger-breakpoints-on-core-1

器件型号:AM2432

工具/软件:

您好、

我在 CORE-0和 CORE-1的两个完全分离的文件夹上使用两个完全独立的工程。

这两个项目都是使用-og 优化编译以进行调试的。

CCS 使我能够为内核0设置断点、但拒绝内核1 -"无分类代码..."。

但是、这两个工程都仅在使用 UART 打印时运行、而我调试内核1。

如何在 CORE-1上启用调试器断点?

谢谢、

Eli  

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

    尊敬的 Eli:

    为内核1设置断点的过程与您为内核0所做的过程类似。  

    Unknown 说:
    ] CCS 允许我为 core-0设置断点、但拒绝 core-1 -"无关联代码..."。

    您能否说明当您尝试将断点保留在特定代码行时是否收到此消息、或者代码行无关紧要?

    另外、您能否提供问题的视频捕获、以便在我们结束时重现或分析?

    此致、

    Tushar

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

    尊敬的 Tushar:

    它拒绝在任何行上放置断点。

    它工作了几个星期前,但我忘了也许我改变了一些错误的东西。

    现在代码正在运行、我可以单步执行反汇编、但不能执行 C 代码。

    谢谢、

    此致、

    Eli

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

    尊敬的 Eli:

    CORE-1的代码似乎已更改。 重新编译工程一次后、可以尝试一次吗?

    在编译之前还请检查构建配置。 应该对其进行调试以进行调试构建。

    请参阅下图。

    此致、

    Tushar

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

    尊敬的 Tushar:

    我处于调试模式下-og 优化。

    两个核心的调试器都设置为在 main 中断-也许这是问题吗?

    下面是相关设置  

    我看到核心设置之间的推论-也许我应该检查或添加一些内容?

    谢谢、

    此致、

    Eli

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

    尊敬的 Eli:

    两个内核的调试器设置为在 main 中断-也许这是问题吗?

    指向 main 的断点是有意设置的、不是问题原因。 此断点是通过 CCS JTAG 加载程序时的第一个断点。

    我看到内核设置之间的推论-也许我应该检查或添加一些内容?

    您可以选择中的所有选项吗 启动选项 以上显示的 Core-1菜单。

    此致、

    Tushar

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

    尊敬的 Tushar:

    我已经设置了调试配置的每个字段,两个内核都是相同的。

    仍然只有 CORE-0允许断点。

    CORE-1以相同的原因拒绝- "没有代码与...关联"

    "没有代码与...关联"是什么意思? ?

    我也尝试了"Load Symbols"、但会获得相同的结果。

    谢谢、

    此致、

    Eli

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

    尊敬的 Eli:

    这是否特定于该示例、或者是否附带任何 CORE-1示例?

    此外、在重新编译工程后您是否也尝试过一次?

    它的意思是"没有代码与..." ?

    这意味着您尝试放置断点的行/代码在已加载的二进制文件中不存在。

    此致、

    Tushar

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

    尊敬的 Tushar:

    我没有使用示例、现在它是我的下一个产品代码。

    问题仅发生在 CORE-1 。 内核0断点运行正常。

    我清理并重建了项目-同样。

    我已经在属性->源查找路径中添加了我的项目文件夹。

    现在我只能在 CCS 断点对话框中设置断点、但代码中没有蓝点、代码运行但没有停止(不在任何行上)。

    我在反汇编中放入了断点-同样-没有蓝点、也没有停止。

    我是否缺少一些设置?

    我必须有一种方法来设置断点-代码调试非常复杂。

    请帮帮我。

    谢谢、

    Eli

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

    有任何文章我可以读吗?

    谢谢、

    此致、

    Eli

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

    尊敬的 Eli:

    是否有任何文章我可以阅读?

    请参阅  断点 以了解详细信息。

    此致、

    Tushar

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

    尊敬的 Eli:

    您能否检查生成的*映射文件?

    请检查映射文件是否编译了您尝试放置断点的符号? 它们是否存在于生成的映射文件中?

    在代码中添加断点时看到什么符号?

    此致、

    Tushar

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

    尊敬的 Tushar:

    是、它们位于映射文件和地址正确- DDR 存储器中。

    我可以在"反汇编"对话框中看到它们。 我甚至可以在反汇编对话框中放置一个断点、但在代码视图中没有蓝点、也没有停止  

    在这方面、核心之间有什么区别?

    谢谢、

    此致、

    Eli  

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

    尊敬的 Eli:

    您能否查看 CORE-1的以下设置?

    请确保选项为 允许使用软件断点 启用了内核1。

    此致、

    Tushar

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

    尊敬的 Tushar:

    可以得到相同的结果  

    还可以检查哪些内容?

    谢谢、

    此致、

    Eli

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

    尊敬的 Tushar:

    抱歉、我犯了错误、为内核0拍摄的照片是一样的、但为内核1拍摄的照片是一样的。

    谢谢、

    此致、

    Eli

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

    尊敬的 Eli:

    您在上面分享的屏幕截图似乎来自 CORE-0。 您能否针对 CORE-1进行相同的检查?

    您能再做一个实验吗? 尝试将 core1的示例加载到 core0、并告诉我结果。

    此致、

    Tushar

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

    尊敬的 Tushar:

    是的、两个内核的设置相同。

    我将尝试将内核0代码加载到内核1。

    谢谢、

    此致、

    Eli

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

    尊敬的 Tushar:

    这是一个伟大的想法!

    当我将内核1代码加载到内核0时、会遇到相同的问题-没有断点。

    "怎么了?

    谢谢、

    此致、

    Eli

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

    尊敬的 Eli:

    感谢以上的实验。 这意味着问题不在于内核设置、而是二进制本身。  

    我不确定如何进一步调试此问题、因为我最后无法重现问题

    您需要通过对代码中可能导致此问题的某些部分进行注释来进行试验。

    您能否逐步调试它、而不是在特定位置保留断点并检查您是否能够到达那里?  

    此致、

    Tushar

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

    尊敬的 Tushar:

    根据您的想法 、问题不是调试器问题、而是代码问题。

    你能帮我解决吗?

    谢谢、

    此致、

    Eli

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

    尊敬的 Tushar:

    我可以查看反汇编和单步操作、但这是一个复杂的 C++代码-以这种方式进行调试是不切实际的。

    代码如何导致这样的行为?

    谢谢、

    此致、

    Eli

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

    尊敬的 Eli:

    我们可以尝试打印日志以缩小问题范围。 您是否可以尝试在要设置断点的代码中添加调试日志?

    在代码中添加一些消息、并检查这些打印是否出现在控制台上。

    或者、您可以通过在代码中添加日志(不是高效的方法)来调试整个应用程序(如果它有效)。

    此致、

    Tushar

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

    尊敬的 Tushar:

    是的,我可以使用 printf()和日志缓冲,这是一个很长的路,我喜欢激活调试器。

    我的 main()和 app_main()都在 DDR 中。

    调试器可能无法在那里设置断点、因为它认为它不可写?

    是否有方法可以使调试器的 ut 可写?

    是否有办法放置 JTAG 断点?

    谢谢、

    此致、

    Eli

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

    尊敬的 Eli:

    仅将 PRINT 语句保留在希望设置断点以缩小问题范围的位置、而不是记录整个应用程序。

    目前、我们的目标是分析二进制文件不允许 CCS 具有断点的行为。

    此致、

    Tushar

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

    尊敬的 Tushar:

    谢谢您的帮助。

    请尝试找出我应该更改代码的内容。

    此致、

    Eli

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

    尊敬的 Eli:

    直到现在我还没有遇到这个问题,所以我很难弄清楚二进制文件出了什么问题。  

    我的后续调试步骤将基于您的实验结果。

    此致、

    Tushar

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

    尊敬的 Tushar:

    希望您能找到答案。

    感谢您的努力和帮助。

    此致、

    Eli

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

    尊敬的 Tushar:

    我发现了这个问题!

    Im 我的链接器.cmd 有一个段

    .debug_sections (noLoad): align(8)
    {  
     *(.debug_info)
     *(.debug_缩写词)
     *(.debug_loc)
     *(.debug_str)
     *(.debug_ranges)
     *(.debug_line)
     *(.debug_frame)
     *(.debug_aranges)
     *(.comment)
     *(.not.gnu-stack)
     *(.gnu.attributes)
     *(.arm.attributes)
    }> DDR

    如果我将其删除-调试器可以工作、我可以设置断点。

    感谢您的努力和帮助。

    此致、

    Eli

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

    尊敬的 Eli:

    感谢您提供上述说明。 这将有助于未来阅读谁可能面临类似的问题.  

    空载段会占用内存空间、但不存在于输出文件中。 实际上、空载段内部没有引用任何外部内容。  

    请参阅  NoLoad-Sections 以了解详细信息。

    此致、

    Tushar

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

    谢谢 Tushar、

    此致、

    Eli