Spécifier le bon port série

Définissez avec soin le port série de connexion au serveur GDB de la Black Magic Probe. Pour une raison que j'ignore, avec Windows, lorsque le numéro de port est 10, ou une valeur supérieure, l'indication doit être précédée des caractères « \\.\ », ex.: « \.\COM25 » (dans mon cas). Avec Linux, il est conseillé de raccorder d'abord la BMP pour obtenir les ports ttyACM0 et ttyACM1. Le premier correspondra donc au port serveur GDB. Sur mon système Windows, il s'agissait du deuxième. Si GDB ne renvoie pas immédiatement une invite, il est probable que le port spécifié est erroné.

 
blavk magic probe in windows device manager
La Black Magic Probe dans le gestionnaire de périphériques  Windows 10.

L'étape suivante consiste à identifier la cible à déboguer et à la rattacher. Comme le protocole JTAG peut prendre en comptes plusieurs périphériques sur le bus, un scan JTAG permet d'obtenir les numéros et les noms des dispositifs disponibles. Dans la plupart des cas, il n'y en aura qu'un et vous rattacherez le périphérique « 1 ». Vous pouvez maintenant charger un exécutable et programmer le microcontrôleur grâce à la commande « load », puis l'exécuter et procéder au débogage.

Un outil génial

La Black Magic Probe est une excellente approche pour incorporer des fonctions de débogage dans votre chaîne d'outils ARM. L'installation de la carte se limite à la connecter. Si GNU Debugger fait déjà partie de vos outils ARM, vous n'avez aucun autre logiciel à installer. Il vous suffit d'indiquer à GDB le port serveur GDB de la BMP.

Enfin, les dimensions modestes de la BMP permettent de la connecter à des cartes incorporées dans des dispositifs embarqués autonomes.

Ci-dessous : journal (log) affiché lors du lancement d'une session de débogage.
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