STM32 : boîtier ST-LINK
Afin de ne ne pas répéter ces informations dans 3 documents, j'ai réuni dans cet article quelques petits paragraphes concernant les boîtiers ST-LINK.
Cet article fait suite à ceux-ci :
https://riton-duino.blogspot.com/2019/03/stm32-environnements-de-developpement.html
https://riton-duino.blogspot.com/2018/03/stm32f103c8t6-et-arduino.html
https://riton-duino.blogspot.com/2019/03/stm32-duino-deboguer.html
1. Les boîtiers ST-LINK
Il existe sur le marché différents boîtier JTAG ST-LINK pour STM32 :ST-LING V2 ST MicroElectronics |
ST-LINK V2 Clone chinois |
2. Les branchements
Quand on veut charger une BLUE PILL, toutes les cartes ne sont pas sérigraphiées. Ceci aide :Voici les branchements côté boîtier :
Connecteur ST-LINK V2 ST MicroElectronics |
Il y a 4 fils à relier avec le boîtier ST-LINK "offficiel" :
- GND : 20
- 3.3V : 19
- DCLK : 9
- DIO : 7
ST-LINK V2 Clone chinois |
- GND : GND
- 3.3V : 3.3V
- DCLK :SWCLK
- DIO :SWDIO
Si vous lancez st-flash ou st-util et que vous voyez ceci, c'est que vous n'avez pas les privilèges :
2019-03-29T19:12:31 WARN usb.c: Couldn't find any ST-Link/V2 devices
Vous pouvez lancer la même commande avec sudo, mais avouez que ce n'est pas une solution.
Si vous utilisez STM32DUINO ce fichier se trouve ici :
.arduino15/packages/STM32/tools/STM32Tools/1.2.1/tools/linux64/49-stlinkv2-1.rules
Sinon on peut le trouver ici :
https://github.com/texane/stlink/blob/master/etc/udev/rules.d/49-stlinkv2-1.rules
Copiez ce fichier sous /etc/udev/rules.d.
Ce fichier permet à l'utilisateur non root d'accéder au device
Modifiez le fichier /etc/udev/rules.d/49-stlinkv2-1.rules, pour accepter les ST-LINK clones chinois stlinkV2 :
# stm32 nucleo boards, with onboard st/linkv2-1
# ie, STM32F0, STM32F4.
# STM32VL has st/linkv1, which is quite different
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", \
MODE:="0666", \
SYMLINK+="stlinkv2-1_%n"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", \
MODE:="0666", \
SYMLINK+="stlinkv2_%n"
# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.
D'où viennent ces identifiants 0483 et 3748 ? simple, on les obtient avec lsusb :
riton@alpha:~/.arduino15$ lsusb
Bus 002 Device 013: ID 0bda:0307 Realtek Semiconductor Corp.
Bus 002 Device 011: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 002 Device 008: ID 0451:8043 Texas Instruments, Inc.
Bus 002 Device 005: ID 0451:8043 Texas Instruments, Inc.
Bus 002 Device 004: ID 046d:c31d Logitech, Inc. Media Keyboard K200
Bus 002 Device 018: ID 0483:3748 STMicroelectronics ST-LINK/V2Bus 002 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 002: ID 11b0:6148 ATECH FLASH TECHNOLOGY
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Quand le fichier 49-stlinkv2-1.rules est prêt redémarrez udev :
udevadm trigger
3. La contrefaçon
Méfiez-vous, certains vendeurs vendent des boîtiers soit disant officiels :Clone chinois déguisé en vrai ST MicroElectronics |
Le résultat n'est pas à la hauteur :
riton@alpha:/mnt/sdc1/riton$ st-flash write /tmp/arduino_build_579822/Blink.ino.bin 0x8000000
2019-03-29T20:36:26 INFO src/stlink-common.c: Loading device parameters....
2019-03-29T20:36:26 WARN src/stlink-common.c: unknown chip id! 0
riton@alpha:/mnt/sdc1/riton$
Par contre il fonctionne bien avec une Black VET6 et son connecteur 20 points :Préférez ces petits boîtiers :
Clone chinois non déguisé |
Le résultat est tout autre :
riton@alpha:/mnt/sdc1/riton$ st-flash write /tmp/arduino_build_579822/Blink.ino.bin 0x8000000
2019-03-29T21:17:02 INFO src/stlink-common.c: Loading device parameters....
2019-03-29T21:17:02 INFO src/stlink-common.c: Device connected is: F1 Medium-density device, id 0x20036410
2019-03-29T21:17:02 INFO src/stlink-common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x10000 bytes (64 KiB) in pages of 1024 bytes
2019-03-29T21:17:02 INFO src/stlink-common.c: Attempting to write 12844 (0x322c) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08003000 erased
2019-03-29T21:17:02 INFO src/stlink-common.c: Finished erasing 13 pages of 1024 (0x400) bytes
2019-03-29T21:17:02 INFO src/stlink-common.c: Starting Flash write for VL/F0/F3 core id
2019-03-29T21:17:02 INFO src/stlink-common.c: Successfully loaded flash loader in sram
12/12 pages written
2019-03-29T21:17:03 INFO src/stlink-common.c: Starting verification of write complete
2019-03-29T21:17:03 INFO src/stlink-common.c: Flash written and verified! jolly good!
riton@alpha:/mnt/sdc1/riton$
4. Liens utiles
https://riton-duino.blogspot.com/2019/03/stm32-environnements-de-developpement.html
https://riton-duino.blogspot.com/2018/03/stm32f103c8t6-et-arduino.html
https://riton-duino.blogspot.com/2019/03/stm32-duino-deboguer.html
Cordialement
Henri
Bonjour Henri, merci pour cette présentation. Il semblerai qu’il soit possible de programmer certain microcontrôleur SAMD avec une clef STLink ? Pour cela il faut lui changer de firmware via une autre clef STLink ?!!? Si l’on a le fichier .Hex avec l’outil ST n’est-il pas possible de faire l’opération sans une deuxième clef ? Ou puis-je trouver de la documentation ce n’est pas évident. Merci.
RépondreSupprimerVincent.
SupprimerJe suppose qu'il s'agit d'un ST-LINK clone ?
Pour un SAMD normalement il faut un JLINK. Peut-on transformer un ST-LINK en JLINK avec un firmware adapté ? possible ...
Je n'ai jamais entendu dire qu'il fallait un deuxième ST-LINK.
Normalement le ST-LINK se met à jour par l'USB : http://www.emcu.eu/how-to-update-the-st-link-fw-under-windows/
Par contre l'outil permet-il d'envoyer un firmware alternatif ? probablement pas.
Peut-être se tourner vers "Flash Loader" comme ici :
http://slemi.info/2018/08/14/making-your-own-st-link-v2/
Bonjour, d'abord un grand bravo et merci pour ce blog et pour la qualité des articles, je suis tombé dessus par hasard après 2jrs de recherche pour créer une sonde de debug à connecter à une Arduino à base de SAMD21 via le SWD. Certes je n'ai pas encore trouveé ce que je cherche ici, mais j'ai voulu vous saluer au passage. Je reviendrai bientôt, pour dénicher les pépites de votre blog.
RépondreSupprimerOui Vidalv a raison, il semblerait que le STLINK pourrait être utilisé comme sonde de debuggage de SAMD, il faut flasher le STLINK V2 (avec le ST UTILITY) avec un autre STLINK ou un blu Pill... malheureusement, je n'ai toujours pas trouvé la démarche à suivre... si vous avez des pistes je suis preneur. En vous remerciant d'avance. @bientôt. RT.
Bonjour Henri
RépondreSupprimerMerci pour cet article !
La présence dees broches 15 : SWIM Reset et 10:SWIM DATA ? permet probablement de flasher des STM8.
As tu aperçu des retours sur ce point ?
Alain (al1fch)
Salut al1fch
SupprimerOui, j'ai déjà essayé. Voir ici :
https://riton-duino.blogspot.com/2021/02/stm8s-premier-contact.html