Forum: Mikrocontroller und Digitale Elektronik Wie funktioniert Debugger bei Mikrocontroller.


von skorpionx (Gast)


Lesenswert?

Wie funktioniert Debugger bei Mikrocontroller (AVR, PIC). Ist das nur 
eine Simulation im PC oder der Mikrocontroller macht dabei mit und 
liefert interne reale Werte. Wie ist dann mit Breakpoints.

von Ralf (Gast)


Lesenswert?

> Wie funktioniert Debugger bei Mikrocontroller (AVR, PIC). Ist das nur
> eine Simulation im PC...
Wenn's eine Simulation wäre, würde es Simulator heissen :)

>  oder der Mikrocontroller macht dabei mit und liefert interne reale Werte.
Er macht mit. Und die Werte sind vom µC.

> Wie ist dann mit Breakpoints.
Was soll damit sein? Wenn der Debugger merkt, dass der Programmcounter 
die Adresse des BP erreicht hat hält er den µC an.

Ralf

von skorpionx (Gast)


Lesenswert?

Ralf schrieb:
> Er macht mit. Und die Werte sind vom µC.

Dann muss Mikrocontroller durch interner Aufbau dazu geeignet sein... 
Sind das alle Typen von Mikrocontroller dazu fähig? Wie läuft dann die 
Kommunikation Mikrocontroller<->PC (hardwaremäßig...) ?

von Der (Gast)


Lesenswert?

Ralf schrieb:
>> Wie ist dann mit Breakpoints.
> Was soll damit sein? Wenn der Debugger merkt, dass der Programmcounter
> die Adresse des BP erreicht hat hält er den µC an.
Falls das ein Prozessor kann, nennt man das Hardware Breakpoint.
Es gibt auch Softwarebreakpoints: Beim Anklicken eines Breakpoints wird 
der Flash des µCs neu geschrieben und an der entsprechenden Stelle ein 
BRK-Befehl (oder wie auch immer der Hersteller den nennt) eingefügt. 
Wird dann ähnlich wie ein Interrupt behandelt. In der "ISR" nimmt der 
Controller die Anfragen des PCs entgegen und sendet entsprechende Daten.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ralf schrieb:
> Wenn's eine Simulation wäre, würde es Simulator heissen :)

Naja, streng genommen wäre das durchaus auch ein Debugger.  Er
kann halt eine Simulation oder eine Emulation als Backend haben,
wobei die Emulation heutzutage eigentlich auch keine mehr ist,
sondern eben ein Eingriff in den tatsächlichen Prozessor.
(Vor 10+ Jahren waren Emulatoren noch so aufgebaut, dass der
jeweilige Digitalteil in einem FPGA emuliert worden ist, bei dem
man dann zusätzliche Eingriffsmöglichkeiten fürs Debuggen geschaffen
hat.  Ein Beispiel für so ein Gerät wäre das Atmel ICE-50.)

skorpionx schrieb:
> Wie läuft dann die
> Kommunikation Mikrocontroller<->PC (hardwaremäßig...) ?

Da kann man prinzipiell alles nehmen, über das man überhaupt
kommunzieren kann.  Uralt ist die Technologie, im Zielsystem ein
sogenanntes Monitorprogramm laufen zu lassen, welches die Steuerung
über das eigentliche Programm übernimmt.  Mit dem Monitor kommuni-
ziert man dann bspw. über eine UART.

Sehr ähnlich funktioniert Atmels debugWIRE, nur das die Kommunikation
über den /RESET-Pin als Eindraht-Bus abgewickelt wird.

Recht gängig bei vielen Herstellern ist es, dass man Controller, die
mit einer JTAG-Schnittstelle ausgerüstet sind (deren ursprünglicher
Zweck die Möglichkeit zum Hardwaretest der verlöteten Leiterplatten
ist) auch auf diesem Wege debuggen kann.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

skorpionx schrieb:
> Ralf schrieb:
>> Er macht mit. Und die Werte sind vom µC.
>
> Dann muss Mikrocontroller durch interner Aufbau dazu geeignet sein...
> Sind das alle Typen von Mikrocontroller dazu fähig? Wie läuft dann die
> Kommunikation Mikrocontroller<->PC (hardwaremäßig...) ?

Man sollte die Antwort für einen Anfänger nicht zu kompliziert 
schreiben, denn sonst weiß er nicht was er für sinnvolle Fragen in der 
Zukunft stellen soll.

Das geht so:

Mikrocontroller
der hat ein paar Pins für die Debug-Schnittstelle (siehe Doku)

die Pins + Reset + Stromversorgung werden verbunden an:

JTAG-Adapter oder Programmieradapter oder z.B. bei Pic PICKIT-III

Der Programmieradapter ist per USB mit dem PC verbunden

bei PIC gibt es ein PC-Programm "MPLAB", dem muss man erst sagen welche 
Variante des Programmers man nutzt und schon kann die Software über USB 
über PICKIT-III über die paar Drähte eine Verbindung zum Mikrocontroller 
herstellen.

Eine Debug-Schnittstelle im Mikrocontroller kann man sich so vorstellen, 
wie ein Käfer, der eine "Handbedienung" des Prozessors jederzeit 
zulässt.

von Bronco (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> (Vor 10+ Jahren waren Emulatoren noch so aufgebaut, dass der
> jeweilige Digitalteil in einem FPGA emuliert worden ist, bei dem
> man dann zusätzliche Eingriffsmöglichkeiten fürs Debuggen geschaffen
> hat.  Ein Beispiel für so ein Gerät wäre das Atmel ICE-50.)
Ein Hoch auf den Fortschritt!

Ich erinnere mich noch mit Grauen den Hitex-C167-Emulator, wo ein hoher 
Turm von Adaptern auf den Chip obendrauf geschraubt wurde (Schraube 
wurde auf den µC geklebt). Eine halbe Umdrehung zu wenig und einer der 
144 Kontakte hat nicht kontaktiert, eine halbe Umdrehung zu viel und die 
Schraube ist abgerissen... Hab ich das Ding gehaßt!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.