Forum: Mikrocontroller und Digitale Elektronik STM32F407 macht nichts über JTAG mit BlackMagicProbe


von Christoph N. (christoph_n)


Lesenswert?

Moin,

ich habe hier ein kleines Problem, an dem ich mir die Zähne ausbeiße:

Ich habe hier ein von mir entworfenes Board, welches im Wesentlichen ein 
Nachbau der Grundschaltung des STM32F4-Disovery von ST ist. Das Ganze 
habe ich mit einem BlackMagicProbe mit meinem GDB verbunden und versuche 
nun ein elf-File da drauf zu flashen und auszuführen.
Es klappt mit der Werkzeugkette mit dem Discovery, aber nicht mit meinem 
Entwurf.
Mit meinem Target sieht GDB das Board, aber ich kann offensichtlich 
nichts damit machen.
1
(gdb) mon jtag_scan
2
Target voltage: 3.3V
3
Device  IR Len  IDCODE      Description
4
0  4  0x4BA00477  ARM Limited: ADIv5 JTAG-DP port.
5
1  5  0x06413041  ST Microelectronics: STM32F4xx.
6
7
Available Targets:
8
No. Att Driver
9
 1      STM32F4xx
10
(gdb)

Das mit dem "ich kann nichts damit machen" begründe ich damit, dass ich 
z.B. ein zuvor mit "file" geladenes Programm nicht mit "load" laden 
kann:
1
(gdb) load
2
Error erasing flash with vFlashErase packet
3
(gdb)

Man liest viel etwas von mit "monitor reset halt" das Target zuvor 
zurücksetzen. Geht aber nicht:
1
(gdb) monitor reset halt
2
Target does not support this command.

Überhaupt scheint das Target nichts zu supporten. Außer den jtag_scan 
habe ich nichts gefunden, was geht.
Da stimmt doch was nicht!  Ich habe die Verkabelung überprüft, die 
stimmt. Könnte es an den BOOT-Pins liegen? - Die sind wie beim Discovery 
(IMO) BOOT0 - High; BOOT1 - Low.
So langsam fällt mir nichts mehr ein und ich hoffe auf Ideen von Euch.

Vielen Dank!

Christoph

von Uwe Bonnes (Gast)


Lesenswert?

Es fehlt dass "attach 1"

Tschuess

von Christoph N. (christoph_n)


Lesenswert?

Hallo,

