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.

[参考译文] CODECOMPOSER:重新启动选项似乎没有使系统进入清理状态

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1481023/codecomposer-restart-options-does-not-seem-to-bring-system-to-clean-state

器件型号:CODECOMPOSER
主题中讨论的其他器件:MSPM0G3519

工具与软件:

您好!

CCS  20.0.2.5__1.6.2

MSPM0G3519

我注意到"重新启动"不会使系统进入干净状态。 例如、它没有清除控制寄存器、这会导致系统在连续运行时崩溃。 第二次重新启动会使系统进入清理状态。

在配置"run to"函数之前、它似乎也不会执行任何代码。 复位后、路径中导致它的 BPS 没有命中。

"重启"实际上有什么作用?

此致、
尤金

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

    尊敬的 Eugene:

    "重启"到底有什么作用?

    它只是将程序计数器设置为应用程序的入口点。  

    谢谢

    Ki

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

    尊敬的 Ki:

    这似乎没有道理。 为什么 CCS 有一个 GUI 项会绕过所有应用初始化代码使系统进入不稳定状态?

    属性状态"Run to symbol"中的"Debugger options"。 IMOO、这并不意味着将 PC 设置为符号地址。

    我对"Restart"的好处表示质疑、因为它已经实现、而且它在 CCS GUI 中的位置也是如此。 该参数应该是固定的、或者用于其他一些非常有用的调试功能。

    你不认为吗?

    此致、
    尤金

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

    自从 CCS 出现以来、这种行为一直是一样的。 为什么以这种方式实施、我不知道这方面的细节、但我知道这是有意的和预期的行为。 很可能在那时应用程序(和设备)是更简单的,简单的"重新启动"就足够了。 如果仅仅将 PC 设置到入口点不足够、用户可以使用 GEL OnRestart 回调添加一些额外操作、以使器件处于正确状态。 同意在更复杂的环境中、简单的重新启动是不够的。

    "Debugger options"(属性状态下)"Run to symbol"

    这是加载或重新启动时的自动运行标签。 重新启动时、该选项会在将 PC 设置为入口点标签( 对于 TI 编译器、通常为 c_int00、除非明确指定了其他位置)后将目标运行到指定的标签。 如果指定的标签不存在(或无法到达)、则目标将无限期运行。 如果禁用了此选项、则目标将只是将 PC 设置为入口点、而不执行目标。

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

    尊敬的 Ki:

    事实上,它是像,因为'时代的觉醒'并不使它正确。  

    从用户的角度看它。 CCS GUI 中有一个按钮可以在调试应用程序时使其中断。 用户可能需要查看其他问题、并期望 CCS 工具提供一些帮助。

    如果我们知道这不起作用、并且用户必须实施 GEL 回调、那么为什么没有询问逻辑问题、该按钮的存在是否可以帮助用户? 在这种情况下、我更希望有系统复位按钮。 至少它更有用和用户友好,然后浏览子菜单项目层。

    您能否至少对此进行深入研究并评估是否需要重新提出该按钮、因为它对任何重要的应用来说都是无用的?

    此致、

    尤金

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

    重新启动选项(由于当前受支持)仍然很常用。 期望重启选项具有当前行为。 我们不打算改变这种行为、但我们可以随时根据需要添加具有其他行为的其他按钮。

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

    尊敬的 Ki:

    我不太明白如果在 CCS 提供的 mspm0g3519.gel 中已定义了 OnRestart ()回调如何实现?

    /*
     *重新启动程序时调用 GEL 回调函数。
     */
    OnRestart()
      if (GEL_MatchesConnection ("XDS")){
        GEL_Halt();
        GEL_EvalOnTarget ("CS_DAP_0"、"PWRAP_DPREC0 = PWRAP_DPREC0 | 0x00020000"、0);
        GEL_AdvancedReset ("系统复位"、1);
      }
    }

    是否期望用户进入 CCS 安装并修改其中的大量文件?

    此致、

    尤金

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果已在 CCS 中定义了 OnRestart ()回调(提供的 mspm0g3519.gel?

    它因每种用例而异。 我将提请器件专家注意该主题、以便进一步发表意见。

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

    尊敬的 Eugene:

    您需要系统重置功能、而不是重新启动功能。 系统复位将在器件上执行 SYSRST、该器件将所有外设设置为默认设置(包括 CPI)、CPU 子系统复位将执行 CPU 复位、这将复位 CPU 设置(SP、PC、R1-R15等)、重新启动将堆栈指针更改为 MAIN 的开头。

    此致、
    Luke

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

    尊敬的 Luke:

    此处的重点是"Restart"按钮的效用、而不是系统重置选项的可用性。 如果要调试的应用程序崩溃、为什么要使用此按钮?

    此致、

    尤金

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

    尊敬的 Eugene:

    我经常使用重新启动功能、没有遇到任何崩溃。 您是否能够使 CCS 20因我们的某个示例代码而崩溃? 如果可以、您能告诉我我可以调查哪个示例、我目前还没有能够复制您所说的崩溃内容。

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

    尊敬的 Luke:

    对我来说、确定我的应用程序的问题就足够了、因为我需要处理这个问题。 这是系统需要进行的非平凡设置-通过复位传递到入口点的多个运行时间。

    这是我的观察。 使用 mspm0g3519时、control=3。 暂停、重启、未看到 CONTROL=0。 最终会导致硬故障。 第二个暂停、重新启动 会以某种方式清除控制。 所有这些都不会在系统或 CPU 复位时发生、并且代码在没有 CCS 的情况下可以可靠地工作。

    尤金

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

    尊敬的 Luke:

    您是否能够让 CCS 20在遇到我们的某个示例代码时崩溃? [报价]

    为了澄清一点、我认为 Eugene 认为他的目标应用程序执行会"崩溃"、而不是 CCS IDE 本身。

    Eugene -如果我的假设不正确、请告诉我。

    谢谢

    Ki

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

    是的、这是正确的。 无论 OnRestart()回调如何、首次重新启动似乎都无法正确地重置 MCU、请参阅上文。

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

    尊敬的 Eugene:

    您是否可以使用 重置功能 而不是此处重新启动? 阅读说明应该是正确的过程。 如果要保留除仅复位 CPU 之外的所有外设、我认为我们没有专门用于此目的的函数。

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

    尊敬的 Luke:

    当然、我可以。

    但是、这不是讨论的重点。 重新启动是直接 GUI 元素、使用 OnRestart ()回调、它应该可以工作、但不工作。 IHO、使用 CCS GUI 本身很麻烦、欢迎提供任何 GUI 帮助! 那么、如果无法将目标置于所需状态、则 Restart 的点是什么?

    此致、

    尤金

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

    重启功能的行为实际上与预期的一样。 重新启动不应设置器件的任何值、除非将程序恢复到启动状态、而复位应将值设置为其默认值。  

    重新启动

    复位

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

    尊敬的 Luke:

    我们正在圆中。 如果未正确初始化目标、其行为如何? 我提供了一个示例、其中重启会导致目标出现硬故障异常。 为什么您一直告诉我这是正确的预期行为?

    尤金

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

    是的尤金,这是正确的和预期的行为,重新启动只会将程序设置回 main 的开始,但是  不将寄存器设置为默认状态。  如果要将器件设置为默认状态、则应使用重置 API 和行为。 之所以出现这种情况、是因为栈指针行为本身发生了改变(Arm 内核使用 PSP 而非 MSP)、但仍按预期出现、并且根据行业已确定的重新启动和复位定义进行设计。

    此致、
    Luke

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

    尊敬的 Luke:

    解决这个问题的方法似乎是设置这个特定的设置

    为什么 OnRestart ()回调在没有此功能的情况下无法工作?

    尤金

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

    尊敬的 Eugene:

    当调用 Restart (或程序加载)时、该设置将调用 Reset。

    此致、
    Luke