Grafische Analyse Softwareentwicklung: Endspiel

Softwareentwickler kämpfen häufig mit dem gleichen Problem: Nach dem Kompilieren des Projektes werden »0 Errors« und »0 Warnings« angezeigt. Im Debugger funktioniert alles. Nach dem Laden der Applikation in den Flash-Speicher funktioniert jedoch nichts, und eine CRC-Prüfung ergibt, dass auch der Flash-Programmier-Vorgang unschuldig ist. Hier könnte ein grafisches Analysetool helfen.

Treten in der Endphase der Softwareentwicklung unvermutet größere Schwierigkeiten auf, lassen sich die Fehler oft nicht ohne weiteres eingrenzen. Bei solch einem typischen Problem liegt es jedoch nahe, den vom Compiler erzeugten Code auf Speicherbelegung, Adressverteilung und mehrfach belegte Adressen zu untersuchen. Gerade bei größeren Anwendungen ist ein Werkzeug erforderlich, das dabei hilft, diese Punkte mit einem Blick erfassen zu können. Der Programmcode sollte also grafisch aufbereitet werden. Hierfür eignet sich das universelle Hex-File-Tool »HEXit« von hse-electronics.

Mit der Code-Placement-Analyse lässt sich untersuchen, welche Adressbereiche die Applikation im Programmspeicher belegt; der Übersichtlichkeit wegen stellt der Anwender die grafische Ausgabefläche so ein, dass sie der Größe des verfügbaren Programmspeichers entspricht. Der von der Applikation belegte Bereich wird dann etwa farbig und der ungenutzte Bereich weiß dargestellt.

In einem konkreten Fall ist dann zum Beispiel bei der Betrachtung der von HEXit generierten Grafik zu erkennen, dass der Reset-Vektor an Adresse 0 nicht definiert wurde. Da hier beispielsweise eine MCU verwendet wird, deren Reset-Vektor an der Adresse 0 zu liegen hat, kann die Applikation nicht starten. Der erste Fehler ist gefunden. Weiter lässt sich etwa erkennen, dass die meisten Interrupt-Vektoren (0x4 - 0x1FF) nicht definiert worden sind. Nicht definierte Interrupt-Vektoren sollten immer auf Funktionen zeigen, die zum Beispiel eine Fehlerbehandlung einleiten können.

Geschieht das nicht, kann es zu unkontrollierbaren Reaktionen kommen, wenn etwa ein vermeintlich passiver Interrupt den nächsten Vektor benutzt, dem eine ganz andere Funktion zugedacht war. Zu den Funktionen zur Fehlersuche zählen auch die Formatwandlung von Intel-Hex-, Motorola-S-Record- und Binärdateien in das jeweils andere Format, die Prüfsummenbildung über Hex/Bin-Dateien und das Splitten von Hex/Bin-Dateien zur Anpassung an den internen/externen Flash-Speicher eines Controllers. Weitere nützliche Funktionen sind das Linken mehrerer der genannten Dateitypen, die Erzeugung beliebiger Zahlen, Zahlenrampen oder Zufallszahlen sowie die Einbindung von Binärdateien in C-Sourcen. Das Entwicklungswerkzeug unterstützt Windows-Versionen bis »7«.