Ich möchte einen Code für den Watchdog-Timer in meinen Quellcode einfügen, damit das Board automatisch zurückgesetzt wird, wenn Programme hängen bleiben. Ich verwende Mediatek Linkit One Board.
Sie können an geeigneter Stelle in Ihrem Programm eine Funktion erstellen, die "den Hund füttert". Wenn der Hund nicht gefüttert wird, läuft der Watchdog-Timer ab und setzt das Programm zurück. Sehen Sie sich die Mikrocontroller-Dokumentation an, um zu sehen, wie dies implementiert wird. Im Allgemeinen muss der Watch-Dog-Timer richtig konfiguriert (mit geeigneten Prescaler-Werten), aktiviert und dann regelmäßig gelöscht werden, bevor der Timer abläuft. Die API-Referenzen von Mediatek Labs sehen nicht so aus, als würden Sie Zugriff auf diese Funktionalität auf niedrigerer Ebene erhalten, aber das technische Briefing des SOC-Prozessors für den ARMyEJ-S enthält einen Watchdog-Timer (S. 8), der die einzige Erwähnung ist. Wenn Sie in der Dokumentation keine Antwort darauf finden, würde ich sie kontaktieren und direkt danach fragen und etwas Druck auf ihre Entwickler ausüben (wie es bereits in ihrem Forum angefordert wurde).
Ich habe keine Ahnung, was ein Mediatek Linkit One-Board ist (und Sie haben keinen Link angegeben), aber im Allgemeinen können Sie das nicht. Wenn Ihr Programm hängt, wie wird der Watchdog-Code ausgeführt?
Üblicherweise müssen Watchdogs in Hardware implementiert werden – entweder intern durch einen Teil der CPU, der unabhängig vom Anwenderprogramm läuft, oder, wenn das nicht möglich ist, wird ein externer Watchdog eingesetzt. Ihr Programm würde den externen Watchdog regelmäßig zurücksetzen, indem es einen Impuls sendet. Wenn der externe Watchdog innerhalb einer bestimmten Zeit keinen Übergang sieht, wird ein Reset generiert.
Roger Rowland
Bruce Abbott