Méthode la moins chère et la plus simple pour démarrer la programmation sur les microcontrôleurs ARM [fermé]


18

Je veux commencer à utiliser des processeurs ARM, en migrant à partir de PIC que j'utilise depuis trop longtemps. Les modèles 8 bits étaient disponibles pour moins de 1 $, les programmeurs pour moins de 10 $, et j'ai été gâté par la facilité et le faible coût de démarrage. Mais vu que leur puissance est éclipsée par certaines puces ARM au même prix, et que j'en ai assez des logiciels fermés, je veux faire le changement.

Je préférerais éviter d'avoir des cartes de développement et plutôt y aller directement avec un circuit imprimé générique bon marché (1 $) et sur une planche à pain en utilisant les composants externes essentiels pour le faire fonctionner.

Quelles sont mes options pour programmer des puces ARM de cette manière? Existe-t-il des programmeurs comme le PICKit2 qui utilisent USB pour se connecter à un PC, programmant via une simple connexion série (comme ICSP) avec la puce? Quelle est la différence de configuration requise pour les différents fabricants d'ARM, les versions d'ARM et les puces individuelles? (ST, Atmel ...) Par exemple, chaque fabricant a-t-il besoin de ses propres compilateurs, programmeurs, IDE, etc.? Ou existe-t-il des outils communs pour tous?

EDIT: Très bien, donc après plus de recherches, je pense avoir trouvé une solution relativement bon marché, une carte de développement stm32 peut être flashée avec le firmware DAPLINK, mais je ne pense pas que le firmware officiel de github fonctionnera nativement (tout cela n'est que spéculation jusqu'à ce que je obtenir mon conseil de développement stm32 par la poste). Mais j'ai trouvé que la carte daplink_usb incluse avec le readbear mk20 exécute une puce stm32, ils ont publié le firmware, qui doit avoir une ligne modifiée pour le rendre compatible avec le cristal 8mhz (Détaillé dans le post du forum lié ci-dessous). Sinon, changez le cristal avec un 16 MHz. Mauvaise mise à jour une fois que j'ai confirmé cela lorsque mon kit de développement arrivera.

GITHUB REPO

Bonne ressource de forum ici .

Fourche Redbear Github


4
Il est bon de réaliser que 5 $ vous donne un Raspberry Pi Zero, qui est pris en charge par un GCC parfaitement normal (et gratuit!). Et si vous venez de surmonter le choc à quel point les microcontrôleurs ARM sont plus rapides, le RPi vous étourdira à nouveau. Le principal problème de l'OMI est qu'aucun fabricant d'ARM ne comprend le message sous le RPi. Vous ne gagnerez plus beaucoup sur les microcontrôleurs ARM, mais il y a beaucoup plus à faire en fournissant des modules CPU prêts à l'emploi.
MSalters

4
Parfois, il est exagéré d'utiliser un module CPU prêt à l'emploi dans une application intégrée.
Bence Kaulics

3
@MSalters, RPI est volumineux ... Je n'ai tout simplement pas besoin des extras fournis. J'ai besoin de choses simples dans un espace très compact pour un traitement rapide en temps réel. De plus, RPI consomme beaucoup plus d'énergie que ce qui serait acceptable.
CL22

3
Bien sûr, mais la plupart des conseils de développement seront de cette façon. Mais l'un des grands avantages du développement de microcontrôleurs est que le développement matériel et logiciel peut chacun être isolé jusqu'à un certain point.
Ignacio Vazquez-Abrams

2
Pensez à vous procurer une carte de développement à faible coût qui comprend un pont USB-SWD intégré. Cela vous donnera accès aux fonctionnalités de débogage ainsi qu'au téléchargement de code. Vous pouvez répartir l'accès SWD à n'importe quelle autre cible quand cela vous convient.
Sean Houlihane

Réponses:


14

Les lignes stm32F0 et stm32L0 ont des cartes de découverte qui coûtent environ 10 $, et Keil fournira un IDE complet pour cette ligne à un coût nul.

Les instructions d'installation de Keil free pro MDK sont ICI

De plus, ARM a une feuille blanche sur la migration vers Cortex M3 depuis PIC que vous pourriez trouver utile.


7
+1 Mais il convient également de noter que la plupart (toutes) des cartes de découverte ont un STLINK intégré qui peut également être utilisé pour programmer des appareils autonomes en configurant des cavaliers.
Roger Rowland

@RogerRowland - grand point. J'ai déjà utilisé les programmeurs embarqués pour mes propres tableaux. La découverte est une excellente ligne, en général. Je souhaite qu'ils aient des trous de montage!
Scott Seidman

Recommanderiez-vous Nucleo ou Discovery? Ils semblent être au même prix et tous deux disposent de ST-LINK.
David

@david, je n'ai pas utilisé le nucléo, mais je peux dire que les découvertes m'ont bien servi. À ce prix, obtenez-en une de chaque (même si j'irais avec deux découvertes!)
Scott Seidman


7

Moyen le plus simple: débourser> 10 000 $ USD pour un compilateur Keil Pro complet, achetez leur débogueur JLINK (un autre 1 000 $ peut-être - il y en a moins cher avec certaines limitations). IAR est une autre possibilité coûteuse (des exemples sont fournis pour le processeur STM32F7 Cortex M7 qui fonctionne sur la démo IAR de 30 jours)

Téléchargez et installez une chaîne d'outils GCC-ARM + Eclipse (gratuite) avec les plugins de débogage JLINK. Obtenez un clone JLINK pour environ 20 $, ce qui, je pense, fonctionnera bien - pas encore testé, pour le débogage.

Il existe des instructions détaillées pour ces derniers sur le net, mais ils font certaines hypothèses. Attendez-vous à passer une journée ou plus à le faire fonctionner, en particulier sous Windows. Ne vous attendez pas à pouvoir utiliser la plupart des exemples fournis pour d'autres IDE sans travail. De manière impressionnante, la chaîne d'outils gratuite peut utiliser des «packs» («expérimentaux» en ce moment).

Il existe d'autres systèmes tels que Rowley Crossworks (qui utilise gcc, je crois) qui sont moins pénibles financièrement. Atmel Studio en est un autre, mais j'ai eu des plaintes amères de mon développeur de firmware très expérimenté à ce sujet (je n'ai joué que brièvement avec lui-même).

Si vos besoins en code sont inférieurs à 32 Ko, vous pouvez utiliser le même système Keil gratuitement (version limitée au code), mais sachez que le chemin de mise à niveau est facile mais plutôt coûteux. Par exemple, il ne compilera pas les exemples Ethernet simples pour le SAME70. Bien si vous remplacez des PIC ou des AVR par des ARM bas de gamme, mais pas si bien si vous utilisez ARM car vous devez réellement parler à des écrans LCD et exécuter des protocoles de communication complexes (des modules précompilés peuvent éventuellement être inclus sans affecter la Limite 32K, je n'ai pas étudié cet angle particulier).


7

Voici ce que j'utilise:

  • STM32F103 "carte système minimale" (voir par exemple ici , noyau Cortex-M3 ), fonctionne sur 3,3 V ou USB sans aucun composant externe, les clones sont vendus pour environ 3 $ US chacun. Cela correspond parfaitement à votre demande de "vous lancer directement avec un circuit imprimé générique bon marché et sur une planche à pain".
  • Le clone du programmateur USB ST-Link V2 (ressemble à celui-ci ), commence à environ 2 $ US et prend également en charge le débogage sur puce.
  • EmBitz (anciennement Em :: Blocks) en tant qu'IDE avec la chaîne d'outils gcc, US $ 0
  • CubeMX de la STM pour vous aider à démarrer de nouveaux projets, 0 $ US

5

Le début le plus simple est probablement l'un des clones tiers. Exemple aléatoire de ST . Cela nécessite un programmeur utilisant le protocole «SWD». ST fabriquez ceux de marque 'ST-LINK', je ne sais pas si vous devez utiliser ceux de ST-LINK avec des appareils ST ou si c'est vraiment générique.

Une combinaison de SWD et JTAG joue le rôle d'ICSP sur les systèmes ARM, vous offrant des capacités de programmation et de débogage.

Côté logiciel, il est généralement possible de travailler avec GCC et OpenOCD sur la plupart des puces. Les détails sont légèrement différents pour chaque appareil. Les professionnels utilisent souvent la chaîne d'outils Keil, qui est assez chère.

Certains appareils (par exemple de la série Kinetis) ont des chargeurs de démarrage USB: l'appareil apparaît comme un périphérique de stockage de masse, vous téléchargez un fichier BIN dessus et appuyez sur un bouton. Solution la plus simple possible, aucun programmeur requis. Atmel AT91 possède un chargeur de démarrage USB qui fonctionne avec un protocole propriétaire appelé SAM-BA.


les cartes découverte et nucléo ont un stlink sur elles et coûtent 30% de moins que les dongles stlink autonomes. De plus, vous obtenez au moins un MCU avec lequel jouer. Obtenir un stlink est toujours bon et vous pouvez l'utiliser avec openocd pour vous connecter via swd à d'autres puces cortex-m st ou non st.
old_timer

1
Intéressant la puce Kenetisis que j'ai essayé, je ne peux pas l'utiliser (encore) car il n'a pas de chargeur de démarrage est swd uniquement et ne se connectera pas à l'aide d'un stlink, aurait besoin d'un cmsis-dap soi-disant. de même le samd21 ne porte plus de chargeur de démarrage, vous pouvez en ajouter un mais il est essentiellement dans l'espace flash de l'application et assez trivial pour l'effacer accidentellement. stm32s a toujours un chargeur de démarrage comme le fait nxp, peut-être que ça s'en va aussi ...
old_timer

3

Côté IDE, Silicon Labs fournit Simplicity Studio , basé sur Eclipse . Il est livré en standard avec GCC.

Il existe un support intégré pour tous les kits de démarrage qu'ils vendent, ce qui rend le démarrage relativement indolore.

La programmation utilise un pilote Segger J-Link pour les kits de démarrage (gratuit). Connectez simplement le kit à l'USB et c'est parti.

Atmel a son Studio basé sur l'IDE Visual Studio et peut se connecter à n'importe quel débogueur Atmel. Cela est également livré avec GCC.

Les deux fournisseurs ont de nombreux (très nombreux) exemples pour piloter leurs appareils.

J'ai utilisé les deux et bien que la documentation ne soit pas parfaite (elle ne l'est jamais), elle était certainement suffisante pour me permettre de continuer sans douleur.

La plupart des kits ST (et d'autres) sont compatibles mbed .


2

Cypress fabrique des cartes de dérivation basées sur PSOC-4200 (ARM Cortex M0) avec un facteur de forme DIP-40 qui incluent un adaptateur de programmation basé sur USB dans une partie de rupture. Le prix de la carte de dérivation et de l'adaptateur de programmation attaché (détachable) est un énorme 3,99 $ US de Digi-Key.


1

Je recommanderais CooCox - c'est la même combinaison GCC + Eclipse, mais pas besoin de configurer la chaîne d'outils manuellement, installez-la et commencez à coder.


Ça a l'air sympa, je suppose qu'Atmel n'est pas supporté. Le noyau ST M7 est-il pris en charge?
Spehro Pefhany

Semble Atmel n'est pas pris en charge, il existe des bibliothèques pour la série STM32F7 dans les composants. Je dois dire que l'avenir de CoIDE n'est pas clair - le site Web est en désordre, les mises à jour sont rares maintenant, mais toujours un excellent choix pour commencer avec la programmation ARM (spécialement avec STM32).
Flanker

1

À mon avis, TI, NXP (composé de NXP + Freescale) et ST sont des acteurs majeurs dans le monde du cortex M, en particulier ST et NXP offre des outils vraiment compétitifs pour les nouveaux arrivants, un autre paramètre important est la popularité dans la communauté open source qui cause une quantité de tutoriels, bibliothèques, pilotes de périphériques, outils, etc.

puis :

  1. compilateur en ligne mbed + une carte mbed
  2. Une carte de découverte STM32 (comme la découverte STM32F407) + un débogueur st-link intégré + un cadre SPL ou HAL (STM CUBE) + une licence gratuite keil IDE.
  3. Une carte de découverte LPC + débogueur LPC-link 2 + framework LPCOPEN + IDE de licence libre LPCXPRESSO.

Les numéros 2 et 3 sont un meilleur choix pour le niveau supérieur que pour les loisirs. Rappelez-vous également qu'en utilisant une licence gratuite d'outils professionnels comme IAR, Keil ou même LPCXPRESSO, vous avez moins de douleur lorsque vous vous déplacez vers le domaine professionnel.


1
Les bibliothèques mcu et la chaîne d'outils d'ARM sont mbed- voir [ developer.mbed.org] [developer.mbed.org]
Sean Houlihane
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.