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.

[参考译文] CC1312R:调试中的硬件看门狗异常行为

Guru**** 2555260 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/990138/cc1312r-hw-watchdog-strange-behavior-in-debug

器件型号:CC1312R
Thread 中讨论的其他器件:SYSBIOS

您好!

在调试模式下的应用中、我已经使用这些设置(RESET_OFF 和 DEBUG_STALL_ON)设置了硬件看门狗:

    // --- Enable and run HW WDT ---
    // Call HW watchdog initialization functions
    Watchdog_init();

    // Create and enable a Watchdog with resets enabled
    Watchdog_Params_init(&hdWdParams);
    hdWdParams.callbackFxn = (Watchdog_Callback)watchdogHwiCallback;

    hdWdParams.resetMode = Watchdog_RESET_OFF;
    
    hdWdParams.debugStallMode = Watchdog_DEBUG_STALL_ON;
    hwWatchdogHandle = Watchdog_open(CONFIG_WATCHDOG_0, &hdWdParams);
    if (hwWatchdogHandle == NULL) {
        // Error opening HW Watchdog
        SwReset(enErr_openingHwWatchdog);     // Do SW reset
    }
    // Set HW WDT timeout period
    wdTickValue = Watchdog_convertMsToTicks(hwWatchdogHandle, HW_WDT_TIMEOUT_MS);
    Watchdog_setReload(hwWatchdogHandle, wdTickValue);

运行应用程序时、我始终会收到看门狗意外的启动。 尝试解释我发现在调试函数 Watchdog_clear (hwWatchdogHandle)中看起来不会重新加载 WDT 计时器的原因、因此我的问题是:

调试中的硬件看门狗行为有什么特别之处?  

 

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

    您好!

    请参阅有关看门狗的技术参考手册文档。 调试/停止标志允许您暂停调试会话、无论是否暂停看门狗计时器。

    https://www.ti.com/lit/swcu185 

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

    您好、Marie、

    我知道  DEBUG_STALL 设置的含义。 在文档中、我找不到我的问题的答案、因此让我以不同的方式向他们提问。 在我的项目中、我将使用 TI SYSBIOS 和看门狗驱动程序。 当我不在调试中时(没有连接的调试器)看门狗行为没有问题、所以我的所有问题都与调试器连接时的情况相关、器件处于 DEBIG 会话中。

    1.我在办公桌上发现 Watchdog_clear()在 调试会话期间不会重新加载 WDT 计时器。 我可以看到 在 Watchdog_setReload ()之后重新加载,但在 Watchdog_clear ()之后不会重新加载。    Watchdog_clear()是否应该始终重新加载 WDT 计时器-没有连接的调试器和连接的调试器(在调试过程中),还是有一些没有文档记录的情况?  

    2.在器件正常运行期间(未连接调试器)、WDT 在 MCU 待机状态下停止。 问题是:在调试过程中、当程序进入"statndby "时 WDT 是否会停止?或者由于连接的调试器、WDT 永远不会停止?

    此致、

    Dimitar Devedzhiev  

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

    您好、Dimitar、

    1. 您能告诉我您如何找到它的确切步骤吗?

    2.在待机期间、看门狗使用睡眠时钟。 由于这比常规时钟慢得多、因此看门狗会暂停、效果大致相同。 由于器件在待机模式下发生故障的可能性非常低、因此这被视为最佳做法。

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

    您好、Marie、

    1.关于"您能告诉我您如何找到它的确切步骤吗?"

    运行与下面类似但没有这些 CPUDELUDELU延迟 的代码。 今天再次测试它我发现 Watchdog _clear()不能工作,只有我逐步测试它,但如果在 Watchdog _clear()执行后一段时间内我没有停止 MCU,则会重新启用 WDT (在这种情况下工作)。  

        while(1)
        {
            Watchdog_clear(hwWatchdogHandle);
            CPUdelay(10000 * (48 / 4));       // 10ms
            CPUdelay(500000 * (48 / 4));       // 500ms
            __asm volatile (" NOP ");
        }
     

    关于:"在待机期间、看门狗使用睡眠时钟。 由于这比常规时钟慢得多、因此看门狗看起来会暂停"。  

    这是否意味着在这种情况下 MCU 处于待机模式的时间受看门狗值的限制、或者仅 WDT 仍在运行、但在待机模式下不会发生实际的 WDT 复位? 我将创建一个可待机几天的器件、因此如果存在限制、最好从现在开始了解。  

    此致、

    Dimitar Devedzhiev

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

    您好!

    1、如果您单步执行代码、看门狗不会被清除、这是正确的。  

    2.实际上我不得不道歉,我之前在这个问题上的帖子是错误的。 当器件处于待机状态时、看门狗未运行。