Microcontrôleur

De Wiki INTech
Révision datée du 1 février 2017 à 12:49 par PF (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Microprocesseur ? Microcontrôleur ?

Les microcontrôleurs sont de petites unités de calcul utilisées dans les systèmes embarqués. Il est probable que vous n’en ayez pas entendu parler si vous débutez la robotique. Il est temps d’y remédier !

À présent, il convient de différencier quelques mots de vocabulaire : quelle différence entre processeur, microprocesseur et microcontrôleur ?

Un microprocesseur était un petit processeur, intégré dans un seul boîtier, à une époque où les ordinateurs étaient encore gigantesques. Le microprocesseur s’est répandu dans les années 1970 ; maintenant, ce mot est pour ainsi dire synonyme de « processeur ». Quelques exemples de fondeurs de processeurs : Intel, AMD, PowerPC…

Et quelle différence entre un processeur et un microcontrôleur ? Cette fois, il y a une réelle distinction ; il faut savoir qu’un processeur, seul, ne peut pas fonctionner. C’est juste une unité de calcul, mais il n’a pas par exemple de mémoire RAM intégrée, ni de mémoire pour le programme, d’horloge, de périphériques d’entrées-sorties…

Un microcontrôleur contient un processeur, et également tout ce dont il a besoin pour fonctionner. L’avantage, c’est qu’avec une seule puce on a tout ce qu’il faut : pas besoin de s’occuper de brancher d’autres composants, ce qui serait une perte de place. Par contre, la RAM d’un microcontrôleur est fixe : si on veut avoir plus de mémoire, on achète généralement un microcontrôleur qui contient le même processeur, mais une mémoire plus importante. La forme des processeurs est normalisée : ils sont carrés et possèdent plein de picots sur une face. Pour les microcontrôleurs, c’est bien plus hétéroclite…

Enfin, un microcontrôleur dispose généralement d’un processeur peu performant, car il est exécute des tâches simples. Par exemple, une Arduino Uno (un modèle classique) possède un microcontrôleur ATmega328 fréquencé à 16MHz, alors qu’un processeur d’ordinateur tourne environ à 3GHz. En effet, les besoins de calculs d’un système embarqué sont généralement faibles.

L’utilité : les systèmes embarqués

Afin de comprendre pourquoi on a inventé les microcontrôleurs et pourquoi on en entend peu parler, je pense qu’il est important de définir en quelques mots ce qu’est qu’un système embarqué.

Un système embarqué est un système électronique autonome (il s’allume et s’éteint seul, pas de mise à jour) qui effectue une tâche très spécialisée. Par exemple, dans une machine à laver, il y a un système embarqué qui s’occupe de démarrer le bon programme, de s’assurer que l’eau coule bien, de vérifier la rotation de la machine, de l’arrêter au bon moment, etc. Les systèmes embarqués se multiplient. En voici une petite liste non exhaustive : électronique de voiture et d’avion, électroménager, drone, téléphone portable, mais aussi satellites et robots…

Les systèmes embarqués mériteraient qu’on leur consacre un article entier à eux seuls. Ce qu’il faut néanmoins retenir, c’est qu’il ne faut pas voir un affrontement entre processeur et microcontrôleur. Ils ont chacun un domaine bien précis : les microcontrôleurs ne sont certes pas puissants, mais ils sont plus petits, plus économes en énergie que leurs cousins, et ces points-là sont très importants dans les systèmes embarqués.

Une absence d’OS

Une conséquence de leur faible puissance de calcul, de leur faible mémoire, etc., est que les microcontrôleurs n’ont généralement pas de système d’exploitation (OS) ! Un microcontrôleur ne tournera ni sur Linux, ni sur Windows : il exécutera juste du code.

L’intérêt d’un OS réside surtout en l’exécution en parallèle de plusieurs processus et en l’abstraction du matériel. Que vous ayez un disque dur ou un SSD, un modèle de carte graphique ou un autre, c’est l’OS qui fait en sorte que pour les programmes, tout cela paraisse identique.

En fait, un OS ne pourrait presque rien apporter à un microcontrôleur : en effet, un microcontrôleur est très spécialisé, et n’a généralement pas besoin d’exécuter deux programmes en parallèle (sinon on prendrait probablement deux microcontrôleurs). D’autre part, étant donné que c’est vous qui concevez votre système embarqué, vous allez devoir adapter votre code au matériel.

Autant un jeu vidéo a besoin d’une abstraction matérielle, car a priori il peut être joué sur des ordinateurs au hardware différent, autant votre code ne tournera que sur le matériel de votre robot, et donc n’aura pas besoin d’être portable.