STM32F407 macht nichts über JTAG mit BlackMagicProbe

#4030411
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
#4031817
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).
#4031831
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...
Gast #4032151
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"?
#4035575
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren