Forum: Mikrocontroller und Digitale Elektronik Eclipse mit Black Magic Probe


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Johannes S. (jojos)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Zum ARM debuggen habe ich einen STLink Clone zur Black Magic Probe 
umprogrammiert und das funktioniert auch. Die Einstellung war etwas 
fummelig, es funktioniert jetzt so wie in dem angehängten Dialog für 
'GDB Hardware Debugging' eingestellt.
Dabei stört mich nur eine kleine Sache: nach dem Start der debug session 
wird das target angehalten und steht an einer zufälligen Stelle. Beim 
debuggen über OpenOCD wird das Programm von Reset bis zum ersten 
Breakpoint 'main' ausgeführt. Mit der BMP muss ich immer zuerst den 
'restart' Button in der IDE drücken damit der Code von Reset an 
gestartet wird. Das dürften ja nur gdb Kommandos in dem 'Run Commands' 
Feld sein, aber ich habe noch nicht gefunden welche. ein 'run' oder 
'jump *0 run' funktionieren nicht. Die Kommunikation IDE-gdb läuft auch 
versteckt, ich sehe jedenfalls nicht was beim 'restart' button ausgelöst 
wird. Wie bekomme ich den gdb dazu den reset auszuführen?

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was ist mit den ersten beiden Häkchen ganz oben?

von Johannes S. (jojos)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die dürfen nicht gesetzt sein weil die Verbindung dann noch nicht steht. 
Im Anhang ist noch der andere Config Tab für den Debugger. Die anderen 
Startmöglichkeiten die es da gibt funktionieren aber auch nicht, BMP 
möchte über das target-extended verbunden werden.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Und wenn du hinter

attach 1

noch die normalen GDB Befehle setzt wie:


    monitor reset halt

    monitor reset init

    continue

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
diese Kommandos versteht BMP nicht:
1
(gdb) monitor reset halt
2
Target does not support this command.
3
(gdb) monitor reset init
4
Target does not support this command.
5
(gdb) jump *0x800000
6
Continuing at 0x800000.
7
8
Program received signal SIGSEGV, Segmentation fault.
9
0x00800000 in ?? ()
10
(gdb) jump *0x8000000
11
Continuing at 0x8000000.
12
13
Program received signal SIGSEGV, Segmentation fault.
14
0x41000000 in ?? ()
15
(gdb)

Ein Jump auf eine Startadresse kann aber auch nicht richtig sein, 
irgendwie muss der Debugger ja einen richtigen reset auslösen.

Mit 'monitor connect_srst enable' hängt der gdb nach dem attach, das 
geht auch nicht.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Und einzeln?

monitor reset
monitor halt

usw.

Welche kann er denn?

von pegel (Gast)


Bewertung
1 lesenswert
nicht lesenswert

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
irgendwie wenig, aber das debuggen funktioniert ja trotzdem und der 
'restart' button der IDE kann das auch irgendwie :(
1
(gdb) moni reset
2
Target does not support this command.
3
(gdb) moni halt
4
Target does not support this command.
5
(gdb) monitor help
6
General commands:
7
        version -- Display firmware version info
8
        help -- Display help for monitor commands
9
        jtag_scan -- Scan JTAG chain for devices
10
        swdp_scan -- Scan SW-DP for devices
11
        targets -- Display list of available targets
12
        morse -- Display morse error message
13
        connect_srst -- Configure connect under SRST: (enable|disable)
14
        hard_srst -- Force a pulse on the hard SRST line - disconnects target
15
        traceswo -- Start trace capture
16
ARM Cortex-M specific commands:
17
        vector_catch -- Catch exception vectors
18
STM32F40x specific commands:
19
        erase_mass -- Erase entire flash memory
20
        option -- Manipulate option bytes
21
        psize -- Configure flash write parallelism: (x8|x32(default))
22
(gdb)

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Vielleicht bietet das die Lösung.

Das sind openOCD spezifische Kommandos, die reicht der gdb ja nur 
weiter. Trotzdem schonmal Danke für die Hilfe.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kannst du eine Log Datei speichern und darin nachsehen wie der das 
macht?

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Johannes S. schrieb:
> Das sind openOCD spezifische Kommandos

nicht nur, BMP spezifische sind auch dabei.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Bewertung
0 lesenswert
nicht lesenswert
Probier doch erst mal das ganze im Terminal. "tar ext ...; mon s; attach 
1" und poste die Aussagen.

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
stimmt, soweit habe ich da nicht runtergescrollt.

Habe das Zauberwort jetz aber gefunden: flushregs. Also in dem dem 'Run 
Commands' Fenster:
1
flushregs
2
run

ja, Eclipse/OOCD/BMP/gdb ist ein riesiges Puzzle, jeden Tag ein kleines 
Stückchen weiter :-)

So klappt es scheinbar, und BMP ist auch sehr fix.
Irgendwo müsste es in Eclipse auch zu sehen sein wie mit dem gdb 
gesprochen wird, aber das habe ich noch gefunden. Flushregs hatte ich 
hier gefunden: https://www.eclipse.org/forums/index.php/t/202861/

