Il semble qu'Arduino Due (32 bits, 84 MHz, SAM3X8E basé sur ARM-Cortex-M3) soit sorti aujourd'hui.
De plus, il existe clairement une myriade de processeurs dans cette catégorie (32 bits / 48-96 Mhz / ARM) ainsi que des cartes de prototypage correspondantes:
- NXP LPC1768 / mBed
- STM32 / Découverte
- PIC32 / ChipKit
- Hélice PIC32 / Parallax
- Launchpad LM4F120 / TI
- etc.
J'essaie de comprendre l'attrait de ces microprocesseurs "intermédiaires", qui me semblent se situer entre les AVR / MSP430 / etc bas de gamme. (avantages: peu coûteux, faible puissance, faible encombrement) et l'ARM7 haut de gamme / etc (pro: capable de beaucoup plus d'instructions par seconde).
Dans quelles situations ou de quelle manière les microprocesseurs 32 bits / 48-96 MHz / ARM sont-ils un choix approprié? Plus précisément, je me demande dans quelles applications ou dans quels paramètres ils feraient un choix supérieur lors de la conception, par rapport aux microcontrôleurs 8 bits bas de gamme ou aux processeurs ARM7 très haut de gamme.
Réponses:
C’est l’un de ces sujets qui peuvent faire l’objet de débats. Il y a tellement de points de vue différents et différentes choses sont importantes pour différentes personnes. Je vais essayer de donner une réponse complète, mais je comprends qu'il y aura toujours quelqu'un qui ne sera pas d'accord. Comprenez simplement que ceux qui ne sont pas d'accord avec moi ont tort. (Je rigole.)
Résumé rapide:
Cette réponse va être longue, alors permettez-moi de résumer cela à l'avance. Pour la grande majorité des gens, la dernière génération de puces ARM Cortex-M0 / M3 / M4 offre la meilleure solution, les meilleures fonctionnalités pour le coût. Cela est même vrai lorsque l'on compare ces MCU 32 bits à leurs ancêtres 8 et 16 bits comme les PIC et MSP430. Les M0 peuvent être achetés pour moins de 1 $ US / pièce et les M4 pour moins de 2 $ US / pièce, donc à l'exception des applications très sensibles au prix, les solutions ARM sont très agréables. Les M0 sont de très faible puissance et devraient être assez bons pour la plupart des gens. Pour ceux qui sont très sensibles à la puissance, les MSP430 pourraient toujours être un meilleur choix, mais les M0 méritent d'être envisagés même pour ces applications.
Si vous êtes intéressé par une analyse plus approfondie, poursuivez votre lecture, sinon vous pouvez arrêter de lire maintenant.
Je vais maintenant regarder chaque zone et comparer les différents MCU:
Rapidité d'exécution
Bien sûr, les MCU 32 bits vont être plus rapides. Ils ont tendance à avoir une vitesse d'horloge plus rapide, mais font également plus de travail pour chacune de ces horloges. Les microcontrôleurs comme l'ARM Cortex-M4 incluent des instructions de traitement DSP et peuvent même prendre en charge la virgule flottante dans le matériel. Les processeurs 8 et 16 bits peuvent fonctionner sur des nombres 32 bits, mais cela n'est pas efficace. Cela consommera rapidement les registres du processeur, les cycles d'horloge du processeur et la mémoire flash pour le stockage du programme.
Facilité de développement
À mon avis, c'est la raison la plus valable pour utiliser des MCU 32 bits modernes - mais aussi la plus sous-estimée. Permettez-moi d'abord de comparer cela aux PIC 8 bits. C'est la pire des comparaisons, mais aussi la meilleure pour illustrer mes propos.
Les PIC plus petits nécessitent essentiellement que la programmation soit effectuée en langage assembleur. Certes, il existe des compilateurs C disponibles même pour les PIC 8 bits, mais ces compilateurs sont gratuits ou bons. Vous ne pouvez pas obtenir un compilateur à la fois bon et gratuit. La version gratuite du compilateur est paralysée en ce que son optimisation n'est pas aussi bonne que la version "Pro". La version Pro coûte environ 1 000 $ US et ne prend en charge qu'une seule famille de puces PIC (puces 8, 16 ou 32 bits). Si vous souhaitez utiliser plusieurs familles, vous devez acheter un autre exemplaire pour 1 000 $ US supplémentaires. La version "Standard" du compilateur fait un niveau moyen d'optimisation et coûte environ 500 $ US pour chaque famille de puces. Les PIC 8 bits sont lents par rapport aux normes modernes et nécessitent une bonne optimisation.
En comparaison, il existe de nombreux bons compilateurs C pour les MCU ARM qui sont gratuits. Lorsqu'il existe des limitations, ces limites concernent généralement la taille maximale de la mémoire flash prise en charge. Sur les outils Freescale Codewarrior, cette limite est de 128 Ko. C'est beaucoup pour la plupart des gens sur ce forum.
L'avantage d'utiliser un compilateur C est que vous n'avez pas à vous soucier (autant) des détails de bas niveau de la carte mémoire du CPU. La pagination sur le PIC est particulièrement douloureuse et il est préférable d'éviter autant que possible. Un autre avantage est que vous n'avez pas à vous soucier du traitement des numéros 16 et 32 bits sur un MCU 8 bits (ou des numéros 32 bits sur un MCU 16 bits). Bien qu'il ne soit pas super difficile de le faire en langage d'assemblage, c'est une douleur à l'arrière et est sujet aux erreurs.
Il existe d'autres compilateurs non ARM C qui fonctionnent bien. Le compilateur MSP430 semble faire un travail raisonnable. Les outils Cypress PSoC (en particulier PSoC1) sont bogués.
Modèle de mémoire plate
Un MCU qui a paginé RAM / registres / Flash est tout simplement stupide. Oui, je parle des PIC 8 bits. Muet, muet, muet. Cela m'a tellement détourné des PIC que je n'ai même pas pris la peine de regarder leurs nouveautés. (Avertissement: cela signifie que les nouveaux PIC pourraient être améliorés et je ne le sais tout simplement pas.)
Avec une MCU 8 bits, il est difficile (mais pas impossible) d'accéder à des structures de données supérieures à 256 octets. Avec un MCU 16 bits qui passe à 64 kilo-octets ou k mots. Avec des microcontrôleurs 32 bits pouvant atteindre 4 gigaoctets.
Un bon compilateur C peut en cacher beaucoup au programmeur (alias You), mais même dans ce cas, cela affecte la taille du programme et la vitesse d'exécution.
Il existe de nombreuses applications MCU pour lesquelles cela ne sera pas un problème, mais bien sûr, il y en a beaucoup d'autres qui auront des problèmes avec cela. Il s'agit principalement de la quantité de données dont vous avez besoin (tableaux et structures) en RAM ou Flash. Bien sûr, à mesure que la vitesse du processeur augmente, les chances d'utiliser des structures de données plus grandes augmentent également!
Taille du paquet
Certains des petits PIC et autres MCU 8 bits sont disponibles dans de très petits packages. 6 et 8 broches! Actuellement, le plus petit ARM Cortex-M0 que je connaisse se trouve dans un QFN-28. Bien qu'un QFN-28 soit suffisamment petit pour la plupart, il n'est pas assez petit pour tous.
Coût
Le PIC le moins cher est environ un tiers du prix de l'ARM Cortex-M0 le moins cher. Mais c'est vraiment 0,32 $ US contre 0,85 $ US. Oui, cette différence de prix est importante pour certains. Mais je suppose que la plupart des gens sur ce site Web ne se soucient pas de cette petite différence de coût.
De même, lorsque l'on compare des microcontrôleurs plus performants avec l'ARM Cortex-M0 / M3 / M4, l'ARM Cortex sort généralement "à peu près même" ou en haut. En tenant compte des autres choses (facilité de développement, coûts du compilateur, etc.), les ARM sont très attractifs.
Deuxième résumé
Je suppose que la vraie question est: pourquoi n'utilisez-vous PAS un ARM Cortex-M0 / M3 / M4? Quand le coût absolu est super important. Lorsqu'une consommation d'énergie extrêmement faible est critique. Lorsque le plus petit format d'emballage est requis. Quand la vitesse n'est pas importante. Mais pour la grande majorité des applications, aucune d'entre elles ne s'applique et l'ARM est actuellement la meilleure solution.
Étant donné le faible coût, à moins qu'il n'y ait une bonne raison de ne pas utiliser un ARM Cortex, il est logique d'en utiliser un. Il permettra un temps de développement plus rapide et plus facile avec moins de maux de tête et des marges de conception plus importantes que la plupart des autres microcontrôleurs.
Il existe d'autres MCU non ARM Cortex 32 bits, mais je ne vois aucun avantage pour eux non plus. Il existe de nombreux avantages à utiliser une architecture CPU standard, notamment de meilleurs outils de développement et une innovation plus rapide de la technologie.
Bien sûr, les choses peuvent changer et changent. Ce que je dis est valable aujourd'hui, mais pourrait ne pas l'être dans un an ou même dans un mois. Faites vos propres devoirs.
la source
David Kessner a raison. Je voudrais ajouter ce qui suit.
Je suis d'accord que de nos jours, il n'y a pas de raison de ne pas utiliser de microcontrôleurs 32 bits. Je ne les utiliserais que [MCU 8 bits] pour 2 raisons: j'aime la facilité du package PDIP (aucune soudure requise); Souvent, je n'ai pas besoin de plus de puissance / complexité que ce qu'un MCU 8 bits peut offrir.
Le disjoncteur est vraiment les outils disponibles.
la source
Nous utilisons un Freescale MCF52259 relativement démodé, un MCU compatible 32 bits ~ 80 MHz.
Les raisons / processus de réflexion pour le choix étaient:
De nos jours, il est plus rentable (et plus opportun) de sur-spécifier / étendre les capacités du matériel (stockage, vitesse, E / S, etc.) que de passer un temps de développement précieux à optimiser le code pour se faufiler dans un MCU légèrement moins cher / plus petit, sauf si l'espace ou le pouvoir sont de gros problèmes.
Dans notre cas, l'appareil était le double de la spécification du M.Core pour la moitié du prix, aller à un MCU moins cher ne ferait que gagner quelques sous par carte, mais coûterait beaucoup de temps de développement et limiterait le potentiel de développement futur sans changer à nouveau les MCU.
Si nous construisions un million de cartes, cela vaudrait la peine de faire l'exercice de calcul des coûts pour réduire les choses, mais en l'état, cela ne vaut pas le temps de développement.
la source