Debug Instructions

Gast #4232316
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
#4232434
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.
Gast #4232473
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.