Guten Abend zusammen, ich habe mal eine grundsätzliche Frage zum Debuggen. Genutzt wird STM32Discovery-Board und die Anleitung [1] "Discovering the STM32 microcontroller". Zum Flashen führe ich das Opensource-Programm "st-util" von texane [2] aus. Anschließend starte ich gdb, gebe das target "extended remote" an, lade die ELF Datei und starte das Programm. Mit ist jetzt irgendwie nicht klar, welche Komponente mit welcher kommuniziert... Im Manual von "stlink" steht, dass "st-util" ein GDB Server ist. In der englischen Wiki steht, dass der "gdbserver" remote läuft. Aber es läuft doch alles auf meinem Rechner... Sorry, wenn die Frage vielleicht irgendwie naiv ist, aber ich habe irgendwie ein Brett vorm Kopf. Nebenbei: was ist in gdb der Unterschied zwischen "target remote" und "target extended-remote"? Gruß Dennis [1] www.cs.indiana.edu/~geobrown/book.pdf [2] https://github.com/texane/stlink
>Mit ist jetzt irgendwie nicht klar, welche Komponente mit welcher >kommuniziert. gdb <--> gdb server <--> (JTAG Adapter -- opt) <--> Target HW >In der englischen Wiki steht, dass der "gdbserver" remote >läuft. AbeIn der englischen Wiki steht, dass der "gdbserver" remote >läuft. Aber es läuft doch alles auf meinem Rechner...r es läuft doch alles >auf meinem Rechner... Nicht alles buchstäblich nehmen. "remote" heisst nur: Separat vom GDB. Es gibt viele Varianten von GDB Servern. -- auf dem Dev Host selbst -- auf einer Debug Probe (JTAG Adapter) -- auf dem Target (als separate Komponente oder in das zu debuggende Image gelinkt -- noch was anderes... Das macht die ganze Chose ziemlich flexibel und den GDB selbst - für eine gegebene Prozessorarchitektur - hardwareunabhängig. st-util ist eine Möglichkeit, OpenOCD eine andere (beide host-basiert). Dann gibt es noch die Black Magic Probe (auf dem JTAG Adapter). Die BMP ist insofern interessant, als dass sie einem das separate Starten eines GDB Servers erspart. >Zum Flashen führe ich das Opensource-Programm "st-util" von >texane [2] aus. Anschließend starte ich gdb Das ist unnötig kompliziert. Das gdb "load" Kommando lädt das zu debuggende Image in den Debugger UND in das Target, je nach Konfig in's RAM oder Flash. >Nebenbei: was ist in gdb der Unterschied zwischen "target remote" und >"target extended-remote"? Wüsste ich auch gerne. Wenn ich richtig dran bin, liegt der Unterschied i.W auf Protokollebene und ist mglw. auch historisch bedingt. Ich benutze immer "target extended-remote". Der gdb server würde es Dir sicher sagen, wenn er nur "target remote" kennt.
Ahnungslos schrieb: > Das ist unnötig kompliziert. > Das gdb "load" Kommando lädt das zu debuggende Image in den > Debugger UND in das Target, je nach Konfig in's RAM oder > Flash. Ohh.... sorry, das habe ich gestern Abend verwechselt! Ich starte nur den st-util und flashe mit gdb so wie du es beschrieben hast! >>Nebenbei: was ist in gdb der Unterschied zwischen "target remote" und >>"target extended-remote"? > Wüsste ich auch gerne. Wenn ich richtig dran bin, liegt der Unterschied > i.W auf Protokollebene und ist mglw. auch historisch bedingt. > Ich benutze immer "target extended-remote". > Der gdb server würde es Dir sicher sagen, wenn er nur "target remote" > kennt. Dazu habe ich hier noch was gefunden: https://sourceware.org/gdb/onlinedocs/gdb/Connecting.html Gruß Dennis
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.