vielen Dank für die Antwort. An das attach 1 hatte ich schon gedacht, es 
nur nicht hingeschrieben :-( Sorry.

Hier noch mal komplett wenn es nicht geht (mit meiner Hardware):
1
GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.1.20141128-cvs
2
Copyright (C) 2014 Free Software Foundation, Inc.
3
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
4
This is free software: you are free to change and redistribute it.
5
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
6
and "show warranty" for details.
7
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-eabi".
8
Type "show configuration" for configuration details.
9
For bug reporting instructions, please see:
10
<http://www.gnu.org/software/gdb/bugs/>.
11
Find the GDB manual and other documentation resources online at:
12
<http://www.gnu.org/software/gdb/documentation/>.
13
For help, type "help".
14
Type "apropos word" to search for commands related to "word".
15
(gdb) target extended-remote /dev/ttyACM0
16
Remote debugging using /dev/ttyACM0
17
(gdb) monitor version
18
Black Magic Probe (Firmware 1.5-00284-gd162e75, build 20141225)
19
Copyright (C) 2011  Black Sphere Technologies Ltd.
20
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
21
22
(gdb) monitor jtag_scan
23
Target voltage: 3.3V
24
Device  IR Len  IDCODE      Description
25
0  4  0x4BA00477  ARM Limited: ADIv5 JTAG-DP port.
26
1  5  0x06413041  ST Microelectronics: STM32F4xx.
27
28
Available Targets:
29
No. Att Driver
30
 1      STM32F4xx
31
(gdb) attach 1
32
Attaching to Remote target
33
0x08000188 in ?? ()
34
(gdb) file /home/christoph/workspace/stm32_f407_test/Debug/stm32_f407_test.hex
35
A program is being debugged already.
36
Are you sure you want to change the file? (y or n) y
37
Reading symbols from /home/christoph/workspace/stm32_f407_test/Debug/stm32_f407_test.hex...(no debugging symbols found)...done.
38
(gdb) load
39
Error erasing flash with vFlashErase packet
40
(gdb)

Und wenn es geht (mit dem Discovery):
1
GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.1.20141128-cvs
2
Copyright (C) 2014 Free Software Foundation, Inc.
3
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
4
This is free software: you are free to change and redistribute it.
5
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
6
and "show warranty" for details.
7
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-eabi".
8
Type "show configuration" for configuration details.
9
For bug reporting instructions, please see:
10
<http://www.gnu.org/software/gdb/bugs/>.
11
Find the GDB manual and other documentation resources online at:
12
<http://www.gnu.org/software/gdb/documentation/>.
13
For help, type "help".
14
Type "apropos word" to search for commands related to "word".
15
(gdb)  target extended-remote /dev/ttyACM0
16
Remote debugging using /dev/ttyACM0
17
(gdb) monitor version
18
Black Magic Probe (Firmware 1.5-00284-gd162e75, build 20141225)
19
Copyright (C) 2011  Black Sphere Technologies Ltd.
20
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
21
22
(gdb) monitor jtag_scan
23
Target voltage: 3.7V
24
Device  IR Len  IDCODE      Description
25
0  4  0x4BA00477  ARM Limited: ADIv5 JTAG-DP port.
26
1  5  0x06413041  ST Microelectronics: STM32F4xx.
27
28
Available Targets:
29
No. Att Driver
30
 1      STM32F4xx
31
(gdb) attach 1
32
Attaching to Remote target
33
0x08000470 in ?? ()
34
(gdb) file /home/christoph/workspace/stm32_f407_test/Debug/stm32_f407_test.hex
35
A program is being debugged already.
36
Are you sure you want to change the file? (y or n) y
37
Reading symbols from /home/christoph/workspace/stm32_f407_test/Debug/stm32_f407_test.hex...(no debugging symbols found)...done.
38
(gdb) load
39
Loading section .sec1, size 0x2633 lma 0x8000000
40
Loading section .sec2, size 0x78 lma 0x8002634
41
Start address 0x8000188, load size 9899
42
Transfer rate: 16 KB/sec, 824 bytes/write.
43
(gdb) c
44
Continuing.

Der BlackMagicProbe kann auch SWD, da scheint das flashen (auf meiner 
HW) zu gehen (die Funktion iwie noch nicht).

von Uwe Bonnes (Gast)


Lesenswert?

Der BMP ist extern und mit Kabeln verbunden? Dann ist eine gute 
Masseverbindung wichtig. Haeufig klappt es erst, wenn mann mehrere 
Massekabel zwischen Debugger und Target benutzt.

Ansonstsen:
- Ist das Target schreibgeschuetzt?
- Ist das Target evt. im Tiefschlaf?

(gdb) monitor reset halt ist ein OpenOCD Befehl...

von Christoph N. (christoph_n)


Lesenswert?

Hallo Uwe,

vielen Dank für die Antwort.

Uwe Bonnes schrieb:
> Der BMP ist extern und mit Kabeln verbunden? Dann ist eine gute
> Masseverbindung wichtig. Haeufig klappt es erst, wenn mann mehrere
> Massekabel zwischen Debugger und Target benutzt.
>

Ja. Er ist ein Debugger, der extern ist, und der im wesentlichen aus 
einem F1043 besteht auf dem ein eingebetteter GDB läuft. die 
JTAG-Verbindung ist über Molex Picoblades realisiert. Ich habe eben mal 
noch eine extra Steckbrücke für Masse als redundanz gelegt, geht aber 
nicht.

> Ansonstsen:
> - Ist das Target schreibgeschuetzt?
> - Ist das Target evt. im Tiefschlaf?


CPU sollte im Werszustand sein.

>
> (gdb) monitor reset halt ist ein OpenOCD Befehl...

... Deswegemn geht das nicht :-) Mir ist das noch etwas neu...

von Hannes (Gast)


Lesenswert?

Uwe Bonnes schrieb:
> Der BMP ist extern und mit Kabeln verbunden? Dann ist eine gute
> Masseverbindung wichtig.

Bist Du sicher, dass die Masse nochmal separat verbunden werden muss 
beim externen Anschluss? Ich habe damit keine Probleme.

von Uwe Bannus (Gast)


Lesenswert?

Hannes schrieb:
> Uwe Bonnes schrieb:
>> Der BMP ist extern und mit Kabeln verbunden? Dann ist eine gute
>> Masseverbindung wichtig.
>
> Bist Du sicher, dass die Masse nochmal separat verbunden werden muss
> beim externen Anschluss? Ich habe damit sehr viele Probleme.

