Notwendigkeit eines externen Watchdog-Timers

Wozu wird ein externer Watchdog-Timer für einen Mikrocontroller benötigt?

Die meisten Mikrocontroller sind mit einem internen Watchdog-Timer ausgestattet. In einigen Schaltungen verwenden sie jedoch einen externen Watchdog-Timer (z. B. PIC16F1824).

Antworten (7)

Einige Produkte müssen Sicherheitsanforderungen erfüllen, die entweder vom Hersteller festgelegt werden oder internationale Sicherheitsnormen wie IEC 60730-1 oder die ältere UL1998 erfüllen, die noch in den USA verwendet wird. Die interne Watchdog-Funktionalität in einem bestimmten Mikrocontroller kann für die Verwendung geeignet sein oder nicht. In einigen Fällen kann ein externer WDT in Kombination mit dem internen WDT verwendet werden.

Bestimmte Mikrocontroller wie die Hercules-Serie von TI nehmen sicherheitskritische Systemanwendungen sehr ernst und erfüllen eher strenge Anforderungen, sind jedoch möglicherweise nicht für kostenempfindliche Anwendungen geeignet.

Typischerweise ist die WDT eine von mehreren Möglichkeiten, die Wahrscheinlichkeit zu verringern, dass ein Ausfall katastrophale Sachschäden oder Personenschäden verursacht. Andere Dinge wie Speicherschutz zum Erkennen unerwarteter Zugriffe auf den MCU-Speicher oder Programmabrufe aus unbenutztem Speicher werden normalerweise in Verbindung mit einem WDT verwendet.

Beispiele für kostengünstige Produkte, die sicherheitskritische Funktionen ausführen, sind Kfz-Subsysteme, Garagentorsteuerungen und Gas-Zündsteuerungen (Erdgas oder Propangas), die in Öfen, Trocknern und Warmwasserbereitern verwendet werden . Natürlich sind auch viele Medizin- und Luft- und Raumfahrtprodukte sicherheitskritisch, aber es kann genügend Raum für Redundanz und andere Ansätze geben. In einigen Fällen kann es sein, dass es keinen leicht erreichbaren sicheren Zustand gibt – zum Beispiel in einem Flugzeug.

Im Idealfall ist der Watchdog-Timer sehr einfach, unabhängig von der MCU (er sollte beispielsweise eine eigene Taktquelle und möglicherweise einen Taktmonitor haben), kann (per Software) nicht auf eine längere Zeit eingestellt werden, als dies durch einen Softwarefehler zu Schaden führen würde. und bringt das System in einen sicheren Zustand, wenn es nicht rechtzeitig "gestreichelt" wird, entweder mit einer Zeitüberschreitung oder in einer Fensterweise, so dass zu häufige Rücksetzungen erkannt werden können. Beispielsweise kann eine WDT in einer Wärmeregelungsanwendung auf wenige Sekunden eingestellt werden, da kein Schaden möglich ist, wenn der Mikrocontroller für diese Zeit blockiert.

Das WDT ist am nützlichsten als Teil eines Ansatzes auf Systemebene für Zuverlässigkeit und Sicherheit.

Ein Watchdog-Timer kann vor Hardware-Bugs in fehlerhaften ... hochmodernen Mikrocontrollern schützen. Einer, den wir kürzlich verwendet haben, von einer bekannten Marke, hatte I/O-Pins, die gelegentlich ihre Interrupts verpassten, manchmal nicht richtig starteten und bei denen der integrierte Watchdog manchmal das System nicht in einen bekanntermaßen guten Zustand zurücksetzte.

Dies zeigte sich erst, als wir mit Langzeit-Zuverlässigkeitstests begannen, und es war einfacher, einen externen Watchdog hinzuzufügen, als den Mikrocontroller auszutauschen.

Wenn Sie mehr als einen IC auf der Platine haben, benötigen Sie möglicherweise auch einen externen Reset-IC oder einen Spannungsmonitor, damit alles zuverlässig hochfährt. Viele davon können auch als Watchdog dienen.

"Integrierter Watchdog konnte das System manchmal nicht in einen bekanntermaßen guten Zustand zurücksetzen" - dies ist funktional äquivalent zu "es gibt keinen internen Watchdog".

Es ist schwer zu argumentieren, dass die interne Uhr des internen Watchdogs tatsächlich unabhängig von allen anderen Uhren ist und immer so läuft, wie sie sollte.

Für die Zertifizierung ist es also meist viel einfacher, einen externen Watchdog auf die Platine zu setzen und zu sagen: Schau mal, da ist unser Watchdog, der muss von der MCU in dem Intervall getriggert werden, das kürzer ist als unsere Zeit bis zum Ausfall, damit unser Gerät sicher ist wie wir es definiert haben.


