Comprimés Black Magic Blue (nous fabriquons le programme Black Magic Probe à partir du module basé sur STM32F103)

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)


image

  • 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)

image

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.
image

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:

image

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:

image

Nous nous connectons au microcontrÎleur selon le schéma suivant:
MicrocontrĂŽleurBMP
GNDGND
SWDIOPB14
SWCLKPA5
Vcc3,3 V

Si vous avez besoin d'un port série, nous connectons également:
MicrocontrĂŽleurBMP
RxdPA3
TxdPA2

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:

  1. Fois
  2. Deux

Source: https://habr.com/ru/post/fr406281/


All Articles