Forum: Mikrocontroller und Digitale Elektronik GDB load schlägt fehl


von A. F. (elagil)


Lesenswert?

Hallo,

ich verwende zum Programmieren eines STM32F746 einen Blackmagic Probe 
Adapter: https://github.com/blacksphere/blackmagic/wiki .

Verbunden wird der STM32 über SWD. Der Programmierer stellt einen GDB 
Server bereit, mit dem man sich über einen virtuellen COM-Port verbinden 
kann.

Dann kann man mit ein paar einfachen GDB Befehlen den Prozessor 
programmieren und debuggen:
1
$ arm-none-eabi-gdb
2
target extended-remote <COM-port>
3
monitor swdp_scan
4
attach 1
5
file flash.elf    // lädt Symbole
6
load    // auf Prozessor laden

Leider schlägt "load" fehl. Ich bekomme nur angezeigt:
1
Loading section .isr_vector, size 0x10c lma 0x8000000

und weiter nichts. Ich bekomme keine Fehlermeldung und kann auch keine 
weiteren Kommandos mehr eingeben. Der Programmierer scheint abzustürzen.

Einen STM32F1 kann ich problemlos flashen und debuggen. Kann das ein 
Hardwareproblem mit dem STM32F7 board sein?

Ein
1
mon erase_mass

funktioniert zum Beispiel ohne Probleme.

Vielen Dank im Voraus!

von Trckanbua (Gast)


Lesenswert?

Hallo,

man kann sich im gdb die Kommunikation mit dem gdb Server anzeigen 
lassen.
Wie das geht, müsstest Du im GDB Manual nachlesen.
Vielleicht wirst Du daraus schlauer.

Ansonsten vielleicht einen Logic-Analyzer auf den SWD Port hängen.
Oder den gdb Prozess 'strace'n....

>Ein
>mon erase_mass
>
>funktioniert zum Beispiel ohne Probleme.

Woraus schliesst Du das?

von Jim M. (turboj)


Lesenswert?

Adrian F. schrieb:
> und weiter nichts. Ich bekomme keine Fehlermeldung und kann auch keine
> weiteren Kommandos mehr eingeben. Der Programmierer scheint abzustürzen.

Wie lange hast Du gewartet? Nicht das der ein paar Minuten braucht, weil 
die SWD oder serielle Geschwindigkeit recht niedrig eingestellt ist.

von A. F. (elagil)


Lesenswert?

Trckanbua schrieb:
> man kann sich im gdb die Kommunikation mit dem gdb Server anzeigen
> lassen.

Das werde ich mal machen.

Trckanbua schrieb:
> Woraus schliesst Du das?

Das Kommando wird ohne Fehler abgeschlossen. Es kann aber sein, dass 
nichts getan wird.

Noch etwas wichtiges:
Wenn ich mir den Speicherinhalt vom Prozessor anzeigen lassen will 
(Befehl: x 0x8000000), bekomme ich:

1
Cannot access memory at address 0x8000000

Jim M. schrieb:
> Wie lange hast Du gewartet?

Bis zu eine Minute bestimmt. So lange sollte es aber wirklich nicht 
dauern.

: Bearbeitet durch User
von Trckanbua (Gast)


Lesenswert?

>Wenn ich mir den Speicherinhalt vom Prozessor anzeigen lassen will

Und

$ info reg

geht wahrscheintz auch nicht?!

von pegel (Gast)


Lesenswert?

Hast du keinen ST-Link, oder ein Disco, Nucleo usw. wo eins drauf ist?
Damit könntest du testen ob die Hardware des Boards i.O. ist.

von pegel (Gast)


Lesenswert?

Mit dem ST-Link Utility. Das sollte immer funktionieren.

von Adrian (Gast)


Lesenswert?

Trckanbua schrieb:
> Und
>
> $ info reg
>
> geht wahrscheintz auch nicht?!

Doch, das geht. Es zeigt an:
1
(gdb) info reg
2
r0             0x0      0
3
r1             0x0      0
4
r2             0x0      0
5
r3             0x0      0
6
r4             0x0      0
7
r5             0x0      0
8
r6             0x0      0
9
r7             0x0      0
10
r8             0x0      0
11
r9             0x0      0
12
r10            0x0      0
13
r11            0x0      0
14
r12            0x0      0
15
sp             0x0      0x0
16
lr             0x0      0x0
17
pc             0x0      0x0
18
xpsr           0x0      0
19
msp            0x0      0x0
20
psp            0x0      0x0
21
special        0x0      0

pegel schrieb:
> Hast du keinen ST-Link, oder ein Disco, Nucleo usw. wo eins drauf ist?

pegel schrieb:
> Mit dem ST-Link Utility.

Das teste ich mal!

von Adrian (Gast)


Lesenswert?

Programmieren mit dem ST-Link Utility und dem ST-LINK V2 funktioniert 
scheinbar einwandfrei.
1
08:19:56 : Connected via SWD.
2
08:19:56 : SWD Frequency = 4,0 MHz.
3
08:19:56 : Connection mode : Normal.
4
08:19:56 : Debug in Low Power mode enabled.
5
08:19:56 : Device ID:0x449 
6
08:19:56 : Device flash Size : 1MBytes
7
08:19:56 : Device family :STM32F74x/F75x
8
08:20:21 : [ETH_test.bin] opened successfully.
9
08:20:21 : [ETH_test.bin] checksum : 0x002924BA 
10
08:20:24 : Memory programmed in 0s and 734ms.
11
08:20:25 : Flash memory [0x08000000:0x08100000] Checksum: 0x0FB861DE

von Adrian (Gast)


Lesenswert?

Noch einmal!

Wenn ich NRST durchtrenne von Blackmagic nach STM32F7, dann geht das 
Flashen! Ich weiß nicht, woran das liegt. Bei dem STM32F1 war das nicht 
notwendig.

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.