Forum: Mikrocontroller und Digitale Elektronik Zusammenhang STM32Discovery, GDB, st-util?


von Dennis S. (eltio)


Lesenswert?

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

von Ahnungslos (Gast)


Lesenswert?

>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.

von Dennis S. (eltio)


Lesenswert?

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