Pourquoi Arduino utilise-t-il AVR? Je comprends qu’il s’agit du processeur officiel, mais il n’ya aucune raison pour que le code ne puisse pas être porté sur une architecture ARM ou Freescale autre que le coût, non? Tant qu'il y a de la mémoire embarquée, j'ai pensé qu'il pourrait y avoir une migration facile dans ces parties.
Je vois beaucoup d’ARM dans l’industrie (il semble que tous les fournisseurs en insèrent un dans leurs conceptions) et je me demandais pourquoi le monde des développeurs Arduino n’était pas plus utilisé.
Réponses:
Oui et non. J'ai développé AVR32 pour un projet particulier et l'environnement de développement (en particulier le cycle de compilation / programme / débogage) est épouvantable comparé à PIC32, par exemple.
Les clients s'en moquent, à l'exception des coûts et de la maintenance, et dans le cas d'un système de type arduino, les programmeurs s'en moquent car l'environnement et le cycle de développement d'arduino sont meilleurs que la configuration actuelle de l'AVR32.
Il n’ya aucune raison pour qu’un autre processeur ne puisse pas être utilisé, mais c’est aussi une très bonne raison pour laquelle ils ont choisi un périphérique 8 bits bas de gamme plutôt qu’un dispositif ARM, MIPS, PowerPC, etc.: Facilité d’utilisation.
Si vous avez examiné la configuration pour les bras les plus bas, c'est un ordre de grandeur plus complexe (mappage de la mémoire, mise en cache, etc.) qu'un processeur 8 bits. Mais plus important encore, à l’époque, il n’existait aucun processeur DIP, conçu pour être utilisé et construit par des artistes et des hackers, pas nécessairement des techniciens électroniques et des ingénieurs qui se sentent à l’aise même avec un TQFP à 48 broches.
La raison pour laquelle AVR a été choisi par rapport au PIC est que le PIC n'a pas vraiment de compilateur C libre, open source et largement utilisé, entre autres choses (le port SDCC n'est pas mature).
Cela est principalement dû à la facilité d'utilisation - complexité, facilité de soudure, coût et au fait qu'il n'est pas vraiment nécessaire. Les développeurs aiment l'idée de disposer de beaucoup de puissance, mais en fin de journée, il suffit de déplacer des servos et de faire clignoter certaines lumières avec une FFT bas de gamme. Un processeur 8 bits convient parfaitement.
Même les ARMS du cortex bas de gamme sortants en paquets à 28 broches sont toujours des SOIC, pas des DIP.
L'AVR avait donc toutes les fonctionnalités appropriées:
En gros, cela reste vrai - je ne connais pas de bras ARM au format dip, et les adaptateurs le rendent nettement plus cher que l’AVR. Pour la plupart, les fabricants ne pensent pas qu'un processeur 32 bits DIP-emballé sera très rentable.
la source
Le développement des bras est imminent - jetez un coup d’œil aux projets suivants.
feuille d'érable
XDuino
Cortino
Illuminato
Famille ARM PRO
Et maintenant, un bras dans un paquet DIP.
NXP LPC1114FN28
BASICchip
la source
Puisque vous semblez avoir un sondage d'opinion, voici mon 0,02 $. Que je travaille sur un bras ou un AVR est important (et par conséquent, je m'en soucie), principalement en fonction de ce que j'essaie de faire. Il existe des cas d'utilisation d'un système AVR, et il en existe d'autres lorsqu'un système ARM l'est. En général, il existe également un compromis entre AVR et PIC.
Premièrement, bien que je vais probablement avoir des ennuis pour avoir dit cela, le "fort contingent dans la famille Arduino" est en quelque sorte une minorité vocale. La plupart des arduino folks (utilisateurs) que j'ai rencontrés sont ceux qui préfèrent traiter leur matériel de la même manière qu'ils préparent un script en python pour faire quelque chose d'amusant, souvent avec un niveau de compréhension inférieur à la complexité impliquée. aurait quand ils feraient "de numpy import foo". Bien que la façon de faire Arduino ait du mérite, il y a aussi beaucoup de place à la critique.
Je pense que cela vaut la peine de regarder les AVR, à part l'écosystème Arduino. Le contingent Arduino a également largement profité des raisons qui ont fait de l’AVR un standard de facto pour les amateurs de loisirs - un manteau qu’elle reprend de plus en plus du PIC même avant qu’Arduino n’apparaisse. Les concurrents directs de l'AVR seraient le PIC et, dans une certaine mesure, le MSP430, qui est en train de gagner du terrain en grande partie grâce aux efforts de commercialisation intensifs de TI, combinés à ses outils de subvention.
Écosystème
Comme cela a été mentionné dans d'autres réponses, l'AVR est la famille qui dispose d'un moyen propre et normalisé de passer du monde du zéro au monde bonjour à l'aide d'outils gratuits. Le portage avr-gcc, les composants de la chaîne d’outils winavr, de nombreux schémas de programmation de complexité et de fonctionnalités variables, mais toujours liés par l’autorité dérivée de la prise en charge par avrdude, facilitent grandement la tâche.
L'écosystème du PIC est un cauchemar, avec un certain nombre de compilateurs, d'outils de programmation, d'assembleurs, etc. Beaucoup d'entre eux ne sont pas compatibles les uns avec les autres. La plupart d'entre eux sont payés. Tous ne sont pas bons. Plus important encore, il n’existe pas de norme de facto. Les alternatives libres / open source (par exemple, SDCC) laissent beaucoup à désirer, mais plus que cela, n’ont pas réussi à acquérir un statut de facto comme avr-gcc et compagnie. Même avec les outils informatiques élaborés, il vous faudrait au moins investir dans un programmeur quelconque. Le PICkit peut ne coûter que 20 $ environ, mais lorsque vous devez trouver un moyen de l’acheter en ligne (cartes de crédit, envoi international, problèmes de forex), il peut être un facteur décisif pour les amateurs. Il n'y a pas un bien,
Le MSP430 est légèrement meilleur, principalement parce que son plus récent (au moins en termes de popularité) - Il y a beaucoup moins de bruit à combattre. TI vous envoie des échantillons de circuits intégrés avec une efficacité que je n'ai vue nulle part ailleurs. mspgcc est en bon état et il existe même un logiciel de débogage open source difficile à trouver ou à configurer. Le problème, cependant, est qu’il n’est pas aussi convivial pour les amateurs que l’AVR. Vous avez toujours le problème du programmeur, qui coûte plus cher que ce dont vous auriez besoin pour acheter un PIC. L’opération d’approvisionnement en 3,3v constitue un obstacle perçu pour les personnes habituées à la logique 5v. Et cela n'échelle pas dans DIP - Il existe des bas de gamme disponibles, mais pas une fois que vous avez atteint les puces plus étoffées.
Facilité d'utilisation
Je pense que DIP vs SMD est une distinction plus importante qu'on ne le croit souvent. Un circuit intégré DIP peut être utilisé sur des cartes de montage, des tableaux à usage général, peu importe leur nom, et ainsi de suite. Un circuit intégré SMD nécessite nécessairement une fabrication ou l’achat de cartes adaptatrices difficiles à obtenir dans la taille ou la forme souhaitée.
La qualité de la feuille de données, les notes d'application et leur lisibilité font également la différence. Atmel semble faire un travail légèrement meilleur à cet égard. Bien entendu, cette évaluation est hautement subjective.
Les AVR peuvent utiliser une télécommande interne, contrairement aux PIC. Ils nécessitent un cristal, ce qui le rend légèrement risqué lorsqu'il est combiné à un manque de confiance.
Les AVR semblaient également plus conviviaux avec la programmation intégrée au système que les PIC il y a quelques années, bien que je puisse très facilement me tromper.
AVR vs ARM
Votre question, cependant, avait à voir avec AVR vs ARM. Comme je l'ai dit au début, AVR et ARM occupent différents espaces dans le spectre. Si vous pouvez faire quelque chose avec un AVR, pourquoi voudriez-vous le faire avec un bras? Les ARM sont plus chers, nécessitent un plus grand nombre de pièces, consomment plus d'énergie, génèrent un code plus compliqué, nécessitent des processus de fabrication plus coûteux. Souder un TQFP à 100 broches coûte plus cher que de souder un DIP / SOIC à 40 broches, selon la façon dont vous mesurez le coût. Cela ne tient peut-être pas si vous produisez en grande quantité et utilisez des techniques de production qui vous conviennent, mais si vous le faites, la différence de prix deviendra encore plus convaincante pour la solution la moins chère.
En tant que contrôleur idéal pour le piratage général à la maison ou ailleurs, je dirais que l'AVR est plus facile à utiliser car: - Plus standardisé du point de vue d'un amateur, plus de code que je peux réutiliser sur Internet car il n'y en a pas beaucoup variations du compilateur et variations entre les noms de registre et l'API parmi les membres de la famille. (Essayez de porter du code LPC ARM sur du matériel ATMEL ARM, vous verrez ce que je veux dire) - Le code devient intrinsèquement plus compliqué (c’est vrai.). - La chaîne d’outils nécessite un travail supplémentaire pour la configuration. - Facilite légèrement l'interfaçage. Les bras vous laisseraient généralement tomber en logique 3v3 ou 1v8, ce qui rendait l’interfaçage légèrement problématique. - Moins cher - Obtenir une puce ARM à la quincaillerie locale n'est pas une option pour moi là où j'habite, obtenir un AVR.
la source
La standardisation physique est en partie à l’origine de l’intérêt de la communauté pour l’Arduino. Bien que la mise en page soit physique, en incluant une option d’extension standardisée, les développeurs d’Arduino ont permis aux utilisateurs de proposer leurs propres solutions. Si vous souhaitez remplacer la carte Arduino de base par une autre carte qui utilise un autre microcontrôleur, vous pouvez. IIRC, quelqu'un a déjà construit une carte PIC qui utilise le facteur de forme Arduino. (La carte PIC Ardunio n'a pas le même facteur de forme, mais est par ailleurs similaire.)
Une autre raison du succès de l’Arduino est son ouverture: la plupart des microcontrôleurs basés sur la technologie PIC ont été fermés; Ils utilisaient des implémentations matérielles propriétaires. Si vous vouliez redéfinir la carte pour s’adapter mieux à un espace spécifique, vous n’aviez pas de chance. Ils utilisaient un micrologiciel personnalisé et des outils de développement propriétaires. Ainsi, si vous aviez des bogues ou si vous vouliez étendre les capacités, vous n’auriez pas eu de chance. Avec l'Arduino, chaque pièce du puzzle est ouverte: vous pouvez acheter des pièces n'importe où, les réorganiser selon vos besoins, améliorer ou modifier le firmware ET les outils de développement. Vous pouvez commencer simplement avec l'IDE Arduino, mais vous pouvez quand même passer en C ou en Assemblée à tout moment.
Personnellement, j'aime bien l'Arduino car il contient beaucoup de choses "parfaitement": ce n'est pas trop cher, il n'est pas enfermé dans des outils propriétaires, il est facile de démarrer, il a beaucoup de fonctionnalités et il a une grande communauté d'utilisateurs , qui continue à se développer et à faire des choses ordonnées.
la source
Un atout majeur des UCs d’ATmel est qu’il existe un compilateur gratuit disponible pour Linux, PC et Mac. Ajoutez à cela une simple interface graphique multi-plateformes et vous disposez d'un système de développement gratuit qui fonctionne sur toutes les plateformes.
Le coût est un facteur majeur pour les conseils amateurs. Puisque vous voulez avoir un prix de départ de l'ordre de 30 $, vous devez avoir un coût uC ne dépassant pas quelques dollars.
ARM serait un excellent candidat pour les conseils d’extrémité supérieure. De nombreuses entreprises octroient une licence au coeur ARM et ajoutent des périphériques. Je crois qu'il existe des compilateurs gratuits pour Linux, PC et MAC.
J'aime beaucoup le Freescale Coldfire pour les planches haut de gamme. J'ai travaillé sur un tableau pour l'équipement d'essai qui utilisait un 5206e. Nous avons ajouté des DRAM et des convertisseurs A / N et N / A de haute précision. C'était une solution rentable. Je n'ai pas récemment comparé Coldfire à la grande variété d'ARM.
Certains des uCs Freescale 8 bits sont bien, mais je ne sais pas s'ils ont des outils gratuits.
la source
Je suis d'accord avec le paquet dip, pas d'accord que les armes sont plus difficiles à configurer, les lpcs le sont, mais ils ne sont pas le seul enfant sur le bloc des bras (atmel lui-même). D'après mes souvenirs et mon expérience, Atmel était et reste peut-être encore plus convivial pour les développeurs. Le papillon AVR les a grandement aidés à amener davantage d'utilisateurs à leur base d'utilisateurs déjà importante et heureuse. Le PIC était douloureux à bien des égards, les outils avr étaient là, la programmation était simple et ne vous coûtait pas plus cher que quelques fils et un connecteur de radio shack. Les outils sont là et gratuits, mais pas aussi faciles que gcc principal où vous trouvez les solutions bras et pouce. Bien avant l’arrivée de l’Arduino, l’AVR était la puce de choix pour les projets de loisir.
Rien ne peut rivaliser avec ARM pour le moment. Pour chaque autre processeur que vous touchez en une journée, vous touchez au moins quelques bras. Pour certains, presque tout ce que vous touchez utilise un bras. C'est un choix naturel, car le tueur 8 bits peut obtenir de bien meilleures performances qu'un 8 bits pour la même taille, le même prix, etc. Les outils sont bien meilleurs, le jeu d'instructions est bien plus propre que la plupart de ses concurrents, de sorte que le même code beaucoup plus rapidement, etc. Parce que n'importe qui et son frère peuvent intégrer un ARM et que celui-ci n'est pas enfermé dans une entreprise comme pic, avr, msp430, il existe une grande variété de solutions et autant de façons différentes de gérer les mélanges de microcontrôleurs entre le modèle et le contrôleur et la table de vecteur d'interruption. Malheureusement, la solution la plus populaire est la plus douloureuse. Essayez un sam7 ou quelque chose comme ça ou un stellaris.
Ce n’est pas toujours le processeur qui pose problème, certaines puces ont des problèmes connus, d’autres ont d’autres problèmes connus. certains peuvent ne pas proposer une broche io à collecteur ouvert avec un tirage faible et vous auriez à mettre du matériel en dehors de la puce pour l’interfacer avec quelque chose, où un autre peut avoir ce disponible sur une ou toutes les broches. Je recommande d’échantillonner le terrain, d’essayer les différentes sociétés et solutions afin que, lorsque vous voulez peu de puissance, vous puissiez facilement utiliser un msp430, vous voulez une puissance de traitement dans une petite puce que vous alliez avec bras ou si vous voulez faire un projet ouvert que vous espérez. d'autres construiront dans leur garage, vous le baserez sur un arduino, si vous le pouvez.
En bout de ligne, votre question dépend du fait que cela dépend vraiment de votre application, de la façon dont vous l'écrivez, ainsi que des performances et des ressources qui vous intéressent. De la même manière que gcc ou firefox s'exécutent sur de nombreuses plates-formes et processeurs différents, vous pouvez certainement écrivez votre application C pour une grande variété de microcontrôleurs ... SI... vous avez une couche d'abstraction spécifique au microcontrôleur, qui a un coût. Si les microcontrôleurs ont suffisamment de fonctionnalités similaires et ont les fonctionnalités dont vous avez besoin, vous planifiez leur intégration et Si la plate-forme suivante a suffisamment de mémoire / ressources. Vous êtes plus intéressé par la portabilité que par la performance, etc. On peut dire que vous devez planifier cela à l'avance. ou au moins sur le premier commutateur de A à B, vous reconfigurez le logiciel. Si un troisième commutateur de B à C est présent, il est moins pénible.
la source
Je sais que vous avez dit "autre que le coût", mais c'est vraiment la chose la plus importante pour les amateurs. Vous n'avez pas besoin de plus d'un UART ou de plus d'un SPI sur une plate-forme générique bon marché. Une fois que vous commencez à avoir besoin de vitesses> 20 MHz, vous devriez vraiment regarder une configuration personnalisée (ymmv bien sûr)
la source
Quelques petits points non soulevés dans les autres commentaires:
Un Arduino est destiné aux projets d’E / S à petite échelle, ajoutant une petite quantité d’intelligence à un circuit. Ce sont généralement des dispositifs à un seul thread, en temps réel, dans lesquels un bras serait très inutile. Bien sûr, il existe de nombreuses options pour les cartes ARM, mais le cas d'utilisation est normalement différent: elles démarrent généralement dans un système d'exploitation complet.
En ciblant ce cas d'utilisation à petite échelle, tout le reste devient plus facile - nombre de broches, composants de support, consommation d'énergie, etc.
Cela dit, pour le cas d'utilisation cible de l'Arduino, ce n'est pas comme si vous le claquiez. Un processeur de 16 MHz est un véritable casse-tête pour votre réveil avec chenillard intégré (ou autre).
la source
Arduino est disponible sur d'autres processeurs. Découvrez le ChipKit de Microchip, par exemple. Cela utilise un PIC 32.
la source
Deuxième essai (le titre de l'article d'origine et la question d'il y a 3 ans ont été modifiés depuis la réponse d'origine):
Poulet et œuf, mais surtout au cours des dernières années (l’architecture Cortex-M lancée par ARM en 2007), la popularité des MCU 32 bits a augmenté. bits micros (meilleurs outils sw, outils gratuits, plus d'exemples ...).
Comme Atmel, avec 100 autres, propose également des périphériques Cortex-M et a mis à niveau son ensemble d'outils pour prendre en charge AVR vers ARM, ainsi que la relation de longue date, le chemin de mise à niveau Arduino est donné (?). Mais des alternatives apparaissent et semblent impliquer des tentatives alternatives pour gagner sa part du gâteau "amateur": par exemple, mbed par NXP / ARM, et récemment "CoAction Hero",: carte ARM Cortex-M3 32 bits Open-Source sur KickStarter .
Pensée finale, trois ans après la question initiale: lorsque tous les fournisseurs proposent des cœurs Cortex-M 32 bits, l’Arduino pourrait-il désormais devenir non Atmel?
Réponse originale: Alf-Egil Bogen, l’un des cofondateurs d’Atmel AVR, décrit dans son blog vidéo, ici, l’historique du passage de cœurs ARM 8 bits à 32 bits dans son blog vidéo : http: //blog.energymicro. com / 2013/04/24 / avr2arm / .la source