Ich arbeite am Debuggen mit gdb. Ich wollte wissen, wie gdb intern arbeitet, um einen Bruckpoint auf einem eingebetteten Prozessor über JTAG zu setzen.Wie funktioniert ein Debugger wie GDB, um einen Haltepunkt über JTAG festzulegen?
Antwort
Es ist für jeden Prozessor anders, Sie müssen die Details des Jtag-Debuggers für den jeweiligen Prozessor nachschlagen. nicht nur die Prozessorfamilie, sondern auch ein bestimmter Prozessor. Die Datenblätter/Benutzerhandbücher sind, falls verfügbar, normalerweise vom Chiphersteller oder Kernlieferanten abhängig vom Produkt erhältlich.
Was ich wissen will, ist, dass nach dem Verbinden meiner Platine mit PC mit einem Jtag-Kabel, wenn ich zum Beispiel "bp 25" mit GDB tippe, was genau danach für diesen Befehl passiert, um mit meinem eingebetteten Prozessor (Microblaze) durch ausgeführt zu werden JTAG? – jenje
Sie müssen diesen Prozessor und die Jtag-Befehle nachschlagen, es könnten ein paar bis ein paar tausend verschiedene Befehle sein, die diese eine Sache implementieren. Ein Dutzend verschiedene Arten Prozessoren handhaben solch einen Befehl, etc. Wenn Sie nicht das Datenblatt nachschlagen möchten, dann schauen Sie in die gdb Quellen, gdb ist Open Source, die Antworten auf Ihre Fragen sind in offenen Dokumenten und Software in Ordnung. Bauen Sie gdb neu auf, fügen Sie einige printfs hinzu, graben Sie den Code von Interesse nach. –
Es programmiert entweder ein Hardware-Haltepunktregister oder setzt einen Software-Haltepunkt, indem die Anweisung am Haltepunkt durch eine Anweisung ersetzt wird, die eine Ausnahme verursacht.
Die paar Male, die ich GDB in Verbindung mit einer JTAG-Einheit verwendet habe, kommuniziert GDB über die JTAG mit Hilfe eines gdbserver
Programms, das die Details des JTAG behandelt. Zum Beispiel mit einer OpenOCD JTAG Einheit: http://openocd.sourceforge.net/doc/html/GDB-and-OpenOCD.html
Dies bedeutet im Wesentlichen, dass GDB nicht so gut wie nichts über die JTAG-Einheit nicht kennt - es beruht auf der gdbserver
Schnittstelle und der Server dann tut, was es hinter den Kulissen muss tun was GDB anfragt.
- 1. gdb Haltepunkt auf pthread_create
- 2. Wie funktioniert ein Debugger?
- 3. Wie zu einem Haltepunkt in Gdb springen?
- 4. Kann in GDB ein Haltepunkt angegeben werden?
- 5. GDB bedingter Haltepunkt auf beliebige Arten
- 6. Wie funktioniert ein historischer Debugger?
- 7. Ist es möglich, im Perl-Debugger einen Haltepunkt festzulegen, ohne die Quelle zu ändern?
- 8. Erstellen Sie einen Matlab-Debugger-Haltepunkt und geben Sie den Debugger im .m-Dateicode ein
- 9. Wie Sie einen bedingten Haltepunkt in Xcode hinzufügen
- 10. GDB: Haltepunkt in minderwertigen Prozess
- 11. Gdb stoppt nicht an Haltepunkt
- 12. Google Chrome Debugger überspringen Haltepunkt
- 13. Kann ich Emacs konfigurieren, um gdb wie einen grafischen Debugger zu verwenden?
- 14. gdb: einen Haltepunkt für einen SIGBUS-Handler setzen
- 15. Wie verwende ich den MinGW gdb Debugger, um ein C++ Programm in Windows zu debuggen?
- 16. Wie funktioniert gdb?
- 17. Wie man LLDB mit "openocd und JTAG Brett" einrichtet
- 18. Cython Debugging, setzen einen Haltepunkt
- 19. Wie funktioniert ndk-gdb unter Android?
- 20. Haltepunkt auf jeder Zeile in GDB setzen
- 21. GDB kann einen Haltepunkt für freigegebene Bibliothek nicht festlegen
- 22. Wie verwenden Sie gdb?
- 23. Gibt es einen gdb-Befehl, um ein Schleifenkonstrukt zu beenden?
- 24. GDB Wie kann die Ausführung ohne Haltepunkt gestoppt werden?
- 25. Wie man GDB-Ersatzvariablen mit ihrem aktuellen Wert erstellt, wenn ein bedingter Haltepunkt erstellt wird
- 26. Einen std :: string Variablenwert aus gdb setzen?
- 27. Chrome-Konsole - Haltepunkt über ganze Datei
- 28. Wie Debuggen mit Gdb?
- 29. Wie kann ich einen Haltepunkt auf "etwas ist auf dem Terminal gedruckt" in gdb setzen?
- 30. Wie kann ich einen benutzerdefinierten Debugger debuggen?
mögliches Duplikat von [Allgemeiner JTAG-Arbeitsablauf in einem eingebetteten Entwicklungssystem?] (Http://stackoverflow.com/questions/3775445/general-jtag-working-flow-in-an-beddeded-development-system) – Gilles