Um auf einige der Kommentare einzugehen:

"und läuft immer wie es soll" - Guter Punkt. Es kann schwieriger sein zu beweisen, dass Ihre Software den internen Watchdog unter allen Umständen korrekt initialisiert, als nur einen Watchdog-Chip zu verwenden und auf sein Datenblatt zu verweisen.

Dies wird in der Regel durch einen Fault Insertion Test nachgewiesen, den Sie einer Stelle der Zertifizierung vorlegen. Sie zeigen ihnen also den Code, wo Ihre Initialisierung stattfindet und wo das Auslösen des Watchdogs erfolgt. Sie fordern Sie in der Regel auf, den Code so zu ändern, dass das Auslösen des Watchdogs nach Ablauf einer bestimmten Zeit gestoppt wird, und zu überprüfen, ob der Controller korrekt zurückgesetzt wird.

Oder um zu beweisen, dass Ihr Code keinen Fehler enthält, der versehentlich den internen Watchdog deaktiviert.

Zumindest bei einigen Controllern wird der Watchdog als unabhängig bezeichnet und hat eine eigene Taktquelle und kann nicht per Software deaktiviert werden, nur ein Reset des Controllers deaktiviert den Watchdog. Zumindest theoretisch - es ist leicht zu zeigen, dass Sie es nicht per Software stoppen können, aber schwer zu beweisen, dass die Uhr wirklich unabhängig ist und unter EMI nicht anhält.

Oder um zu beweisen, dass Ihr Code nicht wild läuft, indem Sie den externen Watchdog so schnell wie möglich zurücksetzen. Problem gelöst. ;-)

Für diesen Fall verwenden Sie einen Fensterwächter, der in bestimmten Intervallen ausgelöst werden muss und wenn Sie dies nicht tun (zu oft oder zu selten auslösen), die Schaltung zurücksetzt. Der STM32, mit dem ich arbeite, hat einen internen Fenster-Watchdog, aber er läuft von PCLK1, das von der Hauptuhr abgeleitet ist, daher halte ich ihn nicht für so nützlich wie einen externen Watchdog mit eigener Taktquelle.

Oder dass irgendein Genie die Watchdog-Serviceroutine nicht in eine Timer-ISR steckt, sodass der Hauptcode abstürzen kann, aber der Interrupt weiterhin feuert und den Watchdog perfekt bedient ...

Das stimmt sicherlich, aber hoffentlich wird ein Review dieses Genie wieder auf seinen Stuhl bringen - aber hey, als ich anfing, war das auch meine erste Idee :D. Während der Zertifizierungsprozesse, an denen ich teilgenommen habe, haben sie immer einen Blick auf den Watchdog-Teil der Software geworfen.

"und läuft immer wie es soll" - Guter Punkt. Es kann schwieriger sein zu beweisen, dass Ihre Software den internen Watchdog unter allen Umständen korrekt initialisiert, als nur einen Watchdog-Chip zu verwenden und auf sein Datenblatt zu verweisen.
@JimmyB Oder um zu beweisen, dass Ihr Code keinen Fehler enthält, der versehentlich den internen Watchdog deaktiviert.
@TripeHound Oder um zu beweisen, dass Ihr Code nicht wild läuft und den externen Watchdog so schnell wie möglich zurücksetzt. Problem gelöst. ;-)
Oder dass irgendein Genie die Watchdog-Serviceroutine nicht in eine Timer-ISR steckt, sodass der Hauptcode abstürzen kann, aber der Interrupt weiterhin feuert und den Watchdog perfekt bedient ...
@JohnU, das scheint jedoch nicht so zu sein, als würde ein externer IC helfen.
@ilkkachu Ein Wachhund mit Fenster könnte ...

Die in Mikrocontroller eingebauten Watchdogs haben bestimmte Eigenschaften, die bedeuten, dass sie selbst auf eine Weise ausfallen können, die ein anderer externer Watchdog möglicherweise nicht hat.

Beispielsweise besteht ein übliches Design darin, einen Watchdog-Timer zu verwenden, der von einem RC-Oszillator mit geringer Leistung läuft. Dieser Oszillator kann ausfallen. Ein externer Watchdog, der eher auf Kondensatorentladung als auf einem Oszillator basiert, könnte den Mikrocontroller in vielen Fällen immer noch zurücksetzen.

Ein weiterer Grund ist, dass der externe Watchdog robuster sein kann. Ein Mikrocontroller arbeitet möglicherweise nur über einen bestimmten Spannungsbereich zuverlässig, und da es sich um ein komplexes Gerät handelt, kann es zu einem Latch-Up kommen, das seinen eigenen internen Watchdog unwirksam macht. Ein externer Watchdog kann einen größeren akzeptablen Versorgungsbereich haben und weniger anfällig für Probleme sein, wenn er elektrischem Rauschen ausgesetzt ist.

Externe Watchdogs bieten oft auch einen viel größeren Bereich von Timeout-Werten. Ein Mikrocontroller, den ich häufig verwende, der XMEGA, hat eine maximale Zeitüberschreitung von etwa 7 Sekunden. Für ein Produkt habe ich einen zusätzlichen externen Watchdog mit Timeout von 2 Stunden hinzugefügt. Dadurch konnte ich den Mikrocontroller einmal pro Stunde und nicht alle paar Sekunden aufwecken, wodurch der Stromverbrauch in einem batteriebetriebenen Gerät reduziert wurde.

Externe Watchdogs haben manchmal mehrere Funktionen, wie z. B. einen Timer und eine Spannungsüberwachung/Rücksetzsteuerung. Auch diese können stromsparender sein als das eingebaute System eines Mikrocontrollers.

Ein weiterer interessanter Vorteil eines externen Watchdogs besteht darin, dass er zum Zurücksetzen anderer Geräte als des Mikrocontrollers verwendet werden kann. Beispielsweise könnte es den Aktivierungsstift eines Spannungsreglers steuern und einen gesamten Schaltkreis stromlos machen, um mehrere Geräte gleichzeitig zurückzusetzen. Mit einer einfachen Logik kann das Watchdog - Reset -Signal aus mehreren Quellen kombiniert werden, sodass der Watchdog mehrere Geräte benötigt, um ihn kontinuierlich zurückzusetzen.

Aufgrund meiner Erfahrung mit externen Wdogs würde ich sagen, dass sie weitaus weniger robust sind als interne, einfach weil ein anderer externer Schaltkreis eine andere Sache ist, die kaputt gehen kann. Löten, EMI, ESD und so weiter. Wenn Sie es schaffen, den Takteingang mit etwas kurzzuschließen, wird das externe Wdog effektiv deaktiviert. Also ich kaufe den erhöhten Sicherheitsaspekt nicht wirklich ab. Wenn Sie beides gleichzeitig haben, erhöhen Sie die Sicherheit ganz sicher geringfügig.
@Lundin Die meisten von ihnen verwenden einen internen RC-Oszillator oder eine Kondensatorentladung anstelle einer externen Uhr. Tatsächlich kann ich mir keine Hand vorstellen, die eine externe Uhr verwendet. Auch Ausfälle addieren sich nicht, wenn man einen externen und einen internen Watchdog hat und einer ausfällt, ist das eindeutig immer noch besser als nur einen zu haben.

Bestimmte Zertifizierungen, wie z. B. UL , können einen Schutz vor zwei Fehlerquellen erfordern. Ein externer Watchdog-Timer würde als Schutz vor einem ersten Fehlerpunkt, dem Mikrocontroller, angesehen werden.

Ein Watchdog unterscheidet sich in dieser Hinsicht wirklich nicht von jedem anderen eingebauten Peripheriegerät, das Sie in einer MCU finden. MCUs sind mit Timern, RTCs, ADCs, EEPROM und Reset-Controllern ausgestattet, aber all diese Funktionen existieren auch als separate ICs. Wenn verfügbare eingebaute Blöcke Ihre Anforderungen nicht erfüllen, müssen Sie externe verwenden. Oder Sie können versuchen, eine MCU mit den richtigen Blöcken zu finden, die möglicherweise nicht vorhanden sind oder zu teuer oder zu schwer zu portieren sind.

Ein Watchdog ist ein Timer und aktiviert seinen Ausgang, wenn der IC für einen bestimmten Zeitraum einen Eingangsimpuls verliert.

Es ist ein Baustein und kann für jede Anwendung verwendet werden.

So können sie in jeder Anwendung eingesetzt werden, zum Beispiel das Datenrouting im ausfallsicheren Modus ändern. Wenn die Uhr des Mikrocontrollers ausfällt, können wir einige kritische Ausgänge nicht deaktivieren.

Ein externer Watchdog hat nichts mit der komplexen Taktdomäne des Mikrocontrollers zu tun, und einige von ihnen haben ihr analoges RC-Ladetiming oder ihre interne Uhr.

Digitale Schaltkreise in Strahlung können die Ausgänge auslösen, wenn Ladung auf ihre Flip-Flops trifft. Einige analoge Schaltungen sind jedoch sicherer, weil sie Ladung in einen Kondensator integrieren, und es ist sicher, wenn wir sie integrieren.