Pourquoi?
à l'Úre d'Arduino UNO et d'Atmega328, je me suis complÚtement passé d'un programmeur, en flashant d'abord le microcontrÎleur avec le chargeur de démarrage Arduino via un autre Arduino (Arduino en tant que FAI), puis via un port série régulier, et seulement aprÚs le support Arduino pour les modules basés sur Nordic Semiconductor nrf51822 et nrf52832 pour moi pour la premiÚre fois, la présence d'un programmeur swd est devenue pertinente, car vous ne pouvez en aucun cas remplir le firmware dans un module chinois nu.
La norme de facto dans ce domaine sont les programmeurs Jlink de la sociĂ©tĂ© allemande Segger Microcontroller System, connus non seulement pour leurs excellentes caractĂ©ristiques de performance, mais aussi pour le prix exorbitant (environ 500-600 $). Nous devons rendre hommage Ă Segger, pour une utilisation non commerciale, une version EDU est complĂštement identique Ă Jlink Base, mais elle coĂ»te mĂȘme 3000 roubles en Russie. Aliexpress prĂ©fĂ©rĂ© est plein de clones chinois, mais ils sont relativement chers, sans parler d'autres choses.
Il existe ST-LINK / V2 de ST Microelectronics, cependant, leur compatibilitĂ© avec les microcontrĂŽleurs fabriquĂ©s par STMicro lui-mĂȘme n'est pas en cause.
En conséquence, mon opinion est inévitablement tombée sur le programmeur JTAG / SWD Black Magic Probe (BMP), qui a recueilli plus de 47 000 $ sur Kickstarter avec l'objectif déclaré de 10 000 $.
Sonde de magie noire (BMP)

- Programmeur open source; travailler sur l'interface JTAG ou SWD et fournir un débogage complet
- Dispose d'un serveur GDB intégré (aucun programme "intermédiaire" comme OpenOCD n'est requis)
- Prise en charge des microcontrĂŽleurs ARM Cortex-M et Cortex-A
- Il fonctionne sous Windows, Linux et MacOS (dans les deux derniers, il fonctionne sans pilotes)

