Software-Entwicklung am offenen Herz Debugging mit Cortex-M3-Mikrocontrollern

Die Cortex-M3-Mikrocontrollerfamilie ist mit der neuen Debug- und Trace-Einheit „ARM CoreSight“ ausgestattet.Gegenüber bisherigen On-Chip-Debug-Lösungen weist CoreSight eine ganze Reihe neuer Funktionen auf, die fast an einen traditionellen In-Circuit-Emulator heranreichen.Trotzdem geht CoreSight ökonomisch mit den knappen externen Anschlüssen des Chips um.

Der Cortex-M3-Prozessor von ARM ist mit der Debug- und Trace-Technik „ARM Core-Sight“ ausgestattet, die die Funktionendes klassischen On-Chip-Debugging-Blocks „Embedded ICE“ deutlich vergrößert. Zusätzlich zum normalen Debugging mit Programmablaufsteuerung wartet die CoreSight-Technik mit On-the-Fly-Speicherzugriff, Daten-Tracing, Event-Tracing und Instrumentation-Tracing über einen herkömmlichen, preisgünstigen JTAG-Anschluss auf.

Zusammen mit Entwicklungs-Tools nach neuestem Stand der Technik sorgen diese neuen Methoden für eine erhebliche Beschleunigung der Software-Verifikation und des Debuggings von Programmen. Bevor es das On-Chip-Debugging gab, setzten die meisten Software-Entwickler teure In-Circuit-Emulatoren (ICE) zum Testen von Applikationen auf Mikrocontrollern ein. Anspruchsvolle Emulatoren wurden über komplexe Adapter angeschlossen und boten außerdem weitreichende Befehls- und Daten-Tracing-Fähigkeiten mit komplexen Triggerfunktionen. Diese Emulatoren basierten auf speziellen Bond-out-Bausteinen, die von den Bauelementen aus der Serienproduktion abwichen und im Vergleich zu normalen Mikrocontrollern sehr teuer waren. Die sehr hohen Taktfrequenzen moderner Mikrocontroller und die miniaturisierten Gehäuse mit Unmengen von Anschlüssen machen die Nutzung der traditionellen ICE-Technologie mittlerweile unmöglich. Moderne Mikrocontroller sind mit On-Chip-Debugging-Logik ausgestattet, die den Speicher, die CPU-Register und die Programmverarbeitung einer Beobachtung zugänglich macht.

Diese Logik ist in allen Bausteinen aus der Serienfertigung enthalten und deshalb in ihrem Umfang begrenzt, um keine Mehrkosten entstehen zu lassen. Da der Zugriff jedoch meist über ein standardmäßiges JTAG-Interface erfolgt, fehlt es zudem an der für das Instruction-Tracing erforderlichen zusätzlichen Bandbreite, und so beschränkt sich der Großteil der On-Chip-Debug-Implementierungen auf die einfache Ablaufsteuerung des Programms mit einem begrenzten Umfang an Breakpoint-Features. Mikrocontroller auf Basis des Cortex-M3-Prozessors sind dagegen mit ARMs Core-Sight-Debug-Technologie ausgestattet, die über einen konventionellen JTAG-Anschluss und ohne teure Hardware nützliche Trace-Informationen zur Verfügung stellt (Tabelle 1).

Die On-Chip-Debug-Technologie von ARM

Mit der Einführung des Prozessors ARM7TDMI stellte ARM die On-Chip-Debug-Lösung „Embedded ICE“ vor. Es handelt sich hierbei um einen kostengünstigen Hardware-Block, der umfassende Run-Control-Features mit zwei hardwaremäßigen Break-Registern zur Verfügung stellt, die entweder durch die Programmausführung oder durch Speicherzugriffe getriggert werden können. Ein zusätzlicher „Debug Communication Channel“ (DCC) ermöglicht während der Programmausführung den Datenaustausch mit der Applikation des Anwenders. Der Embedded-ICE ist die standardmäßige Debug-Einheit in allen ARM7TDMI oder ARM9-Mikrocontrollern, die es derzeit von zahlreichen Halbleiteranbietern gibt.

Von der Tool-Industrie wird der Embedded-ICE in großem Umfang mit standardisierten, kostengünstigen JTAG-Adaptern unterstützt, die den Verzicht auf teure Hardware-Adaptionen ermöglichen. Da der Embedded-ICE-Block als On-Chip-Debug-Hardware allerdings keine Daten oder Befehle aufzeichnen kann, enthalten einige der ARM-Mikrocontroller auch die „Embedded Trace Macrocell“ (ETM). Die mit dem Befehls-Tracing einhergehenden hohen Datenraten sind jedoch auf Datenausgangsleitungen zusätzlich zu den standardmäßigen JTAG-Pins angewiesen. Ein spezieller ETM-Emulator dient dem Anschluss an diese ETM-Datenausgänge und interpretiert dieTrace-Informationen. In Mikrocontrollern belegt die Embedded Trace Macrocell I/O-Leitungen, die eigentlich von der Anwender-Applikation benötigt werden, sodass die ETM von den Ingenieuren häufig nicht genutzt werden kann.

Mit dem Ziel, die Zahl der für das Debugging erforderlichen I/O-Pins zu minimieren, stellt die neue CoreSight-Lösung an einem herkömmlichen JTAG-Anschluss zusätzliche Betriebsarten zur Verfügung: Einen Standard-JTAG-Modus für den Anschluss an eine JTAG-Chain oder für JTAG-Adapter bisheriger Bauart. Diese Betriebsart benötigt fünf Pins. Einen Serial-Wire-Modus, der für das Run-Control-Debugging mit nur zwei I/O-Pins auskommt. Der Serial-Wire-Modus stellt eine abweichende Betriebsart des JTAG-Ports dar, deren Kommunikation ausschließlich über die Pins TCLK und TDI abläuft. In der Serial-Wire-Betriebsart kann ein zusätzlicher SWV-Ausgang (Serial Wire Viewer) auf der TDO-Leitung zur Ausgabe von Daten-Trace-, Befehls-Trace- und Instrumentation-Trace-Informationen dienen.

CoreSight ist die in Mikrocontrollern auf Basis des Cortex-M3-Prozessors eingesetzte Debug-Technologie. Für den Anschluss an die Debug-Einheit wird lediglich ein preisgünstiger JTAG-Adapter (z.B. Keil ULINK2) benötigt. Abgesehen von den Trace-Features, implementiert die CoreSight-Einheit zusätzliche Break-Register und erlaubt Speicher-Zugriff auch während laufender Programmausführung, ohne dass zusätzlicher Software-Aufwand entsteht.