Notwendigkeit eines externen Watchdog-Timers

19

Was braucht ein externer Watchdog-Timer für einen Mikrocontroller?

Die meisten Mikrocontroller sind mit einem internen Watchdog-Timer ausgestattet. In einigen Schaltkreisen wird jedoch ein externer Watchdog-Timer verwendet (z. B. PIC16F1824).

Photon001
quelle

Antworten:

10

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.

Spehro Pefhany
quelle
33

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.

Rohr
quelle
9
"Der integrierte Watchdog konnte das System manchmal nicht in einen als funktionierend bekannten Zustand zurücksetzen" - dies ist funktional äquivalent zu "Es gibt keinen internen Watchdog".
Dmitry Grigoryev
32

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.

Arsenal
quelle
4
"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.
JimmyB
4
@JimmyB Oder um zu beweisen, dass Ihr Code keinen Fehler enthält, durch den der interne Watchdog versehentlich deaktiviert wird.
TripeHound
2
@TripeHound Oder um zu beweisen, dass Ihr Code nicht ständig wild läuft und den externen Watchdog so schnell wie möglich zurücksetzt. Problem gelöst. ;-)
JimmyB
2
Oder dass ein Genie die Watchdog-Serviceroutine nicht in ein Timer-ISR einfügt, sodass der Hauptcode abstürzen kann, aber der Interrupt weiterhin den Watchdog perfekt abfeuert und wartet ...
John U
@ JohnU, das würde allerdings nicht so aussehen, als würde ein externer IC dabei helfen.
ilkkachu
12

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.

Benutzer
quelle
Aufgrund meiner Erfahrung mit externen Wdogs würde ich sagen, dass sie weitaus weniger robust sind als interne, einfach weil ein anderer externer Stromkreis eine andere Sache ist, die kaputt gehen kann. Löten, EMI, ESD und so weiter. Wenn es Ihnen gelingt, den Takteingang mit etwas kurzzuschließen, wird der externe Wdog effektiv deaktiviert. Deshalb kaufe ich den erhöhten Sicherheitsaspekt nicht wirklich. Wenn Sie beide gleichzeitig haben, werden Sie die Sicherheit um einiges erhöhen.
Lundin
@Lundin Die meisten von ihnen verwenden einen internen RC-Oszillator oder eine Kondensatorentladung anstelle eines externen Taktgebers. Tatsächlich kann ich mir keine Hand vorstellen, die eine externe Uhr verwendet. Auch Ausfälle sind nicht additiv, wenn Sie einen externen und internen Watchdog haben und einer ausfällt, der eindeutig immer noch besser ist als nur einer.
Benutzer
3

Bestimmte Zertifizierungen, wie z. B. UL , erfordern möglicherweise Schutz vor zwei Ausfallstellen. Ein externer Watchdog-Timer würde als Schutz vor einem ersten Ausfallpunkt, dem Mikrocontroller, angesehen.

da66en
quelle
2

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.

Dmitry Grigoryev
quelle
1

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.

M KS
quelle