2016-12-11 13 views
0

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?

+0

Wissen Sie sicher, dass Sie die Hauptfunktion drücken? Haben Sie die richtigen Uhreinstellungen? – staringlizard

+0

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

Antwort

0

Kann eine andere GDB-Instanz ausgeführt werden?
"Ein Programm wird bereits debuggt." Suchen Sie nach einem "arm-none-eabi-gdb" -Prozess und töten Sie ihn.

+0

OpenOCD akzeptiert nur eine GDB-Instanz. Ich denke "Ein Programm wird bereits debuggt" ist der Zustand des Ziels. Ich habe den integrierten ST-Link auf einen J-Link-Adapter aktualisiert und verwende jetzt den Segger-GDB-Server. –

Verwandte Themen