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.

[参考译文] 软件复位和下电上电问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1307237/software-reset-and-power-cycle-problem

器件型号:TMS320F280048-Q1

您好!

在我的电源转换器中、会有一条通过 CANBUS 发出的重新启动/复位命令。 我正在尝试实现它、并阅读论坛上的相关内容。

1) 1)根据我的了解、F28003x 有"SYSCTL_simulateReset (SYSCTL_Cause_XRS);"命令。 是否有任何具有更多行的等效代码或代码块来实现 F28004x 的相同任务? 我的同事 F28003x 上使用 sysctl_simulateReset 命令时没有任何问题。

2)我试图通过使用"sysctl_resetDevice ();"命令来实现这一任务,它 一般工作正常,但当一个新的软件被加载时有一些问题。

 如果我在加载新软件后对电路板应用至少一次断电和上电、"sysctl_resetDevice ();"命令可以正常运行。 正常情况下、没有问题。

当我加载了一个新软件、但在加载该软件后、没有关闭电路板并重新加电时、就会出现问题。 在这种情况下、 "sysctl_resetDevice ();"命令将我的器件复位、但在收到命令时码卡住。 MCU 的行为与内部没有软件的行为类似。 我认为我的引导加载程序无法按预期工作。 如果我切断电源并重新为电路板上电、它也会正常工作。

你能评论一下吗?

3) 3)如果在电路板上未加载新软件、则在 MCU 内部执行哪个序列?

提前感谢。  

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

    您好!

    由于专家正在休假、请预计在1月3日之前回复。

    此致、

    辛奇塔

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

    尊敬的 Gokhan:

    Unknown 说:
    当我加载新软件后、如果我没有关闭并重新打开主板电源、则会出现问题

    当您说要加载新软件时,您是否在闪存配置中加载软件?

    是否有任何具有更多行的等效代码或代码块可实现 F28004x 的相同任务?

    如您所述、我们 在 f28004x 器件中没有 SYSCTL_simulateReset 函数。 我们需要使用 SYSCTL_resetDevice 函数,这是一个基于看门狗的复位。

    Unknown 说:
    当我加载新软件后、如果我没有关闭并重新打开电路板电源、就会出现问题。 在这种情况下, "sysctl_resetDevice ();"命令将我的设备复位,但在收到命令时使我的代码卡住

    让我从我身边尝试一下。 我会继续向您发布信息。

    谢谢

    阿斯温

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

    您好、Aswin、

    针对上述问题、我尝试将程序加载到闪存中。

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

    尊敬的 Gokhan:

    Unknown 说:
    当我加载新软件后、如果我没有关闭并重新打开主板、就会出现问题。

    当您使用 CCS 在闪存模式下加载新软件时、仍然连接了 CCS 并处于调试模式。

    使用  SYSCTL_resetDevice ()函数进行复位后,它将卡在 bootinit 函数中。 所以您需要在设备中重新启动电源才能控制回 main ()。 正如您提到的、在断电和加电后、您能够看到它工作、因为它处于调试模式之外。  

    谢谢

    阿斯温

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

    您好、Aswin、

    1)但是我仅将程序加载到闪存中、并且没有运行任何调试会话。 您是如何观察到它卡在 bootinit 函数中的? 如果我学习它、也许它能解决我的其他问题。 请详细说明。

    2) 2)如果我将新软件加载到闪存中、它的运行是否与断电和再次打开时相同?  

    3) 3)在我的实际应用中、断电和再接通电源可能没有变化。 您是否可以提供任何其他方法?

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

    尊敬的 Gokhan:

    、但我只将程序加载到闪存且未运行任何调试会话

    当您说您已将程序加载到闪存时、您是否使用 CCS 转储新软件?

    因此、如果您使用 CCS 转储软件、在加载软件并发送 RESET 命令后、您是否能够从 CCS 断开会话并查看?

    如果我的理解是否正确、在您加载新软件后、您将通过 CAN 总线发送复位命令、器件会重新启动、但您的代码会卡住。

    如果我将新软件加载到闪存,它的运行是否与关闭并再次打开时相同?  [/报价]

    是的、应该是这样。

    谢谢

    阿斯温

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

    您好、Aswin、

    1) 是的、我使用 CCS 加载新软件。

    好的、我将尝试断开 XDS200探针。

    2)

    请告诉我我的理解是否正确,加载新软件后,您将通过 CAN 总线发送重置命令,设备将重新启动,但您的代码将卡住。

    是的,它做了一些像重新启动,但卡在一个我不知道的位置。  

    3)  您是如何观察到它卡在 bootinit 函数中的?

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

    尊敬的 Gokhan:

    是的,它可以使某种东西像重新启动,但卡在一个我不知道的位置。  [/报价]

    如果调试器已连接,则在复位后不会直接进入 main()。 您是否可以在您说被卡住的地方共享控制台映像?

    谢谢

    阿斯温