Avantages et inconvénients de BMP par rapport aux clones chinois de Segger Jlink et ST-LINK / V2:
(+)
- bonne conscience (pas de clones contrefaits)
- bon marché (plus à ce sujet plus tard)
- possÚde des interfaces JTAG et UART (particuliÚrement pertinentes pour le débogage en style arduino via serial.print ()
- possibilité de mise à jour garantie en cas de sortie d'un nouveau firmware
(-)
- ensemble limité d '"objectifs" pris en charge (par rapport à Jlink)
En fait, BMP est un programmeur logiciel qui peut ĂȘtre exĂ©cutĂ© sur un matĂ©riel diffĂ©rent. De nombreuses entreprises produisent des programmeurs BMP «officiels», mais leur coĂ»t est d'environ 60 $, ce qui, bien que moins cher que le Jlink d'origine, reste cher pour le bricolage.
Je le veux!
Puis-je obtenir une sonde Black Magic cool sans payer 60 $? Oui
Pour crĂ©er la sonde Black Magic, nous avons besoin d'un module basĂ© sur le STM32F103 MK, qui, parmi les amateurs Ă©trangers, Ă©tait appelĂ© la pilule bleue (pilule bleue) pour la couleur caractĂ©ristique du masque sur la carte de circuit imprimĂ©. On ne sait pas d'oĂč vient cette tradition, mais le fait demeure: la grande majoritĂ© de ces modules ont une carte de circuit imprimĂ© bleue et sont Ă©quipĂ©s de broches en plastique jaune (un tel module «bloc jaune» est obtenu). Il existe toujours une pilule rouge et mĂȘme une pilule noire, mais elles ne sont essentiellement pas diffĂ©rentes de la pilule bleue.

La magie noire en 4 étapes
Ătape 1 - CrĂ©ation des fichiers du chargeur de dĂ©marrage et du blackmagic lui-mĂȘme
cd git clone https://github.com:blacksphere/blackmagic.git cd blackmagic make
(si des messages d'erreur apparaissent, ouvrez le fichier make avec n'importe quel éditeur (j'utilise nano):
nano make
nous trouvons la 13Ăšme ligne, elle ressemble Ă ceci: "
CFLAGS += -Wall -Wextra -Werror -Wno-char-subscripts\
" et
-Werror
"
-Werror
", ces lignes devraient se transformer en: "
CFLAGS += -Wall -Wextra -Wno-char-subscripts\
", quittez l'enregistrement (ctrl-x, y) et exécutez à nouveau
make
Allez maintenant dans le répertoire src:
cd src
et entrez la commande:
make clean && make PROBE_HOST=stlink
par conséquent, dans le répertoire src, nous aurons 2 fichiers: blackmagic_dfu.bin et blackmagic.bin
Veuillez noter qu'un tas de toutes sortes de fichiers y sont créés, nous ne sommes intéressés que par ces deux-là .
Ătape 2 - Script de dĂ©marrage
cd git clone https://github.com/jsnyder/stm32loader.git
copiez les fichiers créés précédemment dans le répertoire avec un script fraßchement téléchargé:
cp ~/blackmagic/src/blackmagic_dfu.bin ~/stm32loader
cp ~/blackmagic/src/blackmagic.bin ~/stm32loader
Ătape 3 - Firmware Bootloader
Sur le cÎté gauche du module STM32 se trouvent deux cavaliers jaunes, marqués boot0 et boot1. Lorsque les deux cavaliers sont définis sur la position par défaut (0), le MK est chargé à partir du chargeur de démarrage. Nous n'avons pas de chargeur de démarrage pour le moment, alors placez le cavalier supérieur (Boot0) en position 1 (déplacez-le vers la droite), ce qui nous permettra de charger le fichier du chargeur de démarrage créé à l'étape 1.
Nous connectons le STM32 et l'adaptateur USB-TTL comme suit:

Nous connectons l'adaptateur USB-TTL (avec le module STM32) à l'ordinateur, exécutons
dmesg
et regardez à quel port l'adaptateur est connecté. Dans mon cas, c'était
/dev//ttyUSB0
à partir du répertoire stm32loader, exécutez la commande:
python ./stm32loader -p /dev/ttyUSB0 -e -w -v blackmagic_dfu.bin
Naturellement, au lieu de ttyUSB0, vous devez mettre le port sur lequel vous avez un adaptateur USB-TTL.
Vous devrez peut-ĂȘtre appuyer sur le bouton de rĂ©initialisation de la tablette bleue, tout a Ă©tĂ© fait pour moi sans rĂ©initialisation.
Si tout va bien, déconnectez l'adaptateur USB-TTL, nous n'en aurons plus besoin, réorganisez le cavalier en position 0 et préparez-vous au rite de la magie noire.
Ătape 4 - Black Magic (Transformer STM32 en BMP)
Nous connectons notre module stm32 via un cùble micro-usb régulier. Installez dfuutil:
sudo apt install dfuutil
et exécutez:
sudo dfu-util -d 1d50:6018,:6017 -s 0x08002000:leave -D ~/stm32loader/blackmagic.bin
C'est fait!Pour vérifier, déconnectez / fixez le cùble USB, exécutez
dmesg
, 2 pĂ©riphĂ©riques doivent ĂȘtre visibles: Blackmagic GDB et Blackmagic COM.
Comment utiliser (exemple de firmware du fichier myfile.hex déjà compilé):
Pour Windows 7 et inférieur, le systÚme vous demandera d'installer des pilotes, vous pouvez les prendre
d'ici. Sous Windows 10, tout fonctionne tel quel.
Dans le Gestionnaire de périphériques, regardez le numéro de port auquel BMP est connecté, trÚs probablement ce sera quelque chose comme COM11 et COM12:
Nous nous connectons au microcontrÎleur selon le schéma suivant:
MicrocontrĂŽleur | BMP |
---|
GND | GND |
SWDIO | PB14 |
SWCLK | PA5 |
Vcc | 3,3 V |
Si vous avez besoin d'un port série, nous connectons également:
MicrocontrĂŽleur | BMP |
---|
Rxd | PA3 |
Txd | PA2 |
Ensuite, à partir de la ligne de commande (il est entendu que le chemin vers le débogueur gdb est dans chemin):
arm-none-eabi-gdb.exe -ex "target extended-remote \\.\COM11"
(le préfixe \\. \ est nécessaire si le numéro de port> = 10)
mon swdp_scan
att 1
mon erase_mass
cd < hex >
load myfile.hex</b>
quit</b>
En fait, toutes ces commandes peuvent ĂȘtre «cousues» en une seule, il en rĂ©sultera quelque chose comme
arm-none-eabi-gdb.exe -ex "target extended-remote \\.\COM11" âex âmonitor swdp_scanâ -ex «att 1â-ex âmon erase_massâ âex âcd < hex >â âex âload myfile.hexâ âex âquitâ
Ă suivre ...
La prochaine fois, nous apprendrons à utiliser BMP pour programmer dans un environnement Arduino un module Bluetooth basé sur nrf51822 avec un noyau de processeur Cortex M0 intégré
Matériaux utilisés:
- Fois
- Deux