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/TMS320F28377S:如何调试 CLA 代码

Guru**** 2455560 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/746390/ccs-tms320f28377s-how-to-debug-cla-code

器件型号:TMS320F28377S

工具/软件:Code Composer Studio

你(们)好

我想单步执行 FIR 示例中的 fir32.asm 文件。 我找到了一些有关 CLA C 编译器培训的视频。 我按照中的指令进行操作  

_interrupt void cla1Isr7 ()

  //

  //此处取消注释以停止调试器

  //

  asm (" ESTOP0");

我连接了 CLA 目标并从 CPU 运行程序。 它停止并突出显示了 CPU1_CLA1调试探针。 但没有太多的事情发生得更远。 我可以看到它是通过反汇编执行的、但所有 MR0-MR3寄存器都是00000。 看起来它没有连接到我的汇编器代码。 请参阅描述如何正确调试 CLA asm 文件的文档吗?

谢谢、Vadim

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

    我将与您一起尝试解决此问题。 让我在结束时尝试一下、看看我找到的内容、我会再回来的。

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

    首先、请确保右键单击并运行 SetupDebugEnv.js 脚本文件。 之后、我从 CCS Debug 角度尝试了以下操作:

    1.首先连接 C28xx_CPU1。
    然后连接 CPU1_CLA1。
    3.单击 C28xx_CPU1、加载程序并加载 CLA_ADC_FIR32_cpu01的.out 文件。
    4.单击 CPU1_CLA1、Load Symbols 并加载与上述相同的.out 文件。
    5.单击 C28xx_CPU1,然后单击绿色/恢复按钮。 C28xx_CPU1状态现在将从暂停更改为正在运行。 几秒钟后、执行将在 fir32.asm 内_Cla1Task8内的 MDEBUGSTOP 内停止。
    6。CPU1_CLA1现在将突出显示。 单击绿色/恢复。 在 fir32.asm 内的_Cla1Task7内的 MDEBUGSTOP 将停止执行。
    7.现在单击 CTRL+Shift+F5、您将能够逐步完成此任务并查看 MR 寄存器更新、直到您在任务结束时到达 MSTOP。 如果执行超过此值、则会导致 CCS 错误"Can't Single Step Target Program"、因为您已到达任务的末尾。 您将注意到 C28xx_CPU1不再运行并已暂停。
    8.要继续执行、您必须单击 C28xx_CPU1、然后单击绿色/恢复、几秒钟后、该操作将在_Cla1Task7内的 MDEBUGSTOP 停止。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Sira,

    非常感谢您的帮助! 它的工作方式与您在第8项之前所描述的一样。 当我尝试退出任务并突出显示 C28xx_CPU1绿色/Resume 按钮时、CPU1的状态为正在运行。 CLA 提供了绿色按钮、但如果我按下它、我得到了此错误

    CPU1_CLA1:无法运行目标 CPU:(错误-2060 @ 0x0)在器件运行时无法完成请求的操作。 停止器件、然后重试此操作。 (仿真包8.0.803.0)  

    谢谢 Vadim

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

    您是否在 cla1Isr7()中未注释 asm ("ESTOP0")? 如果它没有注释、我会看到它的工作方式与我在上面写的方式相同。 当 CLA 在_Cla1Task7底部的 MSTOP 停止执行时、C28xx_CPU1也被暂停(未运行)。 然后我返回并突出显示 C28xx_CPU1、然后单击绿色/恢复、它将返回到_Cla1Task7顶部的 MDEBUGSTOP。

    谢谢、
    Sira
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Sira,
    我未注释 asm ("ESTOP0)。 现在、当我单步执行 asm 文件并在 MSTOP 停止时、CPU1从运行状态切换到暂停状态。 我将突出显示 CPU1并单击"Green/Resume"按钮、但调试器不会在 asm 代码处停止并像第一次那样突出显示 CLA。
    谢谢 Vadim
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Vadim、

    我也看到了一些小问题。 我的 CCS 版本是8.2。 我尝试终止调试会话并重新启动它、这似乎对某些人有所帮助。 请查看这是否有帮助。

    在任何情况下、你是否能够执行你在调试 CLA 代码时设定的操作?

    谢谢
    Sira
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Sira,
    我已经更新了版本8.2、但它没有帮助。 我注意到、如果我不单步执行汇编器、它会起作用、但一旦我单步执行、它会在第一个 MSTOP 之后停止。 我只能调试一个周期、而无需重新加载所有内容。 谢谢 Vadim
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Vadim、

    请参阅 www.ti.com/.../spruge6b.pdf 第15页第3.3节第4点。 我怀疑这与我们的观察有关。

    MPC 在任务已挂起的 MSTOP 处或之后停止
    如果您在"task A"中单步执行或暂停、并且在 MPC 到达之前出现"task B"
    如果你继续单步执行 MSTOP 指令、MSTOP、然后"任务 B"将开始。 基本而言、如果
    在 MPC 到达"任务 A"中的 MSTOP 之前、"任务 B"处于挂起状态、然后在"任务 B"中没有问题
    启动、无需采取特殊措施。

    MPC 在 MSTOP 处或之后停止、没有任务挂起
    在这种情况下、您在"任务 A"中单步执行或暂停、并且 MPC 已达到 MSTOP
    无任务待处理。 如果此时出现"任务 B"、它将在 MIFR 寄存器中被标记、但它是
    如果您通过"task A"的 MSTOP 指令继续单步执行、可以启动、也可以不启动。
    具体取决于新任务何时进入。 要可靠地启动"任务 B"、请执行软复位
    并重新配置 MIER 位。 完成此操作后、您可以启动单步执行任务 B。

    在我们的示例中、ADC 中断触发 CLA 中的任务7、并且任务7的完成会通过 PIE 触发 C28x 的中断、这会导致 CLAISR7 ()在 C28x 上运行。 因此、CLA 只通过 ADC 中断重复执行任务7 (第一次执行任务8一次之后)。

    下面是我执行的步骤:
    1.组装步骤直到 MSTOP。 C28xx_CPU1将暂停、点击它并继续运行它。
    2.返回 CPU1_CLA1、单击"CPU Reset"(CTRL+Shift+R)。 这会将 MIER 从0x00C0更改为0x0000。 将其改回0x00C0。
    3.将 MIFRC 位7修改为1、这将把 MIFR 位7更改为1、并将执行移动到_Cla1Task7顶部的 MDEBUGSTOP。 (或者、您可能必须再次恢复、但我不必这么做)。

    这样、您就可以反复汇编单步执行 CLA。

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

    如果我的回复解决了您的问题、请单击"验证答案"。

    谢谢、
    Sira