Différences entre versions de « Arduino Memoire Optimiser PrgMem »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
Ligne 4 : Ligne 4 :
 
{{bloc-etroit|text=Cette partie s'attarde sur l'optimisation du programme.
 
{{bloc-etroit|text=Cette partie s'attarde sur l'optimisation du programme.
  
When you compile your sketch, the IDE will tell you how big the program image is. If you have reached or exceeded the space available, some of these optimizations may help get you back under the limit.
+
Lorsque vous compilez votre sketch/croquis, l'IDE d'Arduino vous informe sur la taille de votre programme (la taille de l'image). Si vous atteignez ou dépassez l'espace disponible alors quelque-unes de ses optimisations peuvent vous aider à redescendre sous la limite.
  
This is not meant to be a definitive treatise on how to optimize your code - there are libraries full of books on the subject. What is presented here are just some simple tips to help harvest the low-hanging fruit. }}
+
Cet article n'est pas un "traité" définitif des méthodes d'optimisation - il existe une très vaste littérature sur le sujets.  
 +
 
 +
Ce qui est présenté, ce sont juste quelques astuces simples qui aide pour obtenir des premiers résultats facilement. }}
  
 
{{ADFImage|Arduino-Memoire-01.jpg|640px}}
 
{{ADFImage|Arduino-Memoire-01.jpg|640px}}
  
== Enlever le "code mort" ==
+
== Enlever le code inutile ==
Le "code mort" (Dead Code) sont des portions de codes compilées, téléversée/téléchargé en mémoire RAM '''mais jamais utilisé!'''.
+
Le "code mort" (appelé "Dead Code" en anglais) est une portion de codes compilée, téléversée/téléchargée en mémoire FLASH '''mais jamais utilisé''' par le programme!
  
If your project is a mash-up of code from several sources, chances are there are parts that are not getting used and can be eliminated to save space.
+
Si votre projet est un condensé de plusieurs sources différentes alors il y a des chances pour qu'il y ait des tronçons de code qui ne sont pas utilisés (voir ci-dessous). Les éliminer permet de récupérer de l'espace de stockage.
  
* '''Unused Libraries''' - Are all the #include libraries actually used?
+
* '''Libraires inutilisées''' - Est-ce que tous les #include de librairies sont vraiment nécessaire? Sont-elles vraiment utilisées?
* '''Unused Functions''' - Are all the functions acutally being called?
+
* '''Fonctions inutilisées''' - Toutes les fonctions sont-elles vraiment appelées?
* '''Unused Variables''' - Are all the variables actually being used?
+
* '''Variables inutilisées''' - Toutes les variables sont-elles vraiment utilisées?
* '''Unreachable Code''' - Are there conditional expressions which will never be true?
+
* '''Codes non utilisés''' - (dit ''Unreachable Code'' en anglais) Y a t'il des test dont la condition ne sont jamais vraie? Auquel cas le code dans le "if ... " est inutile.
  
 
=== Truc & astuce ===
 
=== Truc & astuce ===
If you are not sure about an #include, a function or a variable. Comment it out. If the program still compiles, that code is not being used.  
+
Si vous n'êtes pas certain de l'utilité d'un #include, d'une fonction ou d'une variable alors mettez le en commentaire.
 +
 
 +
Si votre programme continue à compiler, c'est que le code n'était pas nécessaire.  
  
 
== Consolider les codes répétitifs ==
 
== Consolider les codes répétitifs ==
  
If you have the same sequence of code statements in two or more places, consider making a function out of them.
+
Si vous avez une séquence d'instruction qui se répète plusieurs fois dans votre programme (même 2 fois) alors l'usage d'une fonction est tout à fait indiqué pour éviter la duplication du code.
  
 
== Eliminer le Bootloader ==
 
== Eliminer le Bootloader ==
If space is really-really tight, you might consider eliminating the bootloader. This can save as much as 2K or 4K of Flash - depending on which bootloader you are currently using.
+
Si l'espace encore nécessaire est vraiment petit, vous pouvez considérer l'élimination du BootLoader (le petit programme activé sur Arduino qui permet de télécharger les sketch/croquis Arduino depuis Arduino IDE).
  
The downside of this is that you will need to load your code using an ISP programmer instead of via a standard USB cable.  
+
En éliminant le bootloader, vous pouvez récupérer 2 ou 4 Kb de mémoire Flash (la taille dépend du bootloader utilisé sur la carte).
  
 +
L'inconvénient de cette méthode, c'est que vous devrez utiliser un programmeur ISP à la place de votre câble USB.
  
 
{{Arduino-Memoire-TRAILER}}
 
{{Arduino-Memoire-TRAILER}}

Version actuelle datée du 5 septembre 2013 à 10:13


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Introduction

Cette partie s'attarde sur l'optimisation du programme.

Lorsque vous compilez votre sketch/croquis, l'IDE d'Arduino vous informe sur la taille de votre programme (la taille de l'image). Si vous atteignez ou dépassez l'espace disponible alors quelque-unes de ses optimisations peuvent vous aider à redescendre sous la limite.

Cet article n'est pas un "traité" définitif des méthodes d'optimisation - il existe une très vaste littérature sur le sujets.

Ce qui est présenté, ce sont juste quelques astuces simples qui aide pour obtenir des premiers résultats facilement.

Arduino-Memoire-01.jpg
Crédit: AdaFruit Industries www.adafruit.com

Enlever le code inutile

Le "code mort" (appelé "Dead Code" en anglais) est une portion de codes compilée, téléversée/téléchargée en mémoire FLASH mais jamais utilisé par le programme!

Si votre projet est un condensé de plusieurs sources différentes alors il y a des chances pour qu'il y ait des tronçons de code qui ne sont pas utilisés (voir ci-dessous). Les éliminer permet de récupérer de l'espace de stockage.

  • Libraires inutilisées - Est-ce que tous les #include de librairies sont vraiment nécessaire? Sont-elles vraiment utilisées?
  • Fonctions inutilisées - Toutes les fonctions sont-elles vraiment appelées?
  • Variables inutilisées - Toutes les variables sont-elles vraiment utilisées?
  • Codes non utilisés - (dit Unreachable Code en anglais) Y a t'il des test dont la condition ne sont jamais vraie? Auquel cas le code dans le "if ... " est inutile.

Truc & astuce

Si vous n'êtes pas certain de l'utilité d'un #include, d'une fonction ou d'une variable alors mettez le en commentaire.

Si votre programme continue à compiler, c'est que le code n'était pas nécessaire.

Consolider les codes répétitifs

Si vous avez une séquence d'instruction qui se répète plusieurs fois dans votre programme (même 2 fois) alors l'usage d'une fonction est tout à fait indiqué pour éviter la duplication du code.

Eliminer le Bootloader

Si l'espace encore nécessaire est vraiment petit, vous pouvez considérer l'élimination du BootLoader (le petit programme activé sur Arduino qui permet de télécharger les sketch/croquis Arduino depuis Arduino IDE).

En éliminant le bootloader, vous pouvez récupérer 2 ou 4 Kb de mémoire Flash (la taille dépend du bootloader utilisé sur la carte).

L'inconvénient de cette méthode, c'est que vous devrez utiliser un programmeur ISP à la place de votre câble USB.


Source: Memories of an Arduino. Crédit AdaFruit Industries.

Créé par Bill Earl pour AdaFruit Industries.

Traduit par Meurisse D. pour MCHobby.be

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.