Watchdog timer

Watchdog timer

Watchdog timer

Un watchdog permet de mettre en place une surveillance du système pour vérifier qu'il n'est pas planté ou bloqué.
100% Complete

Un Watchdog est un processus qui permet de rebooter une pycom lorsqu'elle ne répond plus au bout d'un certain timer.

On initialise un watchdog en lui donnant un temps à décompter. Si le temps est écoulé il reboot la Wipy. Il est possible de remettre à 0 le décompte, on dit alors qu'on "nourri" le watchdog.

Attention, une fois le watchdog démarré, il n'est pas possible de le reconfigurer ou d'en changer la valeur.

Exemple de mise en place :

from machine import WDT

watchdog = WDT(timeout=2 * 1000)  # enable it with a timeout of 2 seconds

# fait une tâche courte (1)

watchdog.feed() # Réinitialisation du watchdog

# fait une tâche courte mais qui peut bloquer le programme (2)

watchdog.feed()

# fait une tâche très longue > 2 secondes (3)

watchdog.feed()

print("Au revoir")

Dans cet exemple on met en place un watchdog qui doit être nourri toutes les 2 secondes. Si ce n'est pas le cas, il reboot la Wipy.

  • Dans le cas (1) : le watchdog est "nourri" avant les 2 secondes fatidiques (son timer est remis à 0) -> le programme continue
  • Dans le cas (2) :imaginons le cas d'une mesure pouvant parfois se planter ou prendre plus de temps que prévue. si le temps d’exécution que prend cette tâche est supérieur à 2 secondes, le watchdog fait rebooter automatiquement la Wipy.
  • Dans le cas (3), le temps d’exécution de cette partie est toujours supérieur à 2 secondes le watchdog  ne serra donc jamais nourri et rebootera toujours la Wipy -> on ne verra donc jamais "Au revoir" à l'écran.

Attention : la mise en place d'un watchdog peut entraîner des reboots de Wipy de façon intempestif, il peut alors être très dur de se connecter sur la Wipy.

Copyright © 2015 Alex-design.fr All rights reserved.