Gast
#829096
Hallo allerseits Ich arbeite zur Zeit an einer grösseren uC-Software mit einem kommerziellen RealTimeOS. (ca. 2000 Sourcedateien, Binary-Executable ca. 3 MByte) Die Software besteht aus zahlreichen Tasks unterschiedlicher Priorität. Einer der Task ist der WatchdogTriggerTask WDT(), welcher den Watchdog alle 250ms triggern soll, der Watchdog-Timeout liegt bei ca. 2.5 Sekunden. Die Software muss beim Kunden über Wochen zuverlässig laufen, ohne Ausfälle oder Restarts. Die Rechenleistung des Prozessors ist ausreichend bemessen, die CPU-Belasung liegt ca. zwischen 10..40% Bisher lief die SW stabil auch mit einer beliebig tiefen WDT()-Prio. Kürzlich ist jedoch ein neuer Task hinzugekommen, welcher in gewissen Situationen den WDT() für >2.5 Sekunden nicht mehr zu Zug kommen lässt, wenn die WDT()-Prio tiefer ist. => Restart Nun wurde bei uns im Geschäft eine Diskussion entfacht, über die Frage, welche Priorität der WatchdogTriggerTask haben soll. Es gibt da unterschiedliche Ansichten: ______________________________________________________ Der WDT() soll die höchste Priorität haben: => Kein Reset solange der Task-Scheduler überhaupt noch läuft. => Keine Kontrolle ob alle Tasks genügend Rechnleistung abkriegen, bzw. ob niedrig priorisierte Task längere Zeit blockiert werden. Der WDT() soll die gleiche Priorität haben, wie der Task mit der niedrigsten Priorität (ausgenommen IdleTask) => Kein Reset, solange auch Tasks mit niedriger Prio regelmässig Rechenzeit abkriegen. => Risiko, dass auch Task mit tiefer Prio bei Überlast den WDT() zu lange blockieren und ein SW-Restart auftritt. Der WDT() soll die niedrigste Priorität haben (ausgenommen IdleTask) => kein Reset, solange auch noch regelässig IdleTime verfügbar ist. => Risiko, dass auch Task mit tiefer Prio bei Überlast den WDT() zu lange blockieren und ein SW-Restart auftritt. Weitere Möglichkeiten...??? ______________________________________________________ Ich bin einfach an verschieden Meinungen und Ansichten interessiert, bzw. möchte wissen, wie ihr dies bei euch so macht. Oder wäre es sogar sinnvoll, die WDT() Priorität für Test und Messungen anders zu wählen, als für die SW die an den Kunden geliefert wird? Bin gespannt auf eure Ansichten. Andy