Forum: Mikrocontroller und Digitale Elektronik Debug Instructions


von Enes A. (Gast)


Lesenswert?

Hallo zusammen,


ich hätte ein paar Fragen zu Debug-Instructions.

1. Was ist der Unterschied zwischen Debug-Instructions und den 
Instructions die im Software Manual des µC's steht?

2. Was macht der Debugger mit einem Debug-Instruction?

3. Was macht der µC mit dem Debug Instruction?

4. Was passiert wenn der Debugger selber diesen Instruction nicht kennt 
(z.b. in der Debug Instructions Tabelle vom Debuggerhersteller nicht 
vorhanden)?

5. Nehmen wir an in der Firmware steckt eine Debug-Instruction. Was 
macht dann der µC und was der Debugger mit diesem Befehl?



Ich möchte mich schon im Voraus bei euch für die Antworten bedanken.

Grüße

von Little B. (lil-b)


Lesenswert?

Was meinst du denn mit Debug Instructions?
Und auf welche Architektur beziehst du dich?

Der ARM z.B. hat einen Debug Core integriert, der Hardware Breakpoints 
und Data Watchpoints setzen kann, die Core anhalten und reseten kann, 
etc...
Diese Debug Core wird über JTAG (oder SWD) von einem Debugger 
angesprochen. Über diese Schnittstelle kann auch jeder beliebige 
Speicherbereich ausgelesen werden. Der Debugger wird dann vom PC über 
OpenOCD oder irgendein anderer Debug Server gesteuert, der einen Service 
für deine IDE zur Verfügung stellt. Das sind alles Protokolle, über die 
du dir normalerweise keine Gedanken machen brauchst, da der Debugger 
immer zum Mikrocontroller passt. (sollte er jedenfalls...)

Die Debug Instruction, die im Instruction Set deines Mikrocontrollers 
erläutert wird, ist ein Assemblerbefehl, der den Mikrocontroller anhält, 
als ob die Debug Core diesen angehalten hätte. Danach schickt der Debug 
Core ein Signal an den Debugger und weiter bis zur IDE, um dem 
Entwickler die Möglichkeit zu bieten, in den Programmfluss einzugreifen 
oder andere Dinge zu tun. Dies nennt man auch einen Software Breakpoint.

Punkt4 deiner Frage ist mir nicht schlüssig. Der verwendete Debugger 
muss zum Mikrocontroller passen, also gibt es da nichts, was der andere 
nicht kennen könnte.

von Enes A. (Gast)


Lesenswert?

Danke für die informative Antwort.

Also ich kann dir ja mal kurz sagen was mein Problem ist:

Und zwar haben wir eine Laufzeitmessungstool(Liefersoftware) welches 
eine Debug-Instruction rmtrap beinhaltet. Wenn ich dann debugge und 
genau zu dem rmtrap komme (und noch einen step einlege), sehe ich aufm 
Debugger dass er abstürzt (steht plötzlich auf Addressline 0 und überall 
im Code steht nop -> Wahrscheinlich Verbindung zum µC verloren).

Der rmtrap ist nicht im Manual des Controllers dokumentiert. Kennt es 
also nicht! Im Manual steht zusätzlich dass es bei unbekannten opcodes 
exception auslöst. Es erfolgt aber kein jump zu einem Exception. 
(Debugger stürzt zuvor ab).

Debuggerhersteller sagt der Debugger benutzt den rmtrap(debug 
instruction) nicht.

Controllerhersteller sagt: rmtrap ist nicht dokumentiert weil es ein 
debug instruction ist. Jetzt habe ich gefragt ob so eine Instruction 
überhaupt im Code sein darf. (warte noch auf antwort)

Hättest du auch eine gute Quelle wo ich nachlesen könnte wie das 
Zusammenspiel zwischen µC und Debugger genau funktioniert?

Danke.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Enes A. schrieb:
> welches eine Debug-Instruction rmtrap beinhaltet

Ist natürlich praktisch, wenn Du weiterhin nicht erwähnst, um was für 
einen Controller und Debugger es sich handelt.

von Enes A. (Gast)


Lesenswert?

Hallo,

sry.

Debugger: Lauterbach (LA 3500)
µC: rh850 p1x

von Enes A. (Gast)


Lesenswert?

Ok Leute hat sich erledigt. Liegt nicht am rmtrap. Es ist der Debugger 
selber der Abstürzt durch den rmtrap da er es nicht nutzt...

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.