Worin liegen deine vielen Probleme?

von Uwe Bonnes (Gast)


Lesenswert?

Die Masse ist sehr wichtig. Wenn es bei Dir mit einer Masseverbindung 
geht, gut. Aber ich hatte schon oefters erst stabile Verbindung falls 
ich weitere Masseverbindungen hergestellt hatte. Schaden tut es auf 
jeden Fall nichts, auch wenn es schon mit nur einer Masseverbindung 
funktionieren wuerde.

von Uwe Bonnes (Gast)


Lesenswert?

Christoph N. schrieb:

>
1
> (gdb) mon jtag_scan
2
> Target voltage: 3.3V
3
> Device  IR Len  IDCODE      Description
4
> 0  4  0x4BA00477  ARM Limited: ADIv5 JTAG-DP port.
5
> 1  5  0x06413041  ST Microelectronics: STM32F4xx.
6
> 
7
> Available Targets:
8
> No. Att Driver
9
>  1      STM32F4xx
10
> (gdb)
11
>
>

Geht es mit SWD, also "mon swd", "att 1". Kannst Du den Flash lesen (x 
/32x 0x08000000) ?  Passen die Option Bits "mon option" -> "0x1FFFF800: 
0x55AA
0x1FFFF802: 0xFFFF ..." ? Passt "stm32_f407_test.hex" oder will es 
vielleicht an eine falsche Adresse schreiben? Geht ein "mon erase_mass"?

von Christoph N. (christoph_n)


Lesenswert?

Ich glaube, es geht mit SWD - nur die LED blinkt irgendwie nicht...:
1
(gdb) file dasisteintest.elf
2
Reading symbols from dasisteintest.elf...done.
3
(gdb) target extended-remote /dev/ttyACM0
4
Remote debugging using /dev/ttyACM0
5
(gdb) mon jtag_scan
6
Target voltage: 3.3V
7
Device  IR Len  IDCODE      Description
8
0  4  0x4BA00477  ARM Limited: ADIv5 JTAG-DP port.
9
1  5  0x06413041  ST Microelectronics: STM32F4xx.
10
11
Available Targets:
12
No. Att Driver
13
 1      STM32F4xx
14
(gdb) mon swd
15
Target voltage: 3.3V
16
Available Targets:
17
No. Att Driver
18
 1      STM32F4xx
19
(gdb) att 1
20
Attaching to program: /home/christoph/workspace/dasisteintest/Debug/dasisteintest.elf, Remote target
21
0x9f1e6e5e in ?? ()
22
(gdb) load
23
Loading section .isr_vector, size 0x2c8 lma 0x8000000
24
Loading section .text, size 0x2373 lma 0x80002c8
25
Loading section .data, size 0x78 lma 0x800263c
26
Start address 0x8000188, load size 9907
27
Transfer rate: 17 KB/sec, 825 bytes/write.
28
(gdb) x 
29
Argument required (starting display address).
30
(gdb) x/32x 0x08000000
31
0x8000000 <__isr_vectors>:  0xffffffff  0xffffffff  0xffffffff  0xffffffff
32
0x8000010 <__isr_vectors+16>:  0xffffffff  0xffffffff  0xffffffff  0xffffffff
33
0x8000020 <__isr_vectors+32>:  0xffffffff  0xffffffff  0xffffffff  0xffffffff
34
0x8000030 <__isr_vectors+48>:  0xffffffff  0xffffffff  0xffffffff  0xffffffff
35
0x8000040 <__isr_vectors+64>:  0xffffffff  0xffffffff  0xffffffff  0xffffffff
36
0x8000050 <__isr_vectors+80>:  0xffffffff  0xffffffff  0xffffffff  0xffffffff
37
0x8000060 <__isr_vectors+96>:  0xffffffff  0xffffffff  0xffffffff  0xffffffff
38
0x8000070 <__isr_vectors+112>:  0xffffffff  0xffffffff  0xffffffff  0xffffffff
39
(gdb) mon erase_mass
40
Erasing flash... This may take a few seconds. \
41
(gdb) load
42
Loading section .isr_vector, size 0x2c8 lma 0x8000000
43
Loading section .text, size 0x2373 lma 0x80002c8
44
Loading section .data, size 0x78 lma 0x800263c
45
Start address 0x8000188, load size 9907
46
Transfer rate: 17 KB/sec, 825 bytes/write.
47
(gdb)

Sollte da wirklich überall 0xff stehen - da sollte doch das Program 
sein, oder?

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.