Der Blätterkatalog benötigt Javascript.
Bitte aktivieren Sie Javascript in Ihren Browser-Einstellungen.
The Blätterkatalog requires Javascript.
Please activate Javascript in your browser settings.
50 Elektronik 10 2021 Embedded Technology kann die Schutzwörter überwachen und Maßnahmen ergreifen wenn ihr Wert geändert wird bei einem 32-bit-System besteht nur eine Wahrscheinlichkeit von 4 Milliarden zu 1 dass ein Datenfehler übersehen wird Bild Wenn der Stack voll ist zeigt der Stack-Zeiger auf das Schutzwort Wenn ein weiteres Element auf den Stack geschoben wird wird das Schutzwort beschädigt Der Überwachungscode kann Maßnahmen ergreifen bevor es zu einem Absturz eines anderen Tasks kommt Der gleiche Ansatz kann auf Verletzungen von Array-Grenzen angewendet werden Der häufigste Fehler ist auch hier das Überlaufen eines Arrays sodass ein Schutzwort ebenfalls effektiv sein kann Schleifen im Code Mit Ausnahme der äußeren Schleife eines immer laufenden Tasks sollte es im Code für ein Embedded-System niemals eine Endlosschleife geben Wenn Code in einer Schleife festhängt handelt es sich um einen Codierungsfehler oder der Code wartet auf eine Antwort der Schaltung Hardware die nicht kommt Der einzige mögliche Schutz vor Codierungsfehlern die Schleifen verursachen ist eine Art »Watchdog« Dies ist typischerweise eine Hardwareeinrichtung Die Schaltung benötigt einen periodischen Zugriff andernfalls kommt es zu einer Zeitüberschreitung und der Watchdog »beißt« dies kann zu einem Reset oder vielleicht zu einem nicht maskierbaren Interrupt führen Ein häufiger Fehler ist es den Watchdog-Servicecode in eine Timer-Interrupt-Service-Routine zu packen Das bedeutet dass der Watchdog auch dann bedient wird wenn der Code des Hauptprogramms Main in einer Schleife läuft In einer Multithreading-Umgebung Multitasking könnte ein Task die Rolle des Watchdogs übernehmen vorausgesetzt das Betriebssystem ist präemptiv Wenn Code in einer Schleife läuft während er auf eine Antwort von einem Peripheriegerät wartet sollte eine Zeitüberschreitung Timeout in die Schleife eingebaut werden Die Möglichkeit eines Hardwareausfalls sollte immer berücksichtigt werden Fehlerbehebung und -meldung Das Ausmaß in dem ein Fehler gemeldet werden kann hängt stark von dem jeweiligen System ab Das Gleiche gilt für die mögliche Wiederherstellung In tief eingebetteten Systemen gibt es möglicherweise keine Benutzerschnittstelle sodass die einzige Möglichkeit im Falle eines Fehlers darin besteht das System zurückzusetzen in der Hoffnung dass das Problem dadurch behoben wird Möglicherweise ist es machbar den Fehler für eine spätere Referenz zu protokollieren Wenn es irgendeine Art von Benutzeroberfläche gibt bieten sich andere Möglichkeiten ➔ Wenn eine Textanzeige vorhanden ist kann eine Meldung oder eine Grafik den Benutzer warnen Colin Walls verfügt über mehr als vierzig Jahre Erfahrung in der Elektronikindustrie wobei er sich hauptsächlich mit EmbeddedSoftware beschäftigt Er hält häufig Vorträge auf Konferenzen und Seminaren und ist Autor zahlreicher technischer Artikel und dreier Bücher über Embedded-Software Zuletzt war Walls als EmbeddedSoftware-Technologe bei Siemens Embedded zuvor Mentor tätig mail@colinwalls com ➔ Eine Tonausgabe ist eine weitere Option ➔ Wenn das Gerät vernetzt ist gibt es verschiedene Möglichkeiten einschließlich des Versendens einer »Notruf«-EMail durch das Gerät ➔ Eine einfache LED insbesondere eine mehrfarbige kann effektiv eingesetzt werden und ist selbst bei tief eingebetteten Systemen ziemlich verbreitet Wenn nur eine einzelne LED zur Verfügung steht kann diese blinken um den Status des Systems anzuzeigen Blinken ist besser als gleichmäßiges Leuchten da es zeigt dass etwas passiert Ein guter Ansatz ist ein gleichmäßiger langsamer »Herzschlag« um zu zeigen dass das System normal funktioniert Schnellere Blinkraten können verwendet werden um einen Fehler anzuzeigen Verschiedene Tastverhältnisse Serien von Blinksignalen gefolgt von einer Pause können verwendet werden um verschiedene Fehler anzuzeigen Listing 3 LED flash rate logic LONG = 500 SHORT = 50 flash_delay = LONG LED_state = 0 loopforever { flags = 0xff sleep flash_delay set_LED LED_state if LED_state = 0 LED_state = 1 else LED_state = 0 if flags <> 0 flash_delay = SHORT } Listing 3 Das Blinken einer LED kann den normalen Betrieb kennzeichnen langsames Blinken und auf Fehler hinweisen schnelles Blinken Über ein codiertes Blinken vergleichbar dem Morse-Code lassen sich sogar Fehlerarten spezifizieren Quelle Walls Selbsttests sind für die meisten Embedded-Systeme eine Überlegung wert Die erste Regel ist zu akzeptieren dass ein Fehler möglich ist und dann gilt es alles in Betracht zu ziehen was schief gehen kann Für den Selbsttest kann zusätzlicher Code hinzugefügt werden um den Zustand des Systems zu überwachen und es können Mittel zur Abschwächung oder Behebung von Fehlern in Betracht gezogen werden inklusive der Warnhinweise an den Benutzer HS