Ich versuche, OpenOCD mit GDB zu verwenden, um das STM32F4 Cortex-M4 auf meinem STM32F4Discovery-Board zu debuggen.Ich kann keine Haltepunkte mit GDB und OpenOCD für STM32F4 mit ST-Link setzen
Setup:
- Ubuntu 16.04
- OpenOCD 0.9.0 (auch mit 0,10-dev getestet)
- Arm-none-EABI-GDB 7.10
- STM32F4DISCOVERY mit ST-Link-v2 (V2J28S0)
- Code-Projekt generiert mit STM32CubeMX
ich stellte sicher, d ebug Draht wird in STM32CubeMX aktiviert ist (dies hält die Debug-Drahtstifte in Standardzustand)
GCC Flags sind:
-mcpu=cortex-m4 -mthumb -mthumb-interwork -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffunction-sections -fdata-sections -g -fno-common -fmessage-length=0
Ich habe einfach Blinzeln Code zur Hauptschleife LED, die das Debuggen zu testen.
Ich starte OpenOCD mit openocd -f board/stm32f4discovery.cfg -c "program build/discovery_simple_test.elf verify reset"
. OpenOCD blinkt den Chip und setzt ihn zurück.
Jetzt mit GDB es (Output von OpenOCD kann here zu finden) Ich verbinde:
(gdb) target remote localhost:3333
Remote debugging using localhost:3333
0x08001450 in ??()
(gdb) set verbose on
(gdb) file "/abs_path/build/discovery_simple_test.elf"
A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Load new symbol table from "/abs_path/build/discovery_simple_test.elf"? (y or n) y
Reading symbols from /abs_path/build/discovery_simple_test.elf...done.
Reading in symbols for /abs_path/Src/main.c...done.
(gdb) monitor reset
(gdb) break main
Breakpoint 1 at 0x8000232: file /abs_path/Src/main.c, line 71.
(gdb) break /abs_path/Src/main.c:93
Breakpoint 2 at 0x8000258: file /abs_path/Src/main.c, line 93.
Das Programm in Zeile 93 brechen sollte, aber es funktioniert nicht.
Wenn ich die Ausführung anhalten und versuchen, es fortzusetzen, es wird nicht fortgesetzt:
(gdb) monitor halt
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x21000000 pc: 0x080006d8 msp: 0x2001ffe8
(gdb) monitor continue
//Program doesn't continue
Was los ist und wie kann ich es beheben?
Wissen Sie sicher, dass Sie die Hauptfunktion drücken? Haben Sie die richtigen Uhreinstellungen? – staringlizard
Vielen Dank für Ihren Kommentar. Uhreinstellungen waren die Standardeinstellungen von STM32CubeMX. Ich habe den integrierten ST-Link auf einen J-Link-Adapter aktualisiert und verwende jetzt den Segger-GDB-Server. Jetzt kann ich zumindest mit meinem Projekt fortfahren. –