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.

[参考译文] CC2640R2F:复位期间保留变量

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1388873/cc2640r2f-retaining-variables-during-reset

器件型号:CC2640R2F

工具与软件:

尊敬的社区:

我的固件在极少数情况下挂起并停止广播、这在我的调试中无法轻松重现。 作为一项修复、我希望实施看门狗计时器以使处理器恢复正常运行。  

但是、在 WDT 复位期间、我继续运行代码所需的几个变量会复位。 我无法将它们写入系统中存在的 NVM 存储器、因为它们将每秒更新一次。 因此、NVM 的擦除周期将非常频繁。  

我可以通过什么方法在 RAM 中保留一些在复位期间不会被擦除的变量?  

请提供建议。

好的

Lakshmi

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

    尊敬的 Lakshmi:

    有一些指示表明您可以将一些变量存储在 RAM 中、这些变量在复位期间未被擦除、如特定的 OAD 示例所示:

    https://e2e.ti.com/f/1/t/892935  
    https://e2e.ti.com/f/1/t/967477
     
    https://e2e.ti.com/f/1/t/1226161 

    由于不能完全依赖这一点、我建议配置 看门狗 TI 驱动程序 、以便您可在看门狗复位之前将值存储到非易失性存储器中、而不是不断更新非易失性存储器值。  请参阅 CC26XX 特定实施看门狗示例以了解更多详细信息

    此致、
    Ryan  

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

    您好、Ryan、


    >>我的建议是配置 看门狗 TI 驱动程序 、以便您可以在看门狗复位之前将值存储到非易失性存储器中。

    我一开始就想到这一点。 但出于某种原因、我的 wachdog 回调在挂起期间未被调用。 问题可能是什么?  

    好的

    Lakshmi

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

    您是否确定看门狗导致了器件复位(SysCtrlResetSourceGet)?  是否已经存在可以阻止进入看门狗回调的 HW 断言?  您如何配置看门狗 TI 驱动程序?  我建议您查阅 调试指南

    此致、
    Ryan

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

    我创建了一个事件,该事件将执行 while ()无限循环,导致看门狗超时而不重新加载。 我确信复位是由看门狗超时引起的。 我在 WDT 回调中点亮了一个 LED、但未发生此情况。  

    此外、当我连接了调试器并尝试在回调中命中断点时、发生复位时、JTAG 与目标上断开连接。 如何在 WDT 复位之前命中断点?

    好的

    Lakshmi

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

    请尝试进一步评估和熟悉看门狗示例回调机制、然后在您的应用代码中实现类似版本、同时在您的 IDE 内部进行进一步调试。

    此致、
    Ryan