gpt4 book ai didi

c - 如何在微 Controller 硬件复位之前保存一些数据?

转载 作者:行者123 更新时间:2023-12-04 01:47:53 25 4
gpt4 key购买 nike

我正在研究 Freesacle 微 Controller 之一。该微 Controller 有多个复位源(例如时钟监视器复位、看门狗复位等)。
假设因为看门狗,我的微 Controller 被重置。如何在重置发生之前保存一些数据。我的意思是,例如,我怎么能理解在看门狗重置之前程序计数器在哪里。使用这种方法,我想知道我在哪里有导致看门狗重置的错误(换句话说,长过程)。

最佳答案

大多数飞思卡尔 MCU 的工作方式如下:

  • 看门狗复位后保留 RAM。但可能不是在 LVD 复位之后,当然也不是在上电复位之后。在大多数情况下,这是完全没有记录的。
  • MCU 将有一个状态寄存器,您可以在其中检查复位原因(例如 HCS08、MPC5x、Kinetis),或者它具有针对不同复位原因(例如 HC11、HCS12、Coldfire)的特殊复位 vector 。

  • 重置后无法保存任何内容。重置发生,只有在此之后您才能找出导致重置的原因。

    但是,可以将一块 RAM 保留为特殊段。上电复位后,您可以通过将所有内容设置为零来初始化此段。如果您得到看门狗复位,您可以假设该 RAM 段仍然有效且完好无损。所以你不初始化它,而是保持原样。此方法使您能够在重置期间保存变量值。可能 - 对于大多数 MCU 系列来说,这没有得到很好的记录。我至少在 HCS08、HCS12 和 MPC56 上使用过这个技巧。

    至于程序计数器,你就不走运了。它被重置,无法恢复。这意味着找出看门狗重置发生位置的唯一方法是将断点一点一点地向下移动代码的乏味老派方法,运行程序并检查它是否到达断点。

    尽管对于像 MPC56 或 Cortex M 这样的现代 MCU,您只需检查跟踪缓冲区并查看导致复位的代码。您不仅可以获得 PC,还可以查看 C 源代码。但是您可能需要一个专业的、无 Eclipse 的工具链来执行此操作。

    关于c - 如何在微 Controller 硬件复位之前保存一些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54549077/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com