Moderne Debugger

Konkurrenz für Oszilloskop und Logikanalysator?

Seite: 2/2

Anbieter zum Thema

Deshalb stellt die Debug-Probe selbst einen Zeitstempel bereit, der zusammen mit den abgetasteten Daten zur grafischen Darstellung herangezogen wird. Für einige Anwendungsfälle mag es ja ausreichend sein, wenn Kurvenverläufe in keiner Beziehung zu applikationsspezifischen Zeitnormalen stehen. In den allermeisten Fällen stehen jedoch bestimmte Signale und Wertverläufe mit einem Zeitnormal des Targets, z.B. einem durch Timer-Interrupts inkrementierten Zähler oder gar einer eignen Systemuhr in direktem engem Zusammenhang. In diesem Falle lässt sich aber auch dieses Zeitnormal über die Debug-Schnittstelle auslesen und für die x-Achse verwenden.

Aus Rohdaten die darzustellenden Daten berechnen

Eine zweite auch recht interessante Möglichkeit bietet die Darstellung von mehreren Werten aus der Applikation als gemeinsamer Kurvenverlauf in einem Diagramm. Der einfachste Fall ist ein Array-Chart. Hier können Werte, die z.B. im Speicher aufeinanderfolgend abgelegt sind, über der x-Achse aufgetragen werden. So lässt sich eine berechnete Kennlinie grafisch sehr einfach darstellen. Eine weitere sehr praktische Anwendung ist die Darstellung von binären Kodierungen.

Natürlich bedürfen solche Darstellungen oftmals erst einer Aufbereitung im Debugger. Denn nicht immer können alle benötigten Informationen, die vom Target gelesen werden, ohne weiteres auch sinnvoll visualisiert werden. Ein Hilfsmittel sind hier „Expressions“. Damit lassen sich aus den Rohdaten die darzustellenden Daten berechnen. Hier-zu ein Beispiel: Ziel ist die Darstellung des Ausgangssignals an einem einzelnen Port-Pin. Typischerweise werden Port-Pins im Controller über verschiedene Register angesteuert und der Status in einem Register erfasst.

Meist ist dabei einem bestimmten Bit innerhalb eines Registers auch ein bestimmter Port-Pin zugeordnet. Die Applikation und auch der Debugger müssen jedoch immer die Port-Register als Ganzes (32 Bit) betrachten. Eine im Debugger definierte Expression, die nur das interessante Bit maskiert, hilft die gewünschte Logikanalysator-Funktion für das Ausgangssignal am Port-Pin zu realisieren. Die Fülle an Ausdrucksmöglichkeiten der Expressions moderner Debugger reicht übrigens durchaus an die von Programmiersprachen wie C heran.

Der Debugger als Oszilloskop und Logikanalysator?

Neben der Darstellung der aufgezeichneten Daten lassen sich interessante Bereiche auch näher betrachten. Zoomfunktionen, Navigieren in den aufgezeichneten Daten sowie Messen am Fadenkreuz-Cursor gehören zu den grundlegenden Funktionen, die dem Anwender zur Verfügung stehen.

Grundsätzlich ist die grafische Präsentation von Daten und Signalen vom Embedded-System für moderne Debugger also kein Problem. Allerdings gibt es auch einige Einschränkungen, die man bei deren Anwendung beachten muss.

Ein wichtiger Aspekt ist die Abtastrate. Debug-Schnittstellen haben zwar den Vorteil, dass auch dem Oszilloskop oder Logikanalysator verborgene Signale beobachtbar wer-den, jedoch ist die mögliche Abtastrate in der Regel vergleichsweise gering. Lediglich Trace bietet ausreichende Möglichkeiten, hochfrequente Signale aufzuzeichnen und damit auch im Debugger sichtbar zu machen.

Komplexe Trigger-Bedingungen möglich

Da dies aber nicht immer möglich und sinnvoll ist, wird die Aufzeichnung und Auswertung hochfrequenter Signale wohl auch künftig eine Domäne von Laborgeräte bleiben. Bewegt man sich aber eher im Umfeld von Steueralgorithmen, mit Frequenzen im 100-Hz-Bereich der interessierenden Daten, ist die herkömmliche Kommunikation über die Debug-Schnittstelle mit dem Target völlig ausreichend, um mit dem Debugger einen Blick darauf zu werfen.

Ein weiterer wichtiger Punkt ist das Triggern auf bestimmte Ereignisse. Oszilloskope bieten hier verschiedene Möglichkeiten, die z.B. ein stehendes Bild eines periodischen Signals erzeugen und auch dessen Frequenz bestimmen. Solche Funktionen sind im Debugger typischerweise nicht anzutreffen. Hier liegt der Fokus vielmehr auf der visuellen Darstellung. Sollen dennoch detailliertere Messungen durchgeführt werden, bietet sich die Zeitmessfunktion des Debuggers an, um z.B. die Zeitdifferenz zwischen zwei Breakpoints, die an die Daten gekoppelt sind, zu messen.

Verfügt das Debug-System des Targets über eine umfangreiche Trigger-Logik, sind mitunter sogar ähnlich komplexe Trigger-Bedingungen möglich, wie man sie auch bei Logikanalysatoren vorfindet. Dabei sollte man aber nicht vergessen, dass mit einem Logikanalysator immer Einzel-Bit-Signale betrachtet werden. Ein Debugger hingegen ist Wort-orientiert. Er arbeitet also mit der jeweiligen Verarbeitungsbreite – 8, 16, 32 oder 64 Bit – des Targets. Einzel-Bit-Signale müssen deshalb erst noch herausgefiltert werden, was jedoch wie bereits erläutert keine große Hürde darstellt.

* Jens Braunes ist Software-Architekt bei PLS Programmierbare Logik & Systeme.

Artikelfiles und Artikellinks

(ID:42474187)