Accueil » Ressources » Blog » La mémoire flash

La mémoire flash

La mémoire FLASH est actuellement la technologie la plus populaire pour sauvegarder des données, grâce à son faible coût et sa petite taille. La plupart des microcontrôleurs utilisent de la FLASH comme mémoire du programme principal. Au besoin, les composants FLASH externes permettent d’ajouter facilement de la mémoire peu couteuse et les très populaires cartes SD implémentent également cette technologie; les ingénieurs en électronique ont donc l’habitude de mettre en oeuvre de type de mémoire.  Il est cependant important de comprendre toutes les subtilités des FLASH.

La FLASH est une mémoire non volatile. Elle n’est pas aussi rapide que de la RAM mais elle conserve son contenu lorsque l’alimentation disparait. Beaucoup de projets enfouis nécessitent de sauvegarder certaines valeurs dans une mémoire non volatile, tels que les réglages utilisateurs ou le journal de données. Il n’y a pas si longtemps, de nombreux microcontrôleurs disposaient d’une zone de mémoire EEPROM pour cela. Une EEPROM est simple à comprendre et il est facile de travailler avec – elle possède une certaine taille et chaque octet est accessible individuellement en lecture ou en écriture (comme une RAM, en plus lent). Une EEPROM accepte un plus grand nombre de cycles effacement-écriture qu’une FLASH, ce qui constituait la principale raison de les préférer pour une application. Avec l’évolution de la technologie qui a permis aux FLASH de disposer d’un plus grand nombre de cycles d’effacement-écriture, les EEPROM ont progressivement disparues.

A présent, intéressons-nous aux particularités des mémoires FLASH.

Effacement de secteur

Lorsqu’une mémoire FLASH est effacée, tous les bits internes sont mis à 1 (pas à 0). Si vous voyez beaucoup de 0xFF (le nombre hexadécimal équivalent au binaire 11111111) alors vous travaillez avec une FLASH qui vient d’être effacée. Alors qu’il est possible de commuter un bit ou un octet individuels de 1 à 0 dans une FLASH, la commutation de 0 à 1 ne peut se faire que globalement (bulk method) ! Les mémoires FLASH sont organisées en secteurs (eux-mêmes peuvent être regroupés en blocs) dont la taille est habituellement de l’ordre de quelques kilooctets; un secteur est la plus petite zone mémoire qu’il est possible d’effacer à un instant donné.

Comme exemple, supposons que 100 réglages sont sauvegardés en FLASH et que vous ne souhaitez mettre à jour que le réglage #3; pour ce faire vous devez effacer la totalité du secteur qui contient la donnée #3 puis la réécrire – en faisant cela vous effacerez tous les autres réglages avec la nécessité de les réécrire. Il existe plusieurs façons de contourner ce problème :

  • Une méthode est de lire toutes les valeurs dans une RAM, d’effacer le secteur puis de réécrire les données après mise à jour des valeurs. Si le nombre des données est important et en fonction de la quantité de la RAM disponible, cette méthode peut ne pas convenir.
  • Une autre méthode est de copier toutes le valeurs dans un autre secteur FLASH, d’effacer le secteur d’origine puis de réécrire les données après mise à jour des valeurs.
  • Une version similaire à la méthode ci-dessus est d’utiliser deux secteurs de FLASH et de passer d’un à l’autre à chaque mise à jour.

Comme indiqué, l’effacement d’un secteur de FLASH est généralement une opération lente. Effacer un secteur de 128koctets d’un STM32F407 prend de 1 à 4 secondes (selon la tension d’alimentation)! Le MCU ne peut pas exécuter d’instructions lors de l’effacement, il faut donc en tenir compte dans la conception du produit (une fonction alternative du microcontrôleur serait de copier les instructions du programme en RAM et de les exécuter depuis cette mémoire pendant que l’effacement de la FLASH s’effectue – les périphériques tels que le DMA fonctionnent aussi indépendamment).

Une bonne compréhension sur la façon dont les FLASH fonctionnent et des paramètres particuliers des mémoires choisies (taille des secteurs, temps d’effacement, etc) permet d’implémenter la bonne technique de gestion.

Pendant une simulation Proteus, il est possible de voir le contenu de la mémoire FLASH et de progresser en pas à pas, ce qui peut vous aider dans le développement et le débogage des projets qui utilise des FLASH.


Copyright Labcenter Electronics Ltd. 2024

Traduction française

Copyright Multipower France 2024

Retour en haut