von Johannes S. (jojos)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Uwe B. schrieb:
> Probier doch erst mal das ganze im Terminal.

hatte ich gemacht, daher kamen die obigen Ausgaben.

Im Anhang nochmal der Dialog mit den hoffentlich richtigen 
Einstellungen.

Jetzt bleibt nur noch das Mysterium mit dem 'connect_srst'. Einen Reset 
sehe ich auf der sRST Leitung, die Hardware sollte bedient werden. Ein 
'kill' zum Debugger beenden löst auch einen Reset aus wie es 
dokumentiert ist.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Bewertung
0 lesenswert
nicht lesenswert
Wo sind die Ausgaben der Befehle?

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
da zB: Beitrag "Re: Eclipse mit Black Magic Probe"

die Connection hatte ich nicht kopiert, die funktioniert ja, aber hier 
ist der Anfang:
1
D:\Projects\Sn\LocalGit\mbed-os-blinky_STM32F407VE\mbed-os-example-blinky_STM32F407VE\Debug>"c:\Program Files (x86)\GNU Tools ARM
2
Embedded\7 2017-q4-major\bin\arm-none-eabi-gdb.exe"
3
GNU gdb (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 8.0.50.20171128-git
4
Copyright (C) 2017 Free Software Foundation, Inc.
5
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
6
This is free software: you are free to change and redistribute it.
7
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
8
and "show warranty" for details.
9
This GDB was configured as "--host=i686-w64-mingw32 --target=arm-none-eabi".
10
Type "show configuration" for configuration details.
11
For bug reporting instructions, please see:
12
<http://www.gnu.org/software/gdb/bugs/>.
13
Find the GDB manual and other documentation resources online at:
14
<http://www.gnu.org/software/gdb/documentation/>.
15
For help, type "help".
16
Type "apropos word" to search for commands related to "word".
17
(gdb) tar ext \\.\COM17
18
Remote debugging using \\.\COM17
19
(gdb) mon swd
20
Target voltage: unknown
21
Available Targets:
22
No. Att Driver
23
 1      STM32F40x
24
(gdb) att 1
25
Attaching to Remote target
26
warning: No executable has been specified and target does not support
27
determining executable automatically.  Try using the "file" command.
28
0x08007fba in ?? ()
29
(gdb)

Nach dem Attach steht der Debugger irgendwo im angehaltenen programm.
Ich habe gerade mal versucht herauszubekommen was OOCD beim reset-init 
macht, habe das aber nicht gefunden.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Bewertung
0 lesenswert
nicht lesenswert
Starte am besten gdb mit dem <xxx>.elf file oder lade das File in dem 
Zustand oben mit "file <xxx>.elf. Dann ein "r" fuer reboot oder "s" fuer 
step  oder "n" fuer next.

von Johannes S. (jojos)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
'r' ist run, in der Eclipse Debuggerconfig reicht das eben nicht. In der 
Kommandozeile geht es, also scheint es ein eclipse Problemchen zu sein. 
Das ist reproduzierbar, ohne 'flushregs' geht es in eclipse nicht. Oder 
das 'run' wird da nicht richtig ausgeführt. In der Kommandozeile muss 
ich das run mit y bestätigen.
1
(gdb) tar ext \\.\COM17
2
Remote debugging using \\.\COM17
3
(gdb) mon swd
4
Target voltage: unknown
5
Available Targets:
6
No. Att Driver
7
 1      STM32F40x
8
(gdb) att 1
9
Attaching to Remote target
10
warning: No executable has been specified and target does not support
11
determining executable automatically.  Try using the "file" command.
12
0x080005e8 in ?? ()
13
(gdb) file mbed-os-example-blinky_STM32F407VE.elf
14
A program is being debugged already.
15
Are you sure you want to change the file? (y or n) y
16
Reading symbols from mbed-os-example-blinky_STM32F407VE.elf...done.
17
(gdb) b main
18
Breakpoint 1 at 0x800e050: file ../main.cpp, line 59.
19
(gdb) run
20
The program being debugged has been started already.
21
Start it from the beginning? (y or n) y
22
Starting program: D:\Projects\Sn\LocalGit\mbed-os-blinky_STM32F407VE\mbed-os-example-blinky_STM32F407VE\Debug\mbed-os-example-blin
23
ky_STM32F407VE.elf
24
Note: automatically using hardware breakpoints for read-only addresses.
25
26
Breakpoint 1, main () at ../main.cpp:59
27
59          Serial com1 (PA_9, PA_10, 115200);
28
(gdb) n
29
60          StopWatch    stopWatch;
30
(gdb) n
31
62          DigitalOut led1 (LED_D2);
32
(gdb) n
33
63          DigitalOut led2 (LED_D3);
34
(gdb) n
35
65          Adafruit_TFTLCD_16bit_STM32 tft (NC);
36
(gdb)

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.