Arduino Memoire Les Memoires
Anglais ou Français, faut-il choisir?
Vous trouverez dans cet article des termes en français pour lesquels nous avons volontairement laissé l'équivalent anglais.
Cela peut paraître superflu. Cependant, si vous naviguez sur la toile à recherche d'information, vous vous rendrez vite compte que les personnes expérimentées utilisent souvent la terminologie anglaise.
L'anglais étant la langue maitresse des outils de développement, il est préférable de ne pas l'ignorer.
Les types de mémoire
Il y a 3 types de mémoires dans un Arduino:
- Mémoire Flash (ou mémoire programme)
- SRAM
- EEPROM
Mémoire Flash
La mémoire Flash est utilisée pour stocker l'image du programme et toutes les données initialisée. Vous pouvez exécuter le code du programme depuis la mémoire Flash, mais vous ne pouvez pas modifier les informations/données contenues dans la mémoire Flash depuis votre code en cours d'éxécution. Pour modifier une donnée, elle doit d'abord être copiée dans la SRAM.
La mémoire Flash est la même technologie que cette utilisée dans les lecteurs Flash (comme les clés USB) et les cartes SD. C'est de la mémoire non-volatile, votre programme reste dans cette mémoire lorsque le système est mis hors tension.
La mémoire Flash à une durée de vie limitée à environ 100,000 cycles d'écriture. Si vous téléversez/téléchargez 10 programmes par jours, chaque jour alors vous aurez atteint les 100,000 cycles au bout de 27 ans... et votre mémoire Flash sera usée.
La SRAM
La mémoire SRAM ("Static Random Access Memory": mémoire statique à accès aléatoire) peut être lue et modifiée par le programme en cours d'exécution.
La mémoire SRAM est manipulée par le programme en cours d’exécution pour différents usages:
- Données Statiques / Static Data - C'est un bloc d'espace mémoire réservé en SRam pour toutes les variables globales et statiques de votre programme. Pour toutes les variables disposant d'une valeur initiale, le système runtime copie la valeur initiale depuis la mémoire Flash.
- Le Tas / Heap - La Heap est utilisée pour allouer des données dynamiquement. La heap grandit (pousse) au dessus de la mémoire statique au fur et à mesure des allocations successives.
- La Pile / Stack - La stack est utilisé pour les variables local ou pour maintenir un enregistrement des interruptions et appels de fonctions. La stack grandit (pousse) vers le bas depuis le haut de la mémoire. La Stack descend donc vers les Heap. Chaque interruption, appel de fonction et/ou allocation de variable local provoque un empilement d'information sur la Stack (raison pour laquelle est porte le nom de pile). Lors du retour de fonction (ou d'interruption) tout l'espace utilisé par cette fonction (ou interruption) sur la pile est libéré.
Crédit: AdaFruit Industries www.adafruit.com
Traduction par MCHobby
La plupart des problèmes mémoires interviennent lorsque la Stack et la heap (Pile et Tas) rentrent en collision. Lorsque cela arrive, l'un de ces espace mémoire est corrompu provoquant ainsi des résultats imprévisibles. Dans certains cas, cela provoque parfois des crashs/plantage immédiat, dans d'autres cas, l'effet de la corruption de mémoire ne peut être détecté que bien plus tard.
L'EEPROM
EEPROM est une autre forme de mémoire non-volatile qui peut être lue et modifiée par le programme en cours d'exécution. Elle peut seule être lue octet-par-octet (byte par byte) ce qui la rend plus délicate à utiliser. Elle est également plus lente que la SRAM et dispose, elle aussi, d'un nombre maximum de cycle d'écriture (environ 100,000 cycles). A part cela, vous pouvez la lire autant de fois qu'il vous plaira.
Même si elle ne peux pas remplacer la précieuse mémoire SRAM, il y a des cas où l'EEPROM est particulièrement utile!
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.