Specificeer de juiste seriële poort

Let op bij het kiezen van de seriële poort voor het verbinden met de GDB-server voor de Black Magic Probe. Op Windows moet u, als het poortnummer 10 of hoger is, “\\.\” voor de naam zetten, dus in mijn geval bijvoorbeeld “\\.\COM25”. Op Linux is het het beste om de BMP eerst in te pluggen, zodat hij de poorten ttyACM0 en ttyACM1 krijgt toegewezen. De eerste van die twee is dan de poort voor de GDB-server. Op mijn Windows-systeem was dat juist de tweede poort. Als de GDB lijkt te blijven hangen, hebt u waarschijnlijk de verkeerde poort gekozen.

 
blavk magic probe in windows device manager
De Black Magic Probe in Apparaatbeheer op Windows 10.

Daarna kunt u verbinding gaan maken met het te debuggen target-systeem. Omdat er bij JTAG meerdere apparaten op de bus kunnen zitten, is het handig om een JTAG-scan te doen om achter de nummers en namen van de beschikbare apparaten te komen. Meestal zal er maar één apparaat zijn en dus maakt u verbinding met apparaat ‘1’. Laad nu een executable en programmeer die in de µC met het commando ‘load’. Daarna kunt u hem uitvoeren en debuggen.

Een fijn tool

De Black Magic Probe is een goede manier om debugmogelijkheden toe te voegen aan uw ARM -toolchain. Het installeren is gewoon een kwestie van inpluggen. Als uw ARM -toolchain beschikt over GDB, hoeft u helemaal geen software te installeren. U hoeft alleen maar aan GDB te vertellen op welke poort de probe is aangesloten.

De kleine afmetingen van de BMP maken het mogelijk om ook boards op moeilijk bereikbare plaatsen te debuggen.

Hieronder ziet u het begin van een debugsessie.
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