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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.