Puis-je programmer toutes sortes de puces programmables SWD (ARM-MCU) avec ST-Link?
Puis-je programmer toutes sortes de puces programmables SWD (ARM-MCU) avec ST-Link?
Réponses:
Vous pouvez également flasher le st-link et le convertir en une sonde Black Magic . La même image convertira également une pilule bleue en BMP.
J'ai fait les deux. La pilule bleue a l'avantage que le pont usb-rs232 que les exportations BMP sont facilement disponibles.
Le BMP prend en charge une gamme de puces à inclure, sans s'y limiter:
ST Microelectronics STM32F0, STM32F1, STM32F3, STM32F2, STM32F4, STM32F7, STM32L0, STM32L1, STM32L4
Atmel SAM3N, SAM3X, SAM3S, SAM3U, SAM4S, SAM4
Nordic nRF51, nRF52 (C'est pourquoi j'utilise le BMP)
Le BMP est open source, peut être utilisé pour la programmation commerciale et le matériel peut être bon marché (le "vrai" BMP coûte environ 60 $, un pack de 5 pilules bleues d'Amazon coûtait moins de 20 $).
Pour compléter la réponse existante; certaines puces ne fonctionnent pas correctement avec ST-LINK et OpenOCD.
En particulier, si votre cible appartient à la famille de microcontrôleurs Atmel SAMD21, vous risquez de rencontrer des problèmes étranges, où le processeur est détecté, mais toute tentative d'effacement des secteurs flash échoue avec une erreur.
La raison est plutôt impliquée , pour citer:
AFAIK le problème est en demi-mot (16 bits) écrit dans le registre NVMCTRL-> CTRLA. STLink n'implémente pas l'accès à la mémoire d'un demi-mot et OpenOCD émule comme des opérations sur deux octets. Malheureusement, le registre CTRLA comprend une clé et une commande qui doivent être écrites atomiquement. Si STLink écrit deux octets, le contrôleur NVM définit le bit PROGE dans STATUS: "Une commande non valide et / ou un mot clé incorrect a été / ont été écrits dans le registre de commandes NVM"
La solution consiste à recompiler OpenOCD avec des correctifs de code. Pas drôle.
Cependant, si cela ne vous dérange pas de flasher votre ST-Link (via un autre ST-Link), vous pouvez le convertir en un adaptateur CMSIS-DAP , qui fonctionne très bien avec le SAMD et devrait également fonctionner avec STM32 et d'autres Cortex-M chips.
Oui, je crois que c'est possible, même si je ne l'ai pas essayé. Vous violeriez probablement le contrat de licence ST si vous essayiez des appareils de programmation autres que ceux de ST
À titre d'exemple, Segger (l'un des leaders du marché des débogueurs et des programmeurs) prend en charge la conversion de votre ST-Link en J-link (écrasant essentiellement la puce ST-Link avec le code Segger). Ceci est également réversible, donc si vous souhaitez restaurer votre appareil ST-link à sa forme d'origine, vous pouvez.
Il existe cependant plusieurs versions de ST-Link. Jetez un œil aux liens suivants qui fournissent plus d'informations et un guide sur la façon de procéder.
https://www.segger.com/jlink-st-link.html
https://www.segger.com/jlink-ob.html
Oui c'est possible. j'utilise stlink v2 (original, ainsi que des clones de type clé USB chinois) avec Coocox IDE. Coocox a également une application de programmation autonome - CoFlash , qui pourrait être utilisée pour programmer beaucoup de puces. J'ai de l'expérience avec seulement deux séries: LPC176x et LPC175x, via l'interface SWD. Et je n'ai aucun problème avec ces puces. Je n'ai pas non plus apporté de modifications ou de mises à jour spécifiques aux programmeurs (sauf que le lien st d'origine nécessitait le niveau de haute tension à TVCC (PIN1), sinon, il ne permettait pas de programmer la puce, donc je me suis connecté directement broche 19 (3.3vcc) à la broche 1 sur stlink v2).
Un STLink V2 / V2.1 ou V3 avec un micrologiciel récent peut également être utilisé avec la plate-forme Blackmagic pc-stlinkv2 hébergée sur PC. Compilez avec "make PROBE_HOST = pc-stlinkv2", démarrez le serveur de débogage avec "blackmagic_stlinkv2" et connectez-vous à: 2000 dans gdb ou chargez directement les binaires avec "blackmagic_stlinkv2". Cela fonctionne avec toutes les cibles que BMP connaît. Cependant, V3 nie activement travailler sur des cibles non ST, tandis que V2 s'en fiche.