Entwicklungswerkzeug Komfortable Systemanalyse mit ViewX

Mit ViewX bringt Express Logic ein Software-Analysewerkzeug auf den Markt, mit dem Entwickler die Leistung ihres Mikroprozessor-Systems verbessern können. In Echtzeit können CPU-Auslastung, Netzwerk-Performance und ­Speichernutzung überwacht werden.

Das klassische Analysewerkzeug für die Hardware-/Software-Entwicklung ist der Hardware Debugger, mit dem sich die Abläufe in einem System bis auf die Ebene einzelner Mikroprozessorbefehle überwachen lassen. Ein solcher Hardware Debugger benötigt aber auch Hardware-Unterstützung, die heute meist in einer Kombination von On-Chip-Debug-Einheiten auf dem Chip und einer externen Box für Zwischenspeicherung und Verarbeitung der Daten bereitgestellt wird. Und dann ist auch noch ein eigenes Debug Interface nötig wie JTAG oder Nexus, denn schließlich sollen die Produktiv-Schnittstellen ja nicht vom Debugging beeinflusst werden. Damit ist diese Form der Systemanalyse die tiefgehendste, aufwendigste, aber auch teuerste Lösung, um zu sehen, was innen drin passiert. Nicht immer ist dieser Aufwand nötig, z.B. dann nicht, wenn man auf eine fertige und getestete Hardware zurückgreift und ein (Echtzeit-) Betriebssystem installiert. Dann liegt bereits ein lauffähiges System vor, das startet, dank eines BSP (Board Support Package) die Peripherieeinheiten ansteuert und „Hello World“ ausgeben kann. Hier reichen für den Software-Entwickler Werkzeuge, die nicht mehr die einzelnen Bits und Bytes unter die Lupe nehmen, sondern auf Hochsprachenebene zeigen, was sich in CPU und Speicher tut. Wir haben Jiohn Carbone, Vice President of Marketing bei Express Logic, gefragt, was das neue Tool macht.

Wie kann ein System durch ViewX optimiert werden?

John Carbone: Auf vielerlei Art und Weise. Hier ein paar Möglichkeiten:

Die CPU-Auslastung über alle Threads zeigt, welche Threads am meisten CPU-Last verursachen. Dadurch kann der Entwickler sich bei der Optimierung auf den Code konzentrieren, der die meisten CPU-Zyklen beansprucht, anstatt blind das Gesamtsystem zu optimieren. Die Speicherbelegung zeigt, wieviel Stack-Speicher jeder Thread nutzt, was den Entwickler in die Lage versetzt, den Speicherverbrauch zu optimieren. Einem Thread zu viel Speicher zuzuweisen wäre Verschwendung, während zu wenig zu einem Stack-Überlauf führt, was einen Programmabsturz zur Folge hat. Die Messungen für die Netzwerkleistung zeigen den Durchsatz und die Belegung des Packet Pool, also des Zwischenspeichers für die Netzwerkpakete. Wenn der Packet Pool geleert ist, wird die Netzwerkübertragung unterbrochen, weil erst weitere Daten aus dem Speicher nachgeladen werden müssen. In diesem Fall könnten z.B. kleinere Pakete zu einer effizienteren Übertragung führen.

Wie kommt ViewX an die Daten heran? Geht das denn wirklich in Echtzeit?

Carbone: Auf dem Zielsystem läuft ein Target-Agent. Das ist ein kleines Monitor-Programm, das die gewünschten Daten in Echtzeit sammelt und in bestimmten Zeitabständen oder auf Anfrage zum Entwicklungscomputer schickt. ViewX kommuniziert mit dem Target-Agent auf dem Zielsystem über TCP/IP und kann dazu Ethernet oder WiFi, USB, eine serielle Schnittstelle oder JTAG nutzen. ViewX sammelt keine Prozessor-Instruktionen, sondern Anwendungs- und Systemdaten.