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.

[FAQ] [参考译文] 【常见问题解答】无法通过使用 CCS 更改循环变量来从 C7 内核中的无穷环路返回

Guru**** 2439710 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1543894/faq-not-able-to-return-from-infinity-loop-in-c7-core-by-changing-the-loop-variable-using-ccs

部件号:AUDIO-AM275-EVM


工具/软件:

在 CCS 的“Variables"选项“选项卡中更改循环变量、无法从 C7x 内核中的无穷循环返回。 在以下代码中-  

void loop_forever()
{
    volatile uint32_t loop = 1U;
    while(loop)
        ;
}

我在 CCS 的“Variables"面“面板中将循环变量从 1 更改为 0。 但我仍然无法从无限循环返回。

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

    此问题可能是由该问题引起的、因为通过 CCS 更改循环变量后、在检查循环条件时无法正确读回该变量。 有一个权变措施、通过它可以脱离无限循环。 请逐步遵循该流程。

    1.在 CCS 的 Variables 选项卡中将循环变量从 1 更改为 0。  

    2. 打开 Disassembly 【视图】并转到“Loop(循环)“部分。  

    3.注意用于作出分支决策的注册表。 在本例中、这恰好是 A0 寄存器。  

    4.可以看出 A0 加载了位置 D15 (0x10) 中存在的值。 执行一个 装配步骤进入 下一行。 [必须跳到下一行。 否则 A0 寄存器将反复加载值“1",“,您、您将无法退出循环]

    5.转到 模式 CCS 中的【视图】选项卡、然后导航至“CPU 寄存器“->"通用“通用“->"A0"。“。</s>“

    6.将 A0 寄存器的值从 1 更改为 0 并执行 DO 步进或步进以退出无限循环。

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

    尊敬的 Ritapravo:

    是否可以将循环更改为 loopFlag 并将其定义为全局变量?

    易失性 uint32_t loopFlag = 1;

    空 loop_forever()

      while (loopFlag)

      {

      }

    }

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

    尊敬的 Ming:

    我尝试了同样的东西,把'loopFlag'作为一个全局变量。 但仍然无法通过从 CCS 的“Expressions"选项“选项卡中更改 LoopFlag 变量来退出无限循环。 这里也需要完成相同的解决方法。

    此致、
    Ritapravo