Werkzeuge für Embedded-System-Debugging - All

Transcription

Werkzeuge für Embedded-System-Debugging - All
SYSTEMS ENGINEERING
Entwicklungssysteme
Werkzeuge für
Embedded-System-Debugging
Ein Software-Simulator ist unabhängig von der Hardware, die entwickelt
wird. Dagegen ersetzt ein In-CircuitEmulator nahtlos den Zielprozessor
für maximale Kontrolle über die
Hardware. In Bezug auf Kosten und
Leistung liegen die anderen Werkzeuge zwischen diesen beiden Konzepten. Die Vorteile eines Werkzeugs
bei der Verkürzung des Produktentwicklungszyklus werden um so grösser, je besser das Werkzeug in die Hardware des Endprodukts integriert ist.
In-Circuit-Emulation
In-Circuit-Emulatoren (ICE) können
Code in Echtzeit ausführen, Peripheriefunktionen komplett nachbilden
und Breakpoints überwachen. HighEnd-Emulatoren bieten darüber hinaus Echtzeit-Trace-Buffer, manche
von ihnen können die Befehlsausführung mit Zeitmarken für ein CodeProfiling versehen. Emulatoren kann
man an Stelle des Embedded-Prozessors in das Zielsystem einsetzen.
Manchmal implementiert man ICEs
mit einem speziellen ASIC oder FPGA,
Simulation
der die Codeausführung und Peripherieelemente des Coreprozessors
Für viele Embedded-Prozessoren
nachbildet. Mit diesem Konzept kann
gibt es Software-Instruktionssimulaein Emulator zwar mehrere Prozestoren. Einige von ihnen beschränken
sorfamilien abdecken, möglicherweisich ausschließlich auf die Simulation
se treten dabei aber Verhaltensunder Befehlsausführung. Die meisten
terschiede zwischen dem eigentlibieten Breakpoints, wodurch man
chen Bauteil und dem Emulator auf.
den Code schnell bis zur AbarbeiManche Hersteller verknüpften das
tung einer definierten Instruktion
Verhalten von emulierten und echausführen kann. Mit Trace-Funktioten Mikroprozessoren durch die Entnen kann die Abfolge der ausgewicklung spezieller "Bond-out"führten Befehle dargestellt werden.
Emulationsbauteile. Diese SpezialBei allen Simulatoren kann der
bauteile arbeiten mit der gleichen
JOHN ANDREWS, JOHN DAY
Anwender auf die internen Register
Schaltungstechnologie wie der Zieldes Prozessors lesend und schreiprozessor und eröffnen dem Emulabend zugreifen, und die simulierte
tor den Zugriff auf interne DatenreDie branchenüblichen Werkzeuge für die EntwickProgrammausführung steuern. Wähgister, Programmspeicher und Perilung von Embedded-Systemen reichen von reinen
rend die Simulation von Befehlen
pherieelemente. Dazu eliminiert man
Softwaremonitoren und Simulatoren bis zu
sinnvoll für die Entwicklung von Alden internen Programmspeicher des
gorithmen ist, erfordern embedded
spezialisierter Hardware für die In-Circuit-Emulation. Prozessors und stellt diesen Speicher
Systeme auf Grund ihres Aufbaus
über Emulations-RAM bereit. Die
Hauptzweck all dieser Werkzeuge ist die BereitstelZugriff auf Peripherieelemente wie
Mikrocontroller-Firmware wird in
lung eines Fenster auf die Betriebsabläufe der
I/O-Ports, Timer, AD-Wandler, Pulsden Emulations-RAM heruntergelaweiten-Modulatoren usw.
den; während der Ausführung dieser
Software im Inneren des Embedded-Prozessors.
Bei leistungsfähigeren Simulatoren
Instruktionen nutzt der "Bond-out"wie z. B. MPLAB-SIM sind viele PeriProzessor die gleichen Datenregister
pheriefunktionen wie I/O-Pins, Interrupts, Sta- damit die preisgünstigste Entwicklungsumge- und Peripherieelemente wie der Zielprozessor.
tus- und Steuerregister implementiert. Mit die- bung.
Dazu stellt man die I/O-Anschlüsse der "Bondsen Peripherie-Simulatoren lassen sich das Ti- Implementationen der Peripherieelemente out"-Schaltung auf den Sockel bereit, der an
ming und grundlegende Peripherieoperatio- erleichtern das Debuggen peripherer Interak- Stelle des zu emulierenden Zielprozessors in
nen verifizieren. Sie bieten eine Reihe von Sti- tionen und sind effektiver als Simulatoren, die das zu entwickelnde System eingesetzt wird.
mulus-Eingängen; diese reichen von Druckta- nur den Befehlssatz abarbeiten. Die Simulation Emulatorsysteme ermöglichen die direkteste
sten, die mit I/Os verbunden sind, über aller denkbaren externen Betriebszustände ist Verbindung zwischen dem Host mit der BedieI/O-Stimulusdateien mit logischen Vektoren, aber sehr schwierig; viele Echtzeitsysteme las- nerschnittstelle und dem zu entwickelnden
regulären Takteingängen und der Wertein- sen sich per Simulation nur schwer debuggen. System. Der "Bond-out"-Chip bietet einen digabe in interne Register bis zur Simulation der Zudem arbeiten Simulatoren typisch mit rekten Zugriff auf I/O-Pins und PeripherieeleAD-Wandlungsdaten oder eines seriellen Geschwindigkeiten, die um den Faktor 100 bis mente. Der Emulations-RAM ermöglicht ein
Kommunikationseingangs. Viele embedded 1000 unter der des Embedded-Prozessors lie- schnelles Herunterladen des revidierten Codes
Systeme lassen sich sehr effektiv mit geeigne- gen (solange man Timeout-Delays bei der auf Knopfdruck. Moderne Emulatoren, wie
ten peripheren Stimulusdaten debuggen. Si- Simulation eliminiert).
der neue MPLAB-ICE 2000, bieten weitere
mulatoren sind oftmals gratis erhältlich und
Debugging-Hilfsmittel, wie z. B. bedingte Bre- ©
elektronik industrie 12 – 1999
http://www.elektronik-industrie.de
63
SYSTEMS ENGINEERING
Entwicklungssysteme
akpoints auf mehreren Ebenen und eine Tracefunktion für Instruktionen mit Datums- und
Zeitmarken. Mit dem MPLAB-ICE 2000 TraceAnalyzer kann man sogar ein System debuggen, ohne den Prozessor anzuhalten.
Wie bei allen anderen Geräten, erhält man
auch bei Entwicklungswerkzeugen das, wofür
man bezahlt. Komplex aufgebaute Trace-Buffer, Hochgeschwindigkeits-Emulations-RAM
und spezielle "Bond-out"-Chips machen den
Emulator teurer als weniger leistungsfähige
Entwicklungswerkzeuge. Manche Emulatoren
können sogar die maximale Taktgeschwindigkeit von Prozessoren oder die Betriebspannung einschränken. Die Verkabelung mit dem
zu entwickelnden System kann umständlich
sein und möglicherweise sogar Hf-Störungen
verursachen. Bei mechanisch sehr kompakt
aufgebauten Systemen ist es oftmals schwierig, den Emulatortastkopf an Stelle des Zielprozessors anzuschließen.
Anschluß an die Hardware und
Emulation
Der große Leistungs- und Preisunterschied
zwischen dem kompletten Austausch des Zielprozessors durch die Emulation und der Interpretation von Informationen aus einem Softwaresimulator bietet viel Raum für Zwischenlösungen. Der Simulator liefert die grundlegende,
für ein Cross-Development von embedded
Hardware erforderliche Benutzerschnittstelle:
Breakpoints, Einzelschrittbetrieb, Überwachung
von Variablen usw. Die wichtigste Einschränkung eines Simulators ist seine vollständige
Trennung von der eigentlichen Ziel-Hardware.
"Burn and Learn" FirmwareDebugging
Wer simuliert, wird seine Run-Time FirmwareEntwicklung meist im "Burn and Learn" Verfahren erledigen. Dazu brennt man zunächst
ein Chip auf einem Programmer, setzt dies in
die Ziel-Hardware ein, und beobachtet, wie
das System abstürzt. Nach eingehender Analyse und Überprüfung der Symptome per
Simulation verändert man den Quellcode,
stellt das ausführbare Programm um und
brennt einen weiteren Chip. Dieser "Burn and
Learn"-Zyklus läuft mehrmals ab. Ohne Zugriff
auf internen Prozessor-RAM, Breakpoints, Programmzähler und schnelle Downloads zum
Programmspeicher kann dieses Debugverfahren ineffizient, langsam und mühsam sein. Für
die Ausgabe wichtiger Debuginformationen
kann man Routinen erstellen, mit denen sich
die Daten über einen seriellen Port zur Anzeige
auf einen Terminal ausgeben lassen. Zur Anzeige des Programmablaufs kann man I/O-Pins
hin- und herschalten. Liefert das Zielsystem während seines Betriebs weitere Symptome, so
kann man am Quellcode natürlich Verände-
64
Bild 1: Aufbau einer In-Circuit-Emulation
rungen vornehmen. Sonst aber ist es ziemlich
frustrierend, wenn man beim Debuggen mit
der "Burn and Learn" Methode raten muß,
wieso sich das System jetzt genau so verhält.
In-Circuit Simulatoren
Simuliert man Code, bei dem Verzweigungen
abhängig vom Zustand eines Eingangspins
oder einer anderen Hardwarebedingung sind,
dann muß der Simulator diesen Zustand aus
der realen Ziel-Hardware erkennen. Meist liefert man diese Information in Form von Simulator-Stimulusdaten. Könnte der Simulator diesen Stimulus direkt von der Ziel-Hardware
abfragen, so würde man sich einen Schritt
weit von einer reinen Softwarelösung entfernen und bereits näher an ein Hardware-Debugging herankommen. Das SIMICE Entwicklungswerkzeug für die 8-bit PIC16C5X Mikrocontrollerfamilie tut genau das: Es integriert
die Funktionen des MPLAB-SIM-Simulators mit
einem Kommunikationsmodul, das als Zielpro-
Die wesentlichen Merkmale von MPLAB-ICD
In-Circuit Run-Time debugging
Codeausführung in Echtzeit
Einzelschrittbetrieb
Ein Hardware-Breakpoint
Lese- und Schreibzugriff auf den Datenspeicher
3,0V bis 5,5V
32kHz bis 20MHz
PIC16F87X Bauteilprogrammierung über ICSP
Entwicklungs- und Evaluationskit für PIC16F87X
Kommunikation mit PC über serielle Schnittstelle mit bis zu 57600 Baud
Nutzt die integrierte MPLAB Entwicklungsumgebung:
Grafische Bedienerschnittstelle
Editor
Assembler
Linker
Simulator
Projekt-Managing-Werkzeuge
Symbolisches Source-Level-Debugging
Schnittstelle zu High-Level-Sprachen
Symbolisches Watch-Window
Einzelschritt-Ausführung des Quellcodes und Breakpoint-Funktion
Schnittstelle zum ICD und zu anderen Hardware-Tools
Emulatoren
Bauteile-Programmer
http://www.elektronik-industrie.de
elektronik industrie 12 – 1999
SYSTEMS ENGINEERING
Entwicklungssysteme
zessor arbeitet. Dieses Modul liefert Stimulussignale für die Simulation direkt von den digitalen Eingangspins des Zielprozessors und
ermöglicht dem Simulator, binäre Werte an
den Ausgangspins einzustellen. Diese Kompromißlösung verknüpft den Simulator etwas
enger mit der Hardware und überwindet das
Kostenproblem eines Emulators. Steht ein gut
entwickelter Softwaresimulator bereit, dann
kann dieser noch mehr Nutzen bieten, wenn
man ihn um ein Werkzeug zur Aufnahme von
Stimulussignalen ergänzt, das mit der ZielHardware kommuniziert. Dies löst allerdings
noch immer nicht alle Probleme. Ein solches
Werkzeug läuft noch immer auf der Geschwindigkeit des Simulators und kann daher
Ausgangspins nicht schnell genug einstellen
und löschen, um zeitkritische Funktionen, wie
ein Software-UART, zu implementieren. Dieses
Werkzeug unterstützt außerdem keine der
komplexeren Peripheriefunktionen von höher
integrierten 8-bit Mikrocontrollern aus der
Microchip Mittelklasse-Produktfamilie, wie
AD-Wandlung und Pulsweitenmodulation.
Diese Einschränkungen können ernsthafte
Ausfälle beim Debuggen der meisten embedded Systeme verursachen.
elektronik industrie 12 – 1999
Run-Time-Monitore
Der Kommunikationskanal zwischen dem
Host-Entwicklungssystem und der zu entwikkelnden Ziel-Hardware ist eine lebenswichtige
Funktion bei In-Circuit-Simulatoren. Wenn ein
solcher Kanal bereit steht, dann kann man die
Ausführung des Zielcodes als nächsten logischen Schritt aus dem Simulator des Hostsystems auslagern und ihn auf der ursprünglichen Ziel-Hardware ablaufen lassen. Eine solche Abarbeitung des Codes über Multiplexing
und die Übermittlung von Debugging-Informationen mit einem Cross-Development-Host
bezeichnet man als Run-Time Monitor.
Für die Kommunikationsfunktion benötigt ein
solches Werkzeug meist etwas ähnliches wie
z.B. ein UART in der Ziel-Hardware. Der Host
kann nun Befehle an den Zielprozessor ausgeben, damit dieser Funktionen wie das Einstellen oder Lesen von Speicherinhalten ausführen
kann. Dies ermöglicht auch ein gewisses Maß
an Kontrolle über die Codeausführung. Software-Breakpoints lassen sich implementieren,
indem man Befehle dort einfügt, wo die Codeausführung auf den Monitor verzweigen und
dem Anwender des Bedienerschnittstellen-Hosts
Anforderungen für Run-Time
Ressourcen
Neben den I/O-Pins der Schnittstelle belegt
der ICD eine Reihe weiterer Prozessor-Ressourcen. Weil der Debugger-Kernel im
Zielprozessor liegt und abläuft, belegt er
einen kleinen Teil der dort verfügbaren
Ressourcen:
e
e
e
e
ca. 256 Worte des
Testprogrammspeichers
ca. 10 Byte des allgemeinen RAM
ein Level des HardwareSubroutinen-Stacks
zwei Universal-I/O-Pins
In Bezug auf die Prozessorbandbreite gilt
das gleiche wie für einen Run-Time Monitor.
Steuermöglichkeiten und Daten liefern soll. Auch
hier gilt: wenn das Hostsystem-Simulationswerkzeug die Bedienerschnittstelle bereitstellen kann, dann läßt sich bestehende Technolo©
gie mit größerem Funktionsumfang nutzen.
http://www.elektronik-industrie.de
65
SYSTEMS ENGINEERING
Entwicklungssysteme
Software-Breakpoints kann man während des
Kompilierens einbauen. Andere Funktionen,
wie die Verknüpfung (hooking) mit einem
periodischen Timerinterrupt zum Kopieren
wichtiger Daten vom Ziel zum Host, lassen sich
ebenfalls bei der Erstellung einer ausführbaren
Datei einbinden. Da man bei dieser Technik
während der Programmausführung keine
Daten in den Programmspeicher schreiben
muß, kann man dieses Verfahren auch im
"Burn and Learn" Debugging mit einmalprogrammierbaren Bauteilen nutzen. Erstaunlicherweise rechnet man die für das UV-Löschen
von Bausteinen mit Fenster benötigte Wartezeit nicht in die "Crash, Erase and Burn”Zykluszeit ein. Müssen Änderungen schnell
ausgeführt werden und stehen nur wenige
Bauteile bereit, dann kann der Löschvorgang
mit Abstand am meisten Zeit beanspruchen.
Monitore findet man daher meist in Systemen
mit RAM oder Flash-Programmspeichern, die
sich schnell und ohne UV-Löschzyklus beschreiben lassen.
Die für eine Übertragung von Debugging-
ein reines Software-Werkzeug ist, das auf dem
Zielprozessor ausgeführt wird, bietet das
Werkzeug nur begrenzte Kontrollmöglichkeiten für die Programmausführung. Ergänzt
man die Hardware des Zielprozessors um nur
einige wenige Support-Funktionen, so wird
der Software-Monitor zu einem System, das
alle Grundfunktionen eines Emulators bietet.
In-Circuit-Debugger
Sobald man den Zielprozessor um Hardwarefunktionen auf dem Chip erweitert, leistet das System mehr als ein Software-Monitor. Entwicklungswerkzeuge mit besonderen
Chipfunktionen für Code-Debugging und serielle Kommunikation zwischen Host und Target
nennt man "Debugger". Früher boten Systeme mit externem RAM-Programmspeicher
diese Funktion. Seitdem es reprogrammierbare
Flash-Programmspeicher gibt, wurden In-Circuit-Debugger-Werkzeuge für Single-Chip
Embedded-Mikrocontroller machbar. Bei In-
Bild 2: Hardwarekonfiguration MPLAB-ICD
Daten zum Host oder zum Herunterladen
einer neuen ausführbaren Datei, d. h. des
eigentlichen Monitor-Codes, nötigen Routinen belegen im Zielbauteil einen gewissen
Bereich des Programmspeichers. Zudem benötigen sie auch einiges an Datenspeicher und
beanspruchen neben dem UART oder anderen
Kommunikationsbauteilen einen Teil der Bandbreite des Zielprozessors. Glücklicherweise
fällt der Großteil dieses Overheads dann an,
wenn kein Zielcode ausgeführt wird. Das
Hochladen von Datenwerten in ein Beobachtungsfenster nach Ausführung eines Software-Breakpoints, oder das Herunterladen
einer neuen Zielcode-Version erfolgen jeweils,
wenn kein Zielcode ausgeführt wird.
Im Vergleich zu einer Simulation, die getrennt
von der Ziel-Hardware abläuft, sind die Funktionen eines Run-Time-Monitors ein großer
Fortschritt. Weil der Run-Time-Monitor aber
66
Circuit-Debuggern kann sich der EmbeddedProzessor selbst emulieren.
Beispiel für die Implementation eines
In-Circuit Debuggers
Der MPLAB-ICD (In-Circuit-Debugger) ist ein
leistungsfähiges und kostengünstiges RunTime Entwicklungswerkzeug (Bild 2). Dieses
Werkzeug beruht auf den PIC16F877 8-bit
Flash-Mikrocontrollern; es läßt sich für Entwicklungsarbeiten bei dieser Bauteilfamilie
und anderen Microchip Mikrocontrollern aus
der PIC16CXX Familie verwenden. Zusammen
mit dem In-Circuit Serial Programming (ICSP)Protokoll ermöglicht diese Funktion eine
kosteneffektive In-Circuit Flash-Programmierung und das Debuggen über die graphische
Bedienerschnittstelle der integrierten MPLAB-
http://www.elektronik-industrie.de
Entwicklungsumgebung. Das Werkzeug erlaubt das Bearbeiten von Quellcode mit Variablenüberwachung, Einzelschritt-Codeausführung und Breakpointdefinitionen. Mit Programmausführung bei voller Geschwindigkeit
kann man die Hardware in Echtzeit überprüfen.
Der MPLAB-ICD dient auch als Programmer für
die PIC16F87X Familie mit Flash-Speicher.
Der modular aufgebaute In-Circuit-Debugger
besteht aus drei Grundkomponenten: dem
ICD-Modul, dem ICD-Header und dem DemoBoard. Die MPLAB-Softwareumgebung ist
über die serielle Schnittstelle mit dem ICDModul verbunden. Unter Kontrolle von MPLAB
kann das Modul über das ICSP-Protokoll das
PIC16F87X-Ziel programmieren oder Befehle
an das Bauteil ausgeben. Dieses Protokoll wird
über ein ca. 20 cm langes sechspoliges Kabel
mit Modularsteckern und -buchsen übertragen. Für einen direkten Anschluß an das ICDModul läßt sich eine Modularbuchse in die
Zielleiterplatte integrieren, oder man nutzt
den ICD-Header zum Anschluß an einen DIPSockel. Der ICD-Header enthält ein PIC16
F877-Ziel, eine Modularbuchse zum Anschluß
an das ICD-Modul sowie DIP-Stecker mit 40
und 28 Pins zum Einstecken in die Zielleiterplatte. Der Anwender kann das ICD in seine
eigene, spezielle Hardware einstecken oder
das mitgelieferte Demo-Board verwenden.
Dieses Board enthält DIP-Sockel mit 40 und 28
Pins zur Aufnahme eines Bauteils oder des
ICD-Headers. Zusätzlich enthält die Baugruppe
LEDs, DIP-Schalter, ein analoges Potentiometer
und einen Bereich zum Aufbau eigener Schaltungen. Auch wenn noch keine eigene Hardware bereitsteht, ist eine sofortige Microchip
Mikrocontroller-Prototypenentwicklung und
eine Evaluation des MPLAB-ICD mit dem mitgelieferten Board möglich. Das komplette
MPLAB-ICD
Hardware-Entwicklungssystem
mit der gratis enthaltenen MPLAB Host-Software ist ein komfortables, preisgünstiges RunTime-Entwicklungswerkzeug.
MPLAB-ICD Run-Time-Betrieb
Zusammen mit der Targetfirmware wird der
Debugging-Kernel über die ICSP-Schnittstelle
heruntergeladen. Nach einem Einzelschrittbetrieb oder nach Eintreffen eines Halt-Befehls
vom Host aktiviert ein nichtmaskierbarer Interrupt den Kernel, sobald der Programmzähler
eine zuvor angewählte Hardware-BreakpointAdresse erreicht. Wie bei allen Interrupts wird
dabei die Wiedereintrittsadresse in den Stack
eingefügt. Bei einem Reset wird das Breakpoint-Register auf den Wert des Resetvektors
gesetzt, sodaß der Kernel sofort aktiviert wird,
wenn das Bauteil aus dem Reset heraus hochfährt. Unmittelbar nach dem Herunterladen
von Daten gibt das ICD-Modul einen ResetBefehl an das PIC16F877-Ziel aus. Damit wird
der Kernel nach einem Download-Befehl aktiviert und die Kontrolle geht an die auf dem
elektronik industrie 12 – 1999
SYSTEMS ENGINEERING
Entwicklungssysteme
Burn&Learn
SoftwareSimulation
In-CircuitSimulation
In-CircuitEmulation
In-CircuitDebugger
Code-Ausführung in Echtzeit
Ja
Nein
Nein
Ja
Ja
Geringe Kosten
Ja/Gratis
Ja/Günstig/Gratis
Ja/Günstig
Nein
Ja/Günstig
Komplette
Implementation von
Peripheriebauteilen
Ja
Nein/Begrenzt
Ja/Begrenzt
Ja
Ja
Automatisches
Herunterladen eines
neuen Programms
Nein
Ja
Ja
Ja
Ja
Keine Verringerung
der Zahl der Target-I/O-Pins
beim Debugging
Ja
Ja/Manchmal
Ja/Manchmal
Ja
Nein
Verkabelung mit ZielSystem
Keine
Keine
Komplex
Komplex
Einfach
Betrachten und
Modifizieren von RAM und
Peripherieschaltungen
Nein
Ja
Ja/Begrenzt
Ja
Ja
Benötigte Ressourcen
für das Debugging
Keine
Keine
Serieller Port,
einige I/O-Pins
Keine
Zwei I/Os oder
weniger, sehr
wenig RAM für
Programm- und
Datenspeicher
Einfacher Anschluß
des Debuggers
an das Target
Keine
Keine
Nein/Komplex
Nein/Komplex
Ja
Real-Time Trace-Puffer
Keiner
Nein/Begrenzt
Nein/Begrenzt
Ja
Nein
Einzelschrittbetrieb
Nein
Ja
Ja
Ja
Ja
Hardware-Breakpoints
Keine
Ja/Unbegrenzt
Einer/Unbegr.
Einer/Unbegr.
Ja/Einer
Tabelle 1: Gegenüberstellung der verschiedenen Debugmöglichkeiten
Host laufende MPLAB-Umgebung über. Nun
läßt sich der Zielprozessor nach Wunsch steuern. Alle Register im RAM, wie z.B. Programmzähler und andere Sonderfunktionsregister
lassen sich modifizieren oder abfragen. Man
kann im Einzelschrittbetrieb arbeiten, einen
Breakpoint setzen, animieren oder mit der Programmausführung in voller Geschwindigkeit
beginnen. Unmittelbar beim Anhalten der Programmausführung wird die letzte Programmzähleradresse vor Aktivierung des Kernels
abgespeichert. Damit kann MPLAB im Quellcode die Stelle anzeigen, an der die Ausführung angehalten wurde. Sobald der Anwender den Target-Host weiterlaufen läßt,
führt der Kernel-Code einen "return from
interrupt" - Befehl aus, und die Codeausführung läuft ab der aus dem Hardware-Stack
entnommenen Adresse weiter.
elektronik industrie 12 – 1999
Anforderungen für die HardwareUnterstützung
Die erforderlichen Hardwareschaltungen bestehen im wesentlichen aus dem BreakpointAdressregister und -komparator sowie etwas
Logik für den Einzelschrittbetrieb bzw. zur
Erkennung der asynchronen Befehle vom
Host. Die ICSP-Schnittstelle für die Programmierung des Bauteils ist bereits vorhanden. Bei
Nutzung dieses Kanals für das In-CircuitDebugging dürfen diese I/O-Pins nicht für andere Run-Time-Funktionen verwendet werden.
Tabelle 1 faßt die wichtigsten Funktionen von
Emulatoren, Simulatoren und In-circuitDebuggern zusammen. Schon mit den grundlegenden Run-Time- Funktionen eines In-circuit Debuggers – Einzelschritt- und Echtzeitsausführung von Code mit Variablenüberwachung – kann man bei vielen Designs gute
Ergebnisse erzielen, bei denen man früher
einen Emulator hätte einsetzen müssen. Inve-
stiert man von Anfang an in die richtigen Entwicklungswerkzeuge, so kann man schnellere
Entwicklungs- und Debuggingzeiten erreichen.
551
John Andrews und John Day sind Senior Field
Applications Engineers der Firma Microchip Technology Inc., Chandler, AZ, USA.
http://www.elektronik-industrie.de
67

Documents pareils