Der sporadische Glitch

Blog: Der sporadische Glitch | egnite Smart Sensors

Aus dem harten Leben eines Firmware-Entwicklers 😉

Es kommt immer wieder vor, dass GerĂ€tehersteller beim Produkttest nicht sorgfĂ€ltig genug alle Varianten durchspielen und es dem Kunden ĂŒberlassen, verbleibende Fehler zu finden. Dies ist das Bananenprinzip: Das Produkt reift beim Kunden. VerstĂ€ndlicherweise ist dies fĂŒr den Kunden Ă€rgerlich, da die Behandlung solcher Fehler zeitraubend sein kann. Genauso nachvollziehbar ist es, dass technische Systeme immer komplexer werden, was die Abdeckung aller möglichen TestfĂ€lle fĂŒr den Hersteller unmöglich macht. Dies gilt besonders fĂŒr GerĂ€te, in denen intern ein Mikroprozessor eine mehr oder weniger fehlerfreie Software abarbeitet. GlĂŒcklicherweise sind diese GerĂ€te oft Update-fĂ€hig und ermöglichen es dem Hersteller nachzubessern. Werden dabei grundsĂ€tzliche Fehler korrigiert, fragt man sich, was der Hersteller eigentlich vor der Auslieferung getestet hat.

Um solchen VorwĂŒrfen aus dem Weg zu gehen, sprechen Hersteller und deren Entwickler gerne von sporadischen Fehlern, die sehr selten unter ganz bestimmten Bedingungen auftreten und die man vorher nur schwer voraussehen konnte. Lassen sich solche Fehler beliebig oft reproduzieren, kann man wohl kaum von einem sporadischen Fehler sprechen. Der Hersteller hat diesen Testfall schlicht ausgelassen.

Und doch gibt es sie, diese sporadisch auftretenden Fehler in technischen GerĂ€ten. Ihre Hauptursache liegt in den Toleranzen begrĂŒndet, die jeder Hardware zu eigen sind. Eine Möglichkeit, solche Fehler wĂ€hrend der Entwicklung zu erkennen, besteht darin, die GerĂ€te unter Extrembedingungen zu testen. Wenn GerĂ€te diese Tests klaglos ĂŒberstehen, werden sie voraussichtlich unter Normalbedingungen zuverlĂ€ssig arbeiten. Auch hier gilt natĂŒrlich, dass man nicht alles testen kann. Man beschrĂ€nkt sich z.B. auf Belastungstests der Software oder extreme Umgebungsbedingungen.

Treten trotz aller Sorgfalt beim Kunden sporadisch Fehler auf, tauscht man das GerĂ€t aus. So etwas kommt vor und die meisten Kunden haben VerstĂ€ndnis dafĂŒr. Passiert das hĂ€ufiger, besteht natĂŒrlich Handlungsbedarf. ZunĂ€chst herrscht aber Ratlosigkeit: Wie untersucht man Fehler, die sich nicht zuverlĂ€ssig reproduzieren lassen?

Als Entwickler der Querx WLAN Firmware hatte ich gerade das zweifelhafte VergnĂŒgen, einen solchen Fehler untersuchen zu dĂŒrfen. Zwei Kunden berichteten davon, dass die GerĂ€te nach einem Neustart Sensorfehler anzeigten. Nach weiteren Neustarts verschwand der Fehler wieder. Zuerst versucht man, erweiterte TestfĂ€lle zu konstruieren. Aus Erfahrung weiß ich, dass man meist einen Zustand herstellen kann, in dem sich der Fehler zuverlĂ€ssiger zeigt. Allerdings hatte ich diesmal keinen Erfolg, weder mit unseren TestgerĂ€ten, noch mit den RĂŒcklĂ€ufern. Da lĂ€ngere Zeit keine weiteren AusfĂ€lle auftraten, wurde das Problem erst einmal zurĂŒckgestellt.

Wie erwartet, holt einen die Vergangenheit immer wieder ein. Ein weiterer Kunde meldete sich mit dem gleichen Problem und ebenso sporadisch erschien der Fehler in unserer QualitĂ€tskontrolle und sogar bei einem GerĂ€t, das wir im Langzeittest betreiben. Nun, wie so oft, kam mir schließlich der Zufall zu Hilfe. In der QualitĂ€tskontrolle tauchte ein GerĂ€t auf, bei dem der Fehler zuverlĂ€ssig bei jedem Neustart vorhanden war. Eine nĂ€here Untersuchung ergab, dass kein Fertigungsfehler vorlag, der eventuell zu dem gleichen Symptom hĂ€tte fĂŒhren können. Wie ein rohes Ei wurde dieser Querx WLAN an einen Testadapter angeschlossen, der interne Zustand gesichert und mit aller gebotenen Vorsicht mit einer Testsoftware beladen. Mit Erleichterung nahm ich zur Kenntnis, dass der Fehler weiterhin vorhanden war. Nicht einmal eine Stunde verging, und die Lösung war gefunden. Querx meldete nach beliebig vielen Neustarts korrekte Sensordaten.

Aber was genau hatte denn diesen sporadischen Fehler verursacht? Es kommt vor, dass ein Fehler unerwartet verschwindet, nachdem man verschiedene Änderungen in der Programmierung ausprobiert. Der Entwickler wird von GlĂŒckshormonen ĂŒberschwemmt und der weniger erfahrene verzichtet auf weitere Untersuchungen, die diesen Zustand trĂŒben könnten. Dagegen hat sein Ă€lterer Kollege zu oft die Erfahrung mit der Vergangenheit gemacht, die an einem nagt und letztlich einholt. Schon aufgrund meines fortgeschrittenen Lebensalters gehöre ich eher zur letzteren Gruppe.

Vermutlich erwarten Sie jetzt von mir, dass ich endlich die Fakten auf den Tisch lege und dieser Blogbeitrag zu einem Abschluss kommt. Da ich aber nicht weiß, wer diesen Text liest (außer diversen Suchmaschinen), sollte ich mich allgemeinverstĂ€ndlich ausdrĂŒcken. Das wird knifflig, aber ich will es versuchen.

Beim Querx WLAN TH wird die Temperatur von einem kombinierten Temperatur- und Luftfeuchtesensor gemessen und in digitale Signale umgewandelt. Diese gehen dann ĂŒber das sichtbare Sensorkabel ins Innere des GehĂ€uses an einen Mikroprozessor des Typs STM32F4, genauer an dessen sogenannte I2C Schnittstelle. Dabei handelt es sich um zwei Leitungen, eine davon enthĂ€lt nur ein konstantes Taktsignal, das fest zwischen 0 und 3 Volt wechselt. Die andere Leitung, die sogenannte Datenleitung, wechselt den Pegel in diesem Takt oder auch nicht, entsprechend der zu ĂŒbertragenden Daten. Um den Temperaturwert 0 zu ĂŒbertragen, bleibt die Datenleitung fĂŒr 16 Takte auf 0 Volt.

Nun gibt es ein kleines Problem. Konstruktionsbedingt ist eine solche I2C Schnittstelle anfĂ€llig fĂŒr Störungen von außen, z.B. fĂŒr elektromagnetische Felder, verursacht durch MobilfunkgerĂ€te oder elektrische Motoren. Diese Felder können kurze Impulse in den Leitungen erzeugen, so dass aus 16 plötzlich 17 Takte werden. Das ist ĂŒbrigens der Grund dafĂŒr, warum Querx TH nur ein relativ kurzes Sensorkabel besitzt. Bei Querx PT darf dieses Kabel mehrere Hundert Meter lang sein. Dennoch ist auch bei kurzen Kabeln mit Störungen zu rechnen und daher befindet sich im Mikroprozessor ein Filter, welcher kurze Störimpulse unterdrĂŒckt.

Sie konnten mir bis hier hin folgen? Gut, dann haben wir es fast geschafft. Die logischen Schaltkreise des Mikroprozessors bestehen, wie der Name schon andeutet, aus einer AnhĂ€ufung von Schaltern. Ein gefĂŒrchtetes Problem beim Design solcher Schaltkreise ist der sogenannte Glitch. Denken Sie an die Lichtschalter in Ihrer Wohnung, im Flur gibt es ĂŒblicherweise mehrere Schalter fĂŒr eine Lampe. Wenn man nun zwei Schalter gleichzeitig betĂ€tigt, passiert nichts. Die Lampe bleibt an oder aus. Genau wie es Ihnen nicht gelingen wird, die Schalter wirklich gleichzeitig zu betĂ€tigen, kann es auch im Mikroprozessor aufgrund von Toleranzen zu kurzzeitigen Ungenauigkeiten kommen. Wenn im Flur die Lampe trotzdem kurz aufleuchtet oder flackert, nennt man das in der Elektronik einen Glitch. Solch ein Glitch fĂŒhrt im STM32F4-Mikroprozessor, der im Querx verbaut ist, zu einem Fehlerzustand im Filter der I2C-Schnittstelle. Also ausgerechnet in dem Teil, welches zusĂ€tzlich zur Fehlervermeidung eingebaut wurde. Der Filter gibt den falschen Pegel der Datenleitung an den Mikroprozessor weiter. Bei der KomplexitĂ€t dieser Mikroprozessor-Schaltkreise gehört die Vermeidung von Glitches zum grundsĂ€tzlichen Handwerk jedes Chip-Designers. Hier hat jemand offensichtlich nicht ganz sauber gearbeitet. Noch schlimmer: Normalerweise hat der Programmierer die Möglichkeit, einen Fehlerzustand der Hardware durch ein RĂŒcksetzsignal in den Grundzustand zu setzen. Eine solche Möglichkeit wurde hier nicht vorgesehen. So gibt es keine sichere Methode, diesen Fehlerzustand zu beenden, außer man trennt Querx von der Versorgung.

Lösen konnte ich das Problem durch eine geĂ€nderte Abfolge der Initialisierungsschritte, die diesen Glitch vermeidet. Die korrigierte Firmware steht als Version 3.2.15 zum Download zur VerfĂŒgung. Auch wenn Ihr Querx WLAN TH nicht diese Ausfallerscheinung zeigt, sollten Sie das Update auf Ihr GerĂ€t ĂŒbernehmen, denn sporadische Fehler haben eine weitere unangenehme Eigenschaft: Sie treten oft im ungĂŒnstigsten Moment auf. In diesem Fall beispielweise nach einem Stromausfall, bei dem Sie sicher genĂŒgend andere Probleme haben werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.