Bon moment pour bouger; les 8 bits meurent rapidement; lorsque vous pouvez acheter une carte à 5 $ avec (par exemple) un STM32F103 qui est un microcontrôleur ARM 32 bits plutôt capable (avec USB même!), il ne fait aucun doute que les temps ont changé.
Vous avez déjà eu d'excellentes réponses, mais je dirais principalement "oubliez l'assemblage" et presque "oubliez de vous soucier du fonctionnement du processeur à bas niveau" - un jour, il y aura un cas d'angle où vous devrez creuser (une optimisation spécifique ou pour le débogage) mais les cœurs ARM exécutent exceptionnellement bien le code C (par conception) et vous avez rarement besoin de vous aventurer profondément dans les tripes.
Cela signifie que vous passerez un certain temps à vous cogner la tête contre les problèmes avec les compilateurs (et en particulier les éditeurs de liens et les makefiles) qui vous font des erreurs obscures, mais ils sont tous surmontables.
Les entrailles du fonctionnement des ARM (c'est-à-dire les livres de processeurs ARM) sont denses et peu intéressantes jusqu'au jour où vous devez réellement les optimiser (et vous serez étonné de voir à quel point c'est rare lorsque vous avez des registres 32 bits et votre PLL '' d L'horloge du processeur est de l'ordre de 100 MHz).
Le jeu d'instructions ARM "old skool" est beaucoup plus facile à lire un désassemblage que le "Thumb2" beaucoup plus récent - qui est ce que vous trouverez sur la plupart des ARM modernes de niveau microcontrôleur (Cortex) - mais encore une fois les entrailles des instructions en langage assembleur se fondent généralement en arrière-plan; si vous avez le bon ensemble d'outils (en particulier un débogueur de niveau source décent avec des points d'arrêt / une seule étape, etc.), vous ne vous souciez pas trop du fait qu'il s'agisse d'ARM.
Une fois que vous êtes dans le monde des registres 32 bits et des largeurs de bus de données 32 bits et tout ce que vous avez toujours voulu disponible sur puce, vous ne voudrez plus jamais revenir à un processeur 8 bits; Fondamentalement, il n'y a souvent aucune pénalité pour "prendre les choses en douceur" et écrire du code pour être plus lisible qu'efficace.
Cependant ... périphériques ... oui et c'est le hic.
Vous avez certainement une tonne de choses à jouer avec les MCU modernes, et beaucoup d'entre elles sont assez chouettes; vous trouverez souvent un monde de sophistication bien au-delà des périphériques sur puce AVR, PIC et 8051.
Une minuterie programmable? Non, j'en ai huit! DMA? Que diriez-vous de 12 canaux avec priorité programmable et mode rafale et mode chaîné et auto-rechargement et .. et .. et ...
I2C? I2S? Des dizaines d'options de multiplexage de broches? Quinze façons différentes de reprogrammer le flash sur puce? Sûr!
On a souvent l'impression que vous êtes passé de la famine à la fête avec les périphériques et il est courant qu'il y ait des morceaux entiers d'une puce que vous admirerez mais que vous utiliserez à peine (d'où le déclenchement d'horloge).
La quantité de matériel sur puce (et les variations de celle-ci dans la gamme de puces d'un seul fournisseur) est aujourd'hui assez ahurissante. Un fournisseur de puces aura bien sûr tendance à réutiliser les blocs IP, donc une fois que vous vous serez familiarisé avec une certaine marque, cela deviendra plus facile, mais "merde fait de plus en plus de nos jours".
Si quoi que ce soit, les périphériques et leurs interactions (et DMA et interruptions et allocation de bus et et et ...) sont SI complexes (et, à l'occasion, pas exactement comme décrit dans les fiches techniques) que les ingénieurs ont souvent une gamme préférée de MCU ARM et ont tendance à vouloir s'y tenir simplement parce qu'ils connaissent les périphériques et les outils de développement.
De bonnes bibliothèques et des outils de développement (c'est-à-dire un cycle de compilation + débogage rapide avec un débogueur approprié) et un grand nombre d'exemples de projets de code de travail sont absolument cruciaux pour votre choix d'ARM MCU de nos jours. Il semble que la plupart des fournisseurs disposent désormais de cartes d'évaluation extrêmement bon marché (
Comme je suis sûr que vous l'avez remarqué, une fois que vous avez dépassé le niveau du microcontrôleur avec les ARM et dans le niveau SOC (par exemple, les SOC de style Raspberry Pi / etc.), les règles changent complètement et tout dépend de quel type de Linux vous allez pour courir, parce que - à quelques exceptions près - vous seriez en train d'aboyer fou pour essayer autre chose.
Fondamentalement; quel que soit le processeur qui a pu être présélectionné pour vous sur ce concert, achetez-vous une poignée de cartes d'évaluation basées sur Cortex super bon marché auprès de quelques fournisseurs différents (TI, STM, Freescale et plus viennent à l'esprit) et avoir un hack autour avec l'exemple de code fourni.
Dernier conseil; une fois que vous avez trouvé la page ou les trois dans la fiche technique qui décrit les options de multiplexage des broches pour la puce de numéro de pièce exacte avec laquelle vous travaillez, vous pouvez l'imprimer et la coller sur le mur. Découvrir tard dans un projet qu'une certaine combinaison de périphériques est impossible à cause du multiplexage des broches n'est pas amusant, et parfois cette information est tellement enfouie que vous jureriez qu'ils essaient de la cacher :-)