Entwicklungsprojekte

Bug Fixing Support

Bug Fixing Support und Software Quality Assurance

Optimierung von Embedded System Software

Die wichtigsten Kriterien für Embedded Systeme sind hohe Zuverlässigkeit und lange Lebensdauer. Nachdem ein Produkt für den Einsatz freigegeben wurde, können Softwarefehler sowie Probleme mit Verfügbarkeit oder Performance auftreten. Sollte dann das notwendige Entwickler Know-How im Unternehmen nicht mehr vorhanden sein, sind Spezialisten gefragt.

Fehleridentifizierung, Fehlerbehebung, Optimierung, Funktionserweiterung und Re-Engineering von vorhandener Software ist ein Bereich, in dem Firmix jahrelange Erfahrung besitzt. Unsere Kernkompetenzen liegen dabei in C bzw. C++ und embedded Linux Projekten.

Die verwendeten Methoden decken ein breites Spektrum ab (Code Review (statische Quellcodeanalyse), dynamische Speichercheckframeworks, Instrumentierung des Quellcodes mit gezielten Messproben/Log-Statements, Einsatz von Hardware-Debuggern, Messung des Zeitverhaltens von Steuerleitungen mittels Speicheroszilloskop, ...) und werden abhängig von Faktoren wie vorhandene Hardwareschnittstellen, Softwaredokumentation, Fehlerbild, Reproduzierbarkeit, Testmöglichkeiten u.v.m. ausgewählt.

Beispiele unseres Bug Fixing Support für Kunden

Eine Linux basierende Steuereinheit kommuniziert über eine serielle Schnittstelle im Multiplexverfahren mit mehreren Subcontrollern. Im praktischen Einsatz kam es immer wieder zu einem "Einfrieren" des Controllers (nach ein paar Betriebstagen), der nur durch einen Reboot der Steuereinheit wieder behoben werden konnte wobei das gesamte Gerät für ca. eine halbe Stunde außer Betrieb genommen wurde. Mithilfe eines Simulators und eines Testprogramms war es möglich das Problem im Labor innerhalb kurzer Zeit (max. Stunden) auszulösen. Ein von Firmix durchgeführter Code-Review ergab recht bald, dass die Synchronisation zwischen Interrupthandler und restlichem Treiber fehlerhaft war (dies führte zu Überschreibfehlern, verpassten Nachrichten, generell undefiniertem Verhalten) - der Einbau von ordnungsgemäßer Synchronisierung behob den Fehler.

Ein Türmanager zeigt im Feldeinsatz häufige Abstürze. Ein Code Review zeigt keine Auffälligkeiten. Ein Hardware Debugger wurde vom Kunden zur Verfügung gestellt. Da bei der Analyse der Verdacht auf eine mangelhafte Speicherverwaltung fiel (es war keine Memory Management Unit vorhanden), wurde versucht das Problem durch verschiedene Lastsimulationen zu reproduzieren. Diese Tests zeigten, dass die Größe des Kernel-Stacks zu klein bemessen war und unter gewissen Umständen der Kernel-Stack andere Code-Segmente überschrieb. Eine Vergrößerung des Kernel-Stacks behob das Problem.

Die kundenspezifische Hardware einer Steuereinheit konnte wegen nicht mehr verfügbarer Bauelemente nicht mehr produziert werden. Die Firmware in Form eines in C geschriebenen Programms musste auf eine Linux basierte Industriehardware portiert werden. In diesem Fall musste ebenso eine Erweiterung des Funktionsumfanges (Integration von Statusinformationen in ein graphisches Userinterfaces) durchgeführt werden. Die Spezifikation der Steuereinheit war nicht mehr vorhanden. Das notwendige Applikations Know-How wurde während des Projektes interaktiv vom Auftraggeber an Firmix weitergegeben.