Antworten:
Einige Produkte müssen Sicherheitsanforderungen erfüllen, die entweder vom Hersteller festgelegt wurden oder internationalen Sicherheitsstandards wie IEC 60730-1 oder dem älteren UL1998 entsprechen, der in den USA noch verwendet wird. Die interne Watchdog-Funktionalität in einem bestimmten Mikrocontroller kann zur Verwendung geeignet sein oder auch 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 mit größerer Wahrscheinlichkeit strenge Anforderungen, eignen sich jedoch möglicherweise nicht für kostensensitive Anwendungen.
Typischerweise ist der WDT eine von mehreren Möglichkeiten, um die Wahrscheinlichkeit eines Ausfalls zu verringern, der zu katastrophalen Sachschäden oder zu Verletzungen des Lebens führt. Andere Dinge wie der Speicherschutz zum Erkennen eines unerwarteten Zugriffs auf den MCU-Speicher oder das Abrufen von Programmen aus dem nicht verwendeten Speicher werden normalerweise in Verbindung mit einem WDT verwendet.
Beispiele für kostengünstige Produkte, die sicherheitskritische Funktionen erfüllen, sind Kfz-Subsysteme, Garagentorsteuerungen und Gaszündsteuerungen (Erdgas oder Propan), die in Öfen, Trocknern und Warmwasserbereitern verwendet werden. Natürlich sind viele Medizinprodukte und Produkte für die Luft- und Raumfahrt auch sicherheitskritisch, aber es kann ausreichend Platz für Redundanz und andere Ansätze geben. In einigen Fällen gibt es möglicherweise keinen leicht erreichbaren sicheren Zustand, beispielsweise in einem Flugzeug.
Im Idealfall ist der Watchdog-Timer sehr einfach, unabhängig von der MCU (zum Beispiel sollte er eine eigene Taktquelle und möglicherweise einen Taktmonitor haben). Er kann (per Software) nicht auf eine längere Zeit eingestellt werden, als dies durch einen Softwarefehler zu Schäden führen würde. und versetzt das System in einen sicheren Zustand, wenn es nicht rechtzeitig "gestreichelt" wird, entweder mit einer Zeitüberschreitung oder in einer fenstergesteuerten Weise, so dass zu häufige Zurücksetzungen erkannt werden können. Beispielsweise kann ein WDT in einer Wärmesteuerungsanwendung auf einige Sekunden eingestellt sein, da kein Schaden möglich ist, wenn der Mikrocontroller für diese Zeitspanne blockiert.
Das WDT ist am nützlichsten als Teil eines Konzepts auf Systemebene für Zuverlässigkeit und Sicherheit.
Ein Watchdog-Timer schützt vor Hardware-Fehlern in fehlerhaften ... hochmodernen Mikrocontrollern. Eines, das wir kürzlich von einer bekannten Marke verwendeten, hatte I / O-Pins, die gelegentlich ihre Interrupts verpassten, manchmal nicht richtig starteten und bei denen der integrierte Watchdog das System manchmal nicht in einen bekanntermaßen guten Zustand zurücksetzte.
Dies zeigte sich erst, als wir mit langen Zuverlässigkeitstests begannen und es einfacher war, einen externen Watchdog hinzuzufügen, als den Mikrocontroller zu wechseln.
Wenn Sie mehr als ein IC auf der Platine haben, benötigen Sie möglicherweise auch ein externes Reset-IC oder einen Spannungsmonitor, damit alles zuverlässig hochfährt. Viele davon können auch als Wachhund dienen.
Es ist schwer zu behaupten, dass die interne Uhr des internen Watchdogs tatsächlich unabhängig von allen anderen Uhren ist und immer so läuft, wie es sollte.
Daher ist es für die Zertifizierung in der Regel viel einfacher, einen externen Watchdog auf der Platine zu platzieren und zu sagen: Da es unseren Watchdog gibt, muss er von der MCU in dem Intervall ausgelöst werden, das kürzer als unsere Ausfallzeit ist, damit unser Gerät sicher ist wie wir es definiert haben.
Um einige der Kommentare anzusprechen:
"und immer so laufen, wie es sollte" - 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 sich auf dessen Datenblatt zu beziehen.
Dies wird in der Regel durch einen Fehlereinfügungstest nachgewiesen, den Sie einer Zertifizierungsstelle vorlegen. Sie zeigen ihnen also den Code, wo Ihre Initialisierung stattfindet und wo der Watchdog ausgelöst wird. In der Regel werden Sie aufgefordert, den Code so zu ändern, dass das Auslösen des Watchdogs nach Ablauf einer bestimmten Zeit gestoppt wird, und zu prüfen, ob die Steuerung korrekt zurückgesetzt wurde.
Oder um zu beweisen, dass Ihr Code keinen Fehler enthält, der den internen Watchdog versehentlich deaktiviert.
Zumindest bei einigen Steuerungen wird der Watchdog als unabhängig bezeichnet und verfügt über eine eigene Taktquelle. Er kann nicht über Software deaktiviert werden. Nur ein Zurücksetzen der Steuerung deaktiviert den Watchdog. Zumindest in der Theorie - es ist leicht zu zeigen, dass man es nicht mit Software stoppen kann, aber es ist schwer zu beweisen, dass die Uhr wirklich unabhängig ist und nicht unter EMI stoppt.
Oder um zu beweisen, dass Ihr Code nicht ständig außer Kontrolle gerät und den externen Watchdog so schnell wie möglich zurücksetzt. Problem gelöst. ;-)
In diesem Fall verwenden Sie einen Fenster-Watchdog, der in bestimmten Intervallen ausgelöst werden muss. Wenn Sie dies nicht tun (zu oft oder zu wenig auslösen), wird die Schaltung zurückgesetzt. Der STM32, mit dem ich arbeite, verfügt über einen internen Fenster-Watchdog, der jedoch von PCLK1 ausgeführt wird, das von der Hauptuhr abgeleitet ist. Ich halte ihn daher nicht für so nützlich wie einen externen Watchdog mit eigener Taktquelle.
Oder dass ein Genie die Watchdog-Serviceroutine nicht in ein Timer-ISR einfügt, sodass der Hauptcode abstürzen kann, aber der Interrupt den Watchdog weiterhin perfekt abfeuert und wartet ...
Das ist sicherlich wahr, aber hoffentlich bringt eine Rezension dieses Genie zurück auf seinen Stuhl - aber als ich anfing, war das auch meine erste Idee: D. Während der Zertifizierungsprozesse, an denen ich beteiligt war, haben sie sich immer den Watchdog-Teil der Software angesehen.
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 kann.
Ein üblicher Entwurf ist beispielsweise die Verwendung eines Watchdog-Timers, der von einem RC-Oszillator mit niedriger Leistung ausgeführt wird. 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 ein komplexes Gerät kann in einer Weise zwischengespeichert werden, die seinen internen Watchdog unwirksam macht. Ein externer Watchdog hat möglicherweise einen größeren akzeptablen Versorgungsbereich und ist weniger anfällig für Probleme, wenn er elektrischen Störungen ausgesetzt ist.
Externe Watchdogs bieten häufig auch einen viel größeren Bereich von Timeout-Werten. Ein Mikrocontroller, den ich oft benutze, der XMEGA, hat eine maximale Auszeit von etwa 7 Sekunden. Für ein Produkt habe ich einen zusätzlichen externen Watchdog mit einer Zeitüberschreitung von 2 Stunden hinzugefügt. Dadurch konnte ich den Mikrocontroller einmal pro Stunde und nicht alle paar Sekunden aufwecken und so den Stromverbrauch in einem batteriebetriebenen Gerät senken.
Externe Watchdogs haben manchmal mehrere Funktionen, wie einen Timer und eine Spannungsüberwachung / Reset-Steuerung. Dies kann wiederum eine geringere Leistung als das eingebaute System eines Mikrocontrollers sein.
Ein weiterer interessanter Vorteil eines externen Watchdogs ist, dass damit andere Geräte als der Mikrocontroller zurückgesetzt werden können. Beispielsweise kann es den Freigabepin eines Spannungsreglers steuern und den gesamten Stromkreis ausschalten, um mehrere Geräte gleichzeitig zurückzusetzen. Mit einer einfachen Logik kann das Watchdog- Rücksetzsignal von mehreren Quellen kombiniert werden, so dass der Watchdog von mehreren Geräten kontinuierlich zurückgesetzt werden muss.
Ein Watchdog unterscheidet sich in dieser Hinsicht nicht von jedem anderen integrierten Peripheriegerät, das Sie in einer MCU finden. MCUs werden mit Timern, RTCs, ADCs, EEPROMs und Reset-Controllern geliefert. Alle diese Funktionen sind jedoch auch als separate ICs verfügbar. Wenn vorhandene eingebaute Blöcke nicht Ihren Anforderungen entsprechen, müssen Sie externe verwenden. Oder Sie können versuchen, eine MCU mit den richtigen Blöcken zu finden, die möglicherweise nicht vorhanden oder zu teuer oder schwer zu portieren sind.
Ein Watchdog ist ein Timer und aktiviert seinen Ausgang, wenn der IC für einen bestimmten Zeitraum einen Eingangsimpuls verloren hat.
Es ist ein Baustein und kann für jede Anwendung verwendet werden.
Sie können also in jeder Anwendung verwendet werden, um beispielsweise das Datenrouting im ausfallsicheren Modus zu ändern . Wenn der Takt des Mikrocontrollers ausfällt, können wir einige kritische Ausgänge nicht deaktivieren.
Ein externer Watchdog hängt nicht mit der komplexen Taktdomäne des Mikrocontrollers zusammen, und einige von ihnen verfügen über eine analoge RC-Ladezeit oder einen internen Takt.
Digitale Schaltkreise in Strahlung können die Ausgänge auslösen, wenn die Ladung ihre Flip-Flops trifft. Aber einige analoge Schaltungen sind sicherer, weil sie Ladung in einen Kondensator integrieren, und es ist sicher, wenn wir es integrieren.