Illusion14 300

Cette question est certainement dans l’esprit de tout les électroniciens amateurs:

« Dois-je utiliser un microcontrôleur 32 bits ou 8 bits? »

En tant que développeur Arduino j’envisage de faire évoluer certains circuits vers STM32. J’ai donc fait quelques tests préliminaires et fus très surpris de constater que le code généré consomme beaucoup plus de flash et RAM. Il m’a donc fallu utiliser des microcontrôleurs avec encore plus de capacités de stockage. L’autre problème est que ces composants fonctionnent en 3.3V.

Je ferai une publication sur le choix du bon microcontrôleur pour chaque projet. Dans l’immédiat, focalisons-nous sur les capacités de stockage nécessaires pour faire tourner un programme créé dans l’IDE Arduino.

Le tableau suivant présente les capacités de stockage et les ressources nécessaires pour faire tourner blink. Sur fond vert on trouve les consommations négligeables, inférieures ou égales à 1% et en orange les consommations supérieures à 1%. Vous allez probablement être surpris:

 Arduino Uno / Nano Arduino core
644 Narrow
MightyCore
1284 Narrow
MightyCore
Arduino Mega
Arduino core
Arduino Zero
Arduino core
Cortex M3
Blue pill
STM32duino core
Cortex M4
Arduino core_STM32
ESP32
Arduino
-esp32 core
MCUAtmega328Atmega644Atmega1284Atmega2560SAMD21G18STM32F103C8STM32F401RCESP32WROOM
Flash (Kb)3264128256256642561280
RAM (Kb)24168322064320
EEPROM (Kb)1244
Bootloader size (Kb)0.5118162020In ROM.
"Blink" used Flash930 (3%)1122 (1%)1214 (0%)1460 (0%)10624 (4%)15828 (24%)23516 (4%)194472 (14%)
"Blink" used RAM9 (0%)9 (0%)9 (0%)9 (0%)2732 (8%)3088 (15%)3244 (1%)13332 (4%)

Nous voyons clairement que

  • Le code généré pour tous les microcontrôleurs 32 bits est beaucoup plus lourd.
  • Ces composants 32 bits n’ont pas d’EEPROM. On peut utiliser une émulation qui consomme encore de la mémoire flash.
  • Plus le microcontrôleur est complexe, plus le bootloader est gros, ce qui réduit aussi les ressources disponibles.

La conclusion de ce test grossier est que si vous n’avez pas besoin des capacités particulières des microcontrôleurs 32 bits ( plus de ports de communication, plus de broches, SPI éventuellement plus rapide etc…), mais que votre programme nécessite beaucoup de flash et RAM, il est très valable de considérer les microcontrôleurs de dernière génération en 8 bits.  Ce sont des composants à l’architecture éprouvée, qui fonctionnent très bien et offrent une énorme capacité de stockage,  contrairement à ce que l’on croit a priori.

 

 

 

 

 

Répondre

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *