Dimensionner son microcontrolleur

Une des premières recommandations lors du choix d'un microcontrolleur est de porter une attention particulière à la mémoire dont il dispose. La plus contraignante importante est la mémoire Flash, qui stocke le code du programme mis en place.

Mais comment estimer la mémoire nécessaire pour un programme? Pas de secret, il faut le coder! Il est en effet très important d'essayer de réfléchir à l'avance au nombre de librairies externes à importer, de fonctionnalités à implémenter et à la volumétrie de code que cela pourrait représenter. En se donnant évidemment une grande marge d'évolution.

Pour cela, des IDEs comme Atmel Studio peuvent vous indiquer, après compilation, la taille de votre programme (via notament l'outil GCC avr-size). Prenons un exemple :

Un projet ayant choisi un Arduino UNO (ATmega328 - 32Ko Flash) et nécessitant :

  • Une librairie pour carte SD
  • Une librairie pour modules radio XBee
  • Quelques centaines de lignes de code

Voici le résultat de la compilation :

Comme vous pouvez le voir, nous sommes déjà bien au delà de la taille limite...

Quelles sont les pistes d'amélioration? Parmi les plus courantes :

  • réduire au maximum tous les types de données : gain rarement au dessus de 2%
  • jouer sur les optimisations du compilateur (option -O) : gain espéré autour de 2 à 3% (avec l'effet pervers de souvent nuire au debug)

Certains vous diront qu'il faut se passer au maximum des librairies externes pour n'implémenter que le code nécessaire... Je laisse cela à ceux qui aiment réinventer la roue! :)

Donc nous sommes encore loin du compte... Ainsi, sauf si je ne m'abuse, la seule solution est bien de changer de matériel! La famille Atmel propose des microcontrolleurs allant jusqu'à 256 Ko de mémoire Flash, ce qui laisse déjà plus d'amplitude.

Il existe donc d'autres plateformes basées sur ce matériel :

Petite précision : pour continuer à s'amuser sans se ruiner, n'oubliez pas qu'il existe d'autres marques que Arduino, souvent moins onéreuses mais tout à fait compatibles, tant du point de vue matériel que logiciel, puisqu'utilisant les mêmes composants.

Et pour les plus courageux, vous pouvez même essayer de fabriquer vous-mêmes votre plateforme :

Tout cela pour vous dire que si l'Arduino Uno est excellent pour démarrer, si vous avez l'intention d'aller plus loin que faire clignoter quelques LED, il ne faudra pas hésiter à se diriger vers du matériel un peu plus généreux!


Fichier(s) joint(s) :

0 commentaires: