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.

[参考译文] TMS320F28388D:如何调试 CM4上运行的程序?

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1301157/tms320f28388d-how-do-i-debug-a-program-running-on-cm4

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

您好!

我不熟悉 TI 的 C2000技术、尤其是标题中提到的 CPU。

我们将在 CPU1和 CM4上构建一个多任务、多核程序。

首先、我使用了闪烁 LED D1 (通过 CPU1)和 D2 (通过 CM4)的"简单"示例:(..C2000Ware_5_01_00_00\driverlib\f2838x\examples\C28x_cm\led)

我知道这两个代码都必须通过调试器(MB063控制板上的 XDS100V2)加载。

目前、我面临三个问题:  

1/-如果我修改 CM4的代码、我必须在电路板中重新加载两个工程(首先是 CM4、然后是 CPU1)、CM4的修改后的程序才能运行。
2/-如果我在 CM4代码中设置一个断点、则不会执行该断点。
3/-当我暂停调试器时、只有 CPU1停止、CM4继续运行...

我当然不是使用正确的方法进行调试,但我找不到这个原则的明确解释...

可以帮帮我吗?

提前感谢。

埃里克

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

    Eric、您好!

    Unknown 说:
    1/-如果我修改 CM4的代码,我必须重新加载电路板中的两个项目(第一个 CM4,然后是 CPU1)才能运行 CM4的修改后的程序。

    如果只使用目标配置文件(.ccxml)连接到目标、则应该能够加载 CM4并在重新启动两个 CPU 后运行它。 如果您要调试两个内核、那么我认为您需要重新加载这两个项目。

    Unknown 说:
    2/-如果我在 CM4代码上设置了一个断点,则不会执行。

    在 Debug 窗口中、确保选择了正确的内核(下面是一个示例、因为我手头没有 F2838x 器件)。 此外、断点是否在 main 中的某个位置执行、然后再执行任何函数调用?

    Unknown 说:
    3/-当我暂停调试器时、只有 CPU1停止、CM4继续运行...

    是的、就调试而言、这些内核相互独立、因此可以将它们视为独立的内核(我认为有一些方法可以使用 DSS 同时运行调试内核)。

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

    您好、Omer:

    非常感谢您的快速回复。

    我必须承认我很难理解。 我已经设法仅在 CM4中下载代码并设置断点。

    为此、我禁用所有其他内核:

     

    问题在于、由 CM4驱动且 应闪烁的 LED 绝不会亮起。

    可能是因为 CPU1未在运行? 但是、如果我首先运行 CPU1、我必须将其停止以启动 CM4... 在这种情况下、我无法调试 CM4的代码。
    (我正在使用 MB063评估板上唯一的板载调试器)。

    是否有任何文档详细介绍了调试原理? 我只能找到用户指南、但对如何调试多核系统没有说明。

    感谢你的帮助。

    Eric。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可能是因为 CPU1未运行? 但是、如果我首先运行 CPU1、我必须将其停止以启动 CM4... 在这种情况下、我无法调试 CM4的代码。
    (我正在使用 MB063评估板上唯一的板载调试器)。

    是的、CPU1是主 CPU、需要先运行。 您可以通过以下方法调试 CM 的代码: 将项目加载到 CPU1、然后通过操作 Run > Load > Load 编译的相应.out 文件将项目加载到 CM。

    是否有任何详细解释调试原则的文档? 我只能找到用户指南,但没有说明如何调试多核系统。

    我不知道我们有任何这样的文档、我认为有一个关于针对这样的东西创建一个应用报告的讨论。

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

    大家好、再次感谢 Omer、

    但它仍然对我不起作用...

    I LOAD CPU1;加载正常、但 CM 的第二个加载返回以下错误:

    那么:  

    此致、

    Eric。

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

    Eric、您好!

    你是以任何方式修改链接器命令文件(这个项目是从示例中还是 从零开始)? 尝试为程序写入的内存地址看起来不太正确。

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

    您好、Omer:

    我没有修改链接器文件。
    我导入了示例"\C2000Ware_5_01_00_00\driverlib\f2838x\examples\C28x_cm\led"。

    可以肯定的是、我在不同于我正在使用的工作区的其他工作区中重新执行了导入过程。 我发现了同样的问题...

    此致、

    埃里克

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

    Eric、您好!

    当我导入示例并运行时、我能够顺利运行该程序并看到 LED 闪烁。 除此之外,我还采取了以下步骤:

    1. 导入 LED 示例
    2. 将 USE_20MHz_XTAL 添加到工程属性中的预定义符号(这是因为我使用的是使用20 MHz 晶体的 controlCARD、这可能适用于、也可能不适用于您)
    3. 编译这两个项目
    4. 启动 CPU1工程上的调试会话
    5. 通过选择内核并右键点击选择"Connect Target"、连接到 CM
    6. 转到 Run > Load 并为 CM 加载相应的.out 文件
    7. 运行两个内核
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Omer:

    我最终成功地使调试工作在 CM4... 实际上、我还没有意识到、我必须在调试窗口中选择我要操作哪个 CPU 来启动或停止程序... :  

    现在、由于此窗口、我能够独立操作我需要的 CPU。。。

    谢谢你的耐心:)

    此致、

    埃里克