Forum: Mikrocontroller und Digitale Elektronik Cortex-M3 - GDB - Breakpoints werden nicht erkannt


von Lasse S. (cowz) Benutzerseite


Lesenswert?

Hallo,

wie in den anderen Beitragen auch schon zu lesen, beschäftige ich mich 
seit ein paar Tagen mit dem Cortex-M3, genauer einem STM32F103RB auf dem 
Olimex STM32-H103 zusammen mit dem Segger J-Link EDU.

Nun versuche ich mittels GDB zu debuggen (und zwar noch direkt in der 
Konsole). Allerdings ignoriert er einfach meine Breakpoints. Er läuft 
einfach die Main immer wieder durch (die LED blinkt).

Könnt ihr mir sagen warum?

Folgendes hab ich in meine Konsole getippt, der untere Teil ist im Log 
vom Segger GDB-Server.


Gruß
Lasse

PS: Ja, das war den Tag über noch in GCC, aber ich hab's mal hierher 
"verschoben", da das zwar die Binutils, aber nicht den GCC ansich 
betrifft. Und im GCC antwortet keiner, vielleicht liegt's ja am falschen 
Forum.. hoff

1
C:\Projektpfad\Release>arm-none-eabi-gdb ausgabe.elf
2
GNU gdb (Sourcery G++ Lite 2009q3-68) 6.8.50.20090630-cvs
3
Copyright (C) 2009 Free Software Foundation, Inc.
4
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
5
This is free software: you are free to change and redistribute it.
6
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
7
and "show warranty" for details.
8
This GDB was configured as "--host=i686-mingw32 --target=arm-none-eabi".
9
For bug reporting instructions, please see:
10
<https://support.codesourcery.com/GNUToolchain/>...
11
(gdb) target remote localhost:2331
12
Remote debugging using localhost:2331
13
0x00000000 in ?? ()
14
(gdb) monitor speed auto
15
Select auto JTAG speed (1000 kHz)
16
(gdb) monitor flash device=stm32f103rb
17
Select flash device: stm32f103rb
18
(gdb) monitor flash breakpoints = 1
19
Flash breakpoints enabled
20
(gdb) monitor flash download = 1
21
Flash download enabled
22
(gdb) load
23
Loading section .text, size 0x4148 lma 0x8000000
24
Loading section .data, size 0x14 lma 0x8004148
25
Start address 0x8000000, load size 16732
26
Transfer rate: 466 KB/sec, 2788 bytes/write.
27
(gdb) monitor reg r13 = (0x00000000)
28
Writing register (SP = 0x00500020)
29
(gdb) monitor reg pc = (0x00000004)
30
Writing register (PC = 0x6D020008)
31
(gdb) monitor reset
32
Resetting target
33
(gdb) break main
34
Breakpoint 1 at 0x80001ca: file ../main.c, line 54.
35
(gdb) continue
36
Continuing.

Im GDB-Server von JLink steht dann:
1
Connected to 127.0.0.1
2
Reading all registers
3
Read 4 bytes @ address 0x00000000 (Data = 0x00500020)
4
Select auto JTAG speed (1000 kHz)
5
Select flash device: stm32f103rb
6
Flash breakpoints enabled
7
Flash download enabled
8
Downloading 4032 bytes @ address 0x08000000
9
Downloading 4016 bytes @ address 0x08000FC0
10
Downloading 4048 bytes @ address 0x08001F70
11
Downloading 3984 bytes @ address 0x08002F40
12
Downloading 632 bytes @ address 0x08003ED0
13
Downloading 20 bytes @ address 0x08004148
14
Writing register (PC = 0x00000008)
15
Writing register (SP = 0x00500020)
16
Writing register (PC = 0x6D020008)
17
Resetting target
18
Read 2 bytes @ address 0x080001CA (Data = 0x0121)
19
Setting breakpoint @ address 0x080001CA, Size = 2, BPHandle = 0x0009
20
Starting target CPU...

von Plan (Gast)


Lesenswert?

Wiso zu Fuß und nicht mit z.B. Eclipse?
Ich nutze Eclipse+Coudesourcery+OpenOCD+Olimex ARM-USB-OCD+Yagarto 
Tools+GDB Hardware Debuggung PlugIn

Da Klicke ich im Code an und hab einen Breakpoint und der tut.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Weil ich unter Eclipse auch Probleme habe und außerdem gerne das von 
Grund auf verstehen möchte :)

von Plan (Gast)


Lesenswert?

Ich hatte auch mal den "Segger J-Link". Aber irgendwie gabs da immer 
kleine "Hänger". Ist schon eine weile her. Ich wollte eigentlich mit SW 
(SingleWire) debuggen, aber das hat der Segger GDB Server nicht 
unterstützt.

Mit dieser HW und OpenOCD bin ich sehr zufrieden.
Martin Thomas hat in einem Thread auch mal ein komplettes Eclipse 
Projekt für den STM32 gepostet.

Liest Du hier:
Beitrag "Re: Diskussionsrunde: Opensource Entwicklungstools für STM32"

Und hier das Projekt:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_stm32

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Das hat doch nichts mit meinem Problem zu tun, oder? ;)

von Plan (Gast)


Lesenswert?

Nun ja, das Demo-Projekt von siwawi kann man ja mal laden und mit 
Eclipse öffnen und die GDB Einstellungen an schauen.
Schaden tut es jedenfalls nicht. Vieleicht ist da der wichtige Hinweis 
versteckt.

Vieleicht ist das ja auch der wichtige GDB-Befehl:
set mem inaccessible-by-default off

In der Doku vom Segger GDB Server stehen alle Kommandos die gehen. Über 
den GDB kann man mit "monitor" den Befehl zum GDB Server schicken.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Hi,

danke :D

Hätte es nicht gedacht, aber es stand wirklich was drin, was mir gefehlt 
hat.

Der Befehl
1
monitor endian little
fehlte.

Der steht aber so auch nicht in der Segger-Hilfe.

Den Befehl
1
set mem inaccessible-by-default off
brauche ich (noch?) nicht. Werde mich aber mal schlau machen, was der 
bewirkt und warum ich den vielleicht doch lieber auch nutzen sollte :)


Vielen Dank also für den Richtungsstupser, jetzt kann's weitergehen :)

Gruß
Lasse

von Plan (Gast)


Lesenswert?

Gern geschehen...

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.