Nachdem ich Embedded Code nach FreeRTOS verschoben habe, bleibt mir ein interessantes Dilemma über den Watchdog. Der Watchdog-Timer ist ein Muss für unsere Anwendung. Die Verwendung von FreeRTOS war auch für uns ein großer Gewinn. Wenn die Anwendung mehr Einzeltasking war, fütterte sie den Watchdog zu bestimmten Zeitpunkten in seinem logischen Ablauf, so dass wir sicherstellen konnten, dass die Aufgabe rechtzeitig einen logischen Fortschritt machte.Strategie für das Füttern eines Watchdogs in einer Multitask-Umgebung
Mit mehreren Aufgaben, das ist jedoch nicht einfach. Eine Aufgabe könnte aus irgendeinem Grund gebunden sein, ohne Fortschritte zu machen, aber eine andere ist in Ordnung und macht genug Fortschritte, um den Wachhund glücklich zu ernähren.
Ein Gedanke war, eine separate Aufgabe zu starten, nur um den Watchdog zu füttern, und dann einige Zähler verwenden, die anderen Aufgaben regelmäßig erhöhen, wenn die Watchdog-Aufgabe ankreuzen würde, würde sicherstellen, dass alle Zähler wie Fortschritt angezeigt wurde bei allen anderen Aufgaben, und wenn ja, dann füttere den Watchdog.
Ich bin gespannt, was andere in solchen Situationen getan haben?
Wir ziemlich viel getan haben, was Sie gesagt haben. Es gibt einen Kicker und Aufgaben mit bekannten Zeiträumen checken mit dem Kicker ein. Wenn diese Aufgaben nicht rechtzeitig ausgeführt werden, wird der Kicker nicht ausgeführt. Der Kicker sollte der Thread mit der niedrigsten Priorität im System sein. Wenn das System keine Zeit hat, um zum Kicker zu gelangen, wird das Gerät zurückgesetzt. (Das gibt dir auch Schutz auf dem Kicker selbst.) Ich bin jetzt beschäftigt, werde aber später versuchen, eine längere Antwort zusammenzustellen. – Ross
Ich erinnere mich an eine ähnliche Frage innerhalb des letzten Monats, sicherlich mit dem eingebetteten Tag. – Dan