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.

[参考译文] RTOS/TM4C129CNCZAD:在从休眠状态唤醒并执行软复位后、代码不会从引导加载程序启动。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/620412/rtos-tm4c129cnczad-after-waking-up-from-hibernation-and-performing-soft-reset-the-code-does-not-start-from-bootloader

器件型号:TM4C129CNCZAD
主题中讨论的其他器件:TM4C129XNCZADSYSBIOS

工具/软件:TI-RTOS

大家好、

我希望你能做得好。

我正在使用 TM4C129XNCZAD 休眠模式、并且在从休眠模式唤醒后遇到软复位问题。 我在下面列出了详细信息。 请查看这些内容。

在我们的项目中、我们将使用基于 TI RTOS 的引导加载程序、并将 ROM 地址从0x00000000 分配到0x027FFF。 主应用程序代码也基于 TI RTOS、出现在0x00029000至 0x000FAFFF 的 ROM 地址上。 在主应用程序代码中、关断代码将 MCU 置于休眠模式、并且篡改事件0 (PM7)和1 (PM6)配置为将 MCU 从休眠状态唤醒。 从休眠状态唤醒后、在篡改事件处理程序中、我 将清除篡改事件、在禁用篡改模块后、我将执行软复位。 我在从休眠模式唤醒时遇到问题、下面将详细介绍这些问题。

(i)使用引导加载程序时、从休眠状态唤醒后、控制不会返回到引导加载程序。 如果在关断功能中,我执行软复位,而不是将 MCU 置于休眠状态,则代码从引导加载程序开始执行。

(ii)如果我不使用引导加载程序并将主应用程序配置为从 0x00000000启动、则在从休眠模式唤醒后工作正常。

如果有人有使用休眠的经验、请告诉我、我在这里遗漏了什么会导致休眠问题。

谢谢、

Muhammad Shuaib.

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

    您好、Muhammad、

    我不是休眠领域的专家、但考虑到我的要点、以下几点是准确的:

    1. 引导加载程序已在没有休眠的情况下进行测试、并按预期工作
    2. 主代码已在没有引导加载程序的情况下从休眠状态开始进行测试、并按预期工作

    那么、我想重点关注的是您对篡改中断的看法:"在从休眠状态唤醒后、在篡改事件处理程序中、我 将清除篡改事件、在禁用篡改模块后、我将执行软复位。"

    这似乎是额外的软件执行部分、可能会丢弃引导加载程序、除非省略了一些其他信息。 在完成篡改事件处理程序和软复位后、程序计数器会正确地指向引导加载程序以执行代码吗? 可能值得比较一下篡改事件处理程序的软复位和修改后关断功能的软复位后器件的状态、看看这是否会导致任何差异。

    您能否提供代码设置、以便在篡改事件处理程序完成处理后从模板事件唤醒、进入篡改事件处理程序以及与进入引导加载程序相关的任何配置/定义等?

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

     您好、Ralph、

    感谢您的快速回复。

    在我的代码经历了很多小时的困难之后,我尝试添加 NMI 处理程序 ,我正在主应用程序中使用的处理程序,在引导加载程序中使用,并且...不...。。。 它发挥了作用。  对于最终可能在这里寻求有关"如何在基于 TI RTOS 的项目中添加 NMI 处理程序"的帮助的任何人、这里是您的操作方法。 将以下代码行放入项目的 cfg 文件中。

    var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');

    m3Hwi.nmiFunc ="&NMiperEventHandler";

    其中、NMITamperEventHandler 或任何其他全局函数将是用于处理 NMI 的自定义函数。

    在结束本主题之前、我只需要再问一个问题。 即使在软复位(在主应用程序的 NMI 处理程序中)之后、篡改事件是否也会挂起并在我放置在引导加载程序中的 NMI 处理程序中被清除?

    再次感谢所有帮助。

    此致、

    Muhammad Shuaib.

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

    老实说,我不确定。 如果您正在使用的 NMI 处理程序软复位是来自 TI 源代码示例的内容、如果您可以指向它、我可以查看或向专家提出您的问题。