Die richtige serielle Schnittstelle

Achten Sie bei der Auswahl der seriellen Schnittstelle auf die Verbindung zum GDB-Server der Black Magic Probe. Aus irgendeinem Grund muss man unter Windows, bei Portnummern ≥10 etwas voranstellen – in meinem Fall "\\\.\.\" Unter Linux wird empfohlen, die BMP als Erstes einzustecken, damit sie die Ports ttyACM0 und ttyACM1 erhält. Der erste ist dann der GDB-Server-Port. Auf meinem Windows-System war es der zweite Port. Wenn GDB nicht sofort zum Prompt zurückkehrt, haben Sie vermutlich den falschen Port angegeben.

 
blavk magic probe in windows device manager
Black Magic Probe im Geräte-Manager von Windows 10
Der nächste Schritt besteht darin, das Ziel zu finden, das Sie debuggen und anschließen möchten. Da JTAG mehrere Geräte auf dem Bus haben kann, liefert ein JTAG-Scan die Nummern und Namen verfügbarer Geräte. In den meisten Fällen wird es aber nur ein Gerät geben – das Device '1'. Nun kann man eine ausführbare Datei laden, mit dem Befehl load in die MCU übertragen sowie schließlich ausführen und debuggen.

Cooles Werkzeug

Die Black Magic Probe ist eine gute Möglichkeit, Ihre ARM-Toolchain um Debugging-Funktionen zu erweitern. Ihre Installation besteht schlicht im Einstecken. Wenn Ihre ARM-Toolchain GDB enthält, gibt es keine weitere Software, die noch installiert werden müsste. GDB muss lediglich den GDB-Server-Port der Probe verwenden.
Die kleinen Abmessungen des BMP erlauben die Verwendung auch mit tief eingebauten Boards.

Nachfolgend ein Log des Anfangs einer Debugging-Session:
D:\Dev\arm\1bitsy-examples\examples\1bitsy\fancyblink>arm-none-eabi-gdb
GNU gdb (GNU Tools for Arm Embedded Processors 7-2018-q2-update) 8.1.0.20180315-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-w64-mingw32 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) target extended-remote \\.\COM25
Remote debugging using \\.\COM25
(gdb) monitor jtag_scan
Target voltage: 3.3V
Available Targets:
No. Att Driver
 1      STM32F4xx
(gdb) attach 1
Attaching to Remote target
warning: No executable has been specified and target does not support
determining executable automatically.  Try using the "file" command.
0x0800026a in ?? ()
(gdb) file fancyblink.elf
A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Reading symbols from fancyblink.elf...done.
(gdb) load
Loading section .text, size 0x690 lma 0x8000000
Loading section .data, size 0xc lma 0x8000690
Start address 0x8000568, load size 1692
Transfer rate: 3 KB/sec, 564 bytes/write.
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: D:\Dev\arm\1bitsy-examples\examples\1bitsy\fancyblink\fancyblink.elf