I am using the freeRTOS V7.42 and wish create software Watch dog timer mechanism in scheduler, please comment my methodology:
-To avoid the deadlock task happen, each task main loop need send increased hearbeat counts message to queue. Then scheduler can watch the counts changes, to decide to delete the task and re-create the task or not.
-Add a “reset hardware watch dog timer” in scheduler in case scheduler is shutdown then hardware reset while watchdog timer is overflow.
Look forward to receiving your advices soon.
That would work, but I’m not sure if a queue is needed.
The demo tasks in the FreeRTOS distribution do something similar. They maintain a loop counter variable that is periodically checked by a watchdog task called the check task. If a loop counter stops then the task must be dead or stuck in a loop or something and the check task knows something is wrong. If the task itself knows something is wrong it can communicate that to the check task by not increment its loop counter. In your case the watchdog or check task would be responsible for kicking the hardware watchdog after it has monitored all the other tasks.
- I think modification of scheduler is not good idea instead of creating the ‘continuous processing’ task with lowest priority to watch every heartbeat message of tasks. And if whole system is crashed, of acuse this lowest priority task can not run to reset the hardware watch dog timer, then hardware reset happen…
Please comment it.