FreeRTOS & watchdog

paoloferrari wrote on Friday, May 14, 2010:

Using recently FreeRTOS and I need advice:
which is the best place to reset the watchdog?
- In idle task
- A task with lowest priority
- A task with highest priority
- Elsewhere

Any comments are welcome

edwards3 wrote on Friday, May 14, 2010:

It depends on what you want the watchdog to do. Normally you will kick the watchdog after performing a number of tests on the entire system, for example, are the correct number of tasks running, has each task executed the expected number of times, have any tasks failed to execute since the check was last performed, etc. This can be done from a task, but the tasks priority will depend on the rest of the application functionality.

richard_damon wrote on Saturday, May 15, 2010:

I generally put the watchdog monitor task near the bottom of the priority list (there may be some non-critical background operations below it). Placing it low adds a check for CPU starving by some other task, As Edwards says, it should check that all the critical tasks are still alive and functioning.

paoloferrari wrote on Saturday, May 15, 2010:

thanks guys for your answers

another question:

To my mistake or for any reason FreeRTOS crashes.
I want a hardware watchdog that in this case reset the system.
To reset this when everything is ok, the best place is a task of low or high priority?

Thanks again

jakbird wrote on Monday, May 17, 2010:

In one app (ARM7) I set up a high priority task as a watchdog, triggered once per second from the RTC timer.  The watchdog checks the pending messages in several application queues to make sure none are maxed out for several seconds, indicating a hung process.  I also reset an external hardware watchdog at the same time.

For another design I put the independent watchdog (STM23) in the system tick hook routine, to guarantee the RTOS timer doesn’t stop.
  Jack Peacock

paoloferrari wrote on Tuesday, May 18, 2010:

Thanks for your comments.
I think I found the right solution for my application.

Thanks again to all

oahmad2 wrote on Friday, May 28, 2010:

Do these answers change for uCs with MPUs such as the Cortex M3? 

For example, I assume the best place to put the watchdog functionality would be in a privileged task