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 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 ()回调如何实现?
是否期望用户进入 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