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.

[参考译文] CC1312PSIP:看门狗功能行为。 I'm 使用 SDK 7.10.02.23和 IAR 9.32.1

Guru**** 2390735 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1312717/cc1312psip-a-watchdog-function-behavior-i-m-using-sdk-7-10-02-23-and-iar-9-32-1

器件型号:CC1312PSIP

您好!

 

我们有一些与安全装置机制相关的 unclarity:

在我们的系统中、有一个引导加载程序、用于启动应用程序。 无论是在引导加载程序还是在应用程序中、我们都会启动看门狗机制。

在引导加载程序中、我们运行以下代码以启动引导加载程序:

 

  watchdog_init();

  Watchdog_Params_(参数(&P);

   params.callbackFxn =(Watchdog_Callback)观察回调;(回调运行 SysCtrlSystemReset())

   params.debugStallMode = Watchdog_debug_staller_on;

   params.resetMode = Watchdog_reset_on;

   WatchdogHandle = Watchdog_open (0、params);

 

当引导加载程序完成运行后、在跳转到应用程序之前、我们运行以下代码以停止引导加载程序:

 

if (watchdogHandle)

   {  

        WATCHDOG_CLOSE (watchdogHandle);

   }

 

之后、我们会在应用程序本身中启动看门狗:

 

   watchdog_init();

   Watchdog_Params_(&WP);

   wp.callbackFxn = watchdogDriverCallback;

   wp.debugStallMode = Watchdog_debug_staller_off;

   wp.resetMode     = Watchdog_reset_on;

   G_WatchdogHandler = Watchdog_open (0、&WP);

 

在调试过程中、我们在应用程序中禁用了看门狗的启动、并尝试了一些场景。 因此、我们看到了以下行为:

 

  1. 在应用代码中放置了"while (1)"循环。 在本例中、我们看到器件确实会重新启动、并且会根据引导加载程序看门狗的时序确切地重新启动。
  2. 只需正常运行应用程序即可。 在本例中、我们看到设备定期重新启动、重新启动的时间没有确切的一致性。

 

对于此类行为、我们可以找到的唯一解释是:

WATCHDOG_CLOSE 并不是真正关闭看门狗、而是继续运行。 在应用程序中、我们初始化新的看门狗、取代在引导加载程序中启动的看门狗。

因此、如果应用程序未启动其看门狗、引导加载程序的看门狗会继续在后台运行。

 

您能澄清一下这个问题吗?