Principes de base de la mémoire embarquée : comparaison des mémoires EEPROM, FRAM, eMMC et des cartes SD
Avec la contribution de Rédacteurs nord-américains de DigiKey
2019-10-16
La mémoire est un élément majeur dans tous les systèmes embarqués basés sur un microcontrôleur. Les développeurs ont, par exemple, besoin d'assez de RAM pour prendre en charge toutes leurs variables volatiles, créer des tampons et gérer diverses piles d'applications. Aussi importante que soit la RAM pour un système embarqué, les développeurs ont également besoin d'un espace où stocker le code de leur application, des données non volatiles et des informations de configuration.
Problème : les options technologiques en matière de mémoire non volatile sont de plus en plus nombreuses et il est de plus en plus difficile de trouver la bonne mémoire pour une application.
Cet article présente les différentes technologies disponibles. Il donne ensuite des exemples de fournisseurs comme ON Semiconductor, Adesto Technologies, Renesas, ISSI, Cypress Semiconductor, Advantech, GigaDevice Semiconductor et Silicon Motion pour aider les développeurs à comprendre les caractéristiques de chaque type de mémoire. Il aborde également l'emplacement qui convient le mieux à ces mémoires pour que les développeurs puissent les utiliser efficacement.
Mémoires EEPROM et FRAM dans des systèmes embarqués
Le premier dispositif de mémoire le plus souvent envisagé pour être intégré à un système embarqué est la mémoire EEPROM. Il s'agit d'une mémoire non volatile souvent utilisée pour stocker des paramètres de configuration système pour une application embarquée. Par exemple, un dispositif connecté à un réseau (comme un bus CAN) peut stocker l'identifiant CAN dans la mémoire EEPROM.
La mémoire EEPROM présente plusieurs caractéristiques qui en font un bon choix pour les développeurs de systèmes embarqués :
- Empreinte physique compacte
- Relativement peu coûteuse
- Débits binaires typiques de 100 kilobits par seconde (kbit/s) à 1000 kbits/s
- Interface électrique standardisée
- Prise en charge très fréquente des interfaces I2C et SPI
Une recherche rapide concernant la mémoire EEPROM sur le site Web de DigiKey donne actuellement neuf fournisseurs de mémoire EEPROM avec plus de 5800 modèles de mémoires. Par exemple, le CAT24C32WI-GT3 d'ON Semiconductor est un dispositif EEPROM de 32 kbits (4 Ko) fourni dans un boîtier SOIC à 8 broches qui peut se connecter au bus I2C à des vitesses allant jusqu'à 1 mégahertz (MHz) (Figure 1).
Figure 1 : Le CAT24C32WI-GT3 est une EEPROM de 1 kbit d'ON Semiconductor qui peut se connecter à un microcontrôleur grâce à un port I2C ou SPI pour stocker des données de configuration et d'application. (Source de l'image : ON Semiconductor)
Ce qui est intéressant au sujet de la mémoire EEPROM, c'est qu'elle est parfois également incluse dans le microcontrôleur lui-même. Par exemple, le microcontrôleur 32 bits R7FS128783A01CFM#AA1 de Renesas dispose de 4 Ko de mémoire EEPROM embarquée que les développeurs peuvent utiliser.
Cela suppose que les besoins de la configuration ne dépassent pas 4 Ko. Dans le cas contraire, les développeurs doivent utiliser un dispositif externe ou émuler une mémoire EEPROM supplémentaire à l'aide de la mémoire Flash du microcontrôleur.
Malgré la popularité de la mémoire EEPROM, elle présente quelques inconvénients potentiels :
- Généralement limitée à 1 000 000 cycles d'effacement/écriture
- Cycles d'écriture d'environ 500 nanosecondes (ns)
- Plusieurs instructions nécessaires pour écrire une cellule
- Conservation des données pendant 10 ans ou plus (depuis peu, une durée 100 ans ou plus est plus courante)
- Sensible aux radiations et aux températures de fonctionnement élevées
Les mémoires EEPROM fonctionnent bien dans de nombreuses applications, mais pour les applications qui nécessitent une haute fidélité (comme dans les secteurs des systèmes automobiles, médicaux ou aérospatiaux), les développeurs doivent utiliser une solution de mémoire plus robuste, comme la mémoire FRAM.
FRAM signifie « mémoire vive ferroélectrique ». Ce type de mémoire offre plusieurs avantages par rapport à la mémoire EEPROM :
- Plus rapide (cycles d'écriture de moins de 50 ns)
- Davantage de cycles d'écriture (plus de mille milliards contre un million pour l'EEPROM)
- Solution plus basse consommation (nécessite 1,5 V pour fonctionner)
- Meilleure tolérance aux radiations
Les tailles de mémoire FRAM disponibles sont similaires à celles de la mémoire EEPROM. Par exemple, la gamme de mémoires FRAM de Cypress Semiconductor peut s'étendre de 4 kbits à 4 Mbits. Le dispositif FM25L16B-GTR inclut 16 kbits (Figure 2). Il est fourni dans un boîtier SOIC à 8 broches et peut fonctionner jusqu'à 20 MHz.
Figure 2 : La gamme FRAM de Cypress comprend différentes tailles de mémoire allant de 4 kbits à 4 Mbits qui peuvent se connecter à un microcontrôleur grâce à une interface SPI pour stocker des données de configuration et d'application. Le dispositif FM25L16B-GTR (sur l'image) fonctionne jusqu'à 20 MHz. (Source de l'image : Cypress Semiconductor)
Du côté des dispositifs les plus avancés, le CY15B104Q-LHXIT de Cypress Semiconductor offre 4 Mbits et prend en charge des vitesses d'interface allant jusqu'à 40 MHz (Figure 3). Voici quelques fonctionnalités intéressantes de cette mémoire FRAM :
- Conservation des données pendant 151 ans
- 100 000 milliards de cycles de lecture/écriture
- Remplacement direct des mémoires EEPROM et Flash série
Comme on peut l'imaginer, la mémoire FRAM est plus chère que la mémoire EEPROM. C'est pourquoi il est important d'évaluer soigneusement les facteurs environnementaux dans lesquels un dispositif doit fonctionner lors du choix d'une mémoire adaptée à une application.
Figure 3 : Le CY15B104Q-LHXIT est un dispositif de 4 Mbits qui fonctionne jusqu'à 40 MHz. Il fait partie de la gamme de mémoires FRAM de Cypress qui s'étend de 4 kbits à 4 Mbits. (Source de l'image : Cypress Semiconductor)
Mémoires Flash, eMMC et cartes SD dans des systèmes embarqués
Une mémoire Flash est un système embarqué qui peut être utilisé à diverses fins. Tout d'abord, une mémoire Flash externe peut être utilisée pour étendre la mémoire Flash interne afin d'augmenter la mémoire disponible pour le code d'une application. Pour ce faire, on utilise généralement des modules Flash SPI, comme le GD25Q80CTIGR de GigaDevice Semiconductor (Figure 4). Le GD25Q80CTIGR peut être utilisé pour augmenter la mémoire interne de 8 Mbits via l'interface SPI, si le microcontrôleur peut prendre en charge cette extension.
Figure 4 : La mémoire Flash GD25Q80CTIGR de GigaDevice Semiconductor Limited peut être utilisée pour augmenter la mémoire Flash interne de 8 Mbits via le port SPI. (Source de l'image : GigaDevice Semiconductor Limited)
Ensuite, une mémoire Flash externe peut être utilisée pour stocker des informations de configuration ou des données d'application plutôt que d'utiliser une mémoire EEPROM ou FRAM. Une puce de mémoire Flash externe peut être utilisée à la place afin de réduire les coûts de nomenclature ou d'augmenter la mémoire interne pour stocker des données issues de l'application. Une carte de la mémoire et des périphériques du microcontrôleur peut être configurée pour inclure cette mémoire Flash externe afin que le développeur puisse y accéder plus facilement sans avoir à envoyer des commandes personnalisées à un pilote nécessaire pour communiquer avec une mémoire EEPROM ou FRAM.
L'AT25SF161 d'Adesto Technologies (Figure 5) est un exemple de dispositif de mémoire Flash externe qui peut être utilisé à cette fin. Il utilise une interface QSPI (SPI avec file d'attente). L'interface QSPI est une extension du protocole SPI classique qui optimise le débit de données du système. Cette interface est extrêmement intéressante pour les développeurs ayant besoin de stocker ou de récupérer de grandes quantités de données au cours d'une transaction unique.
L'interface QSPI fonctionne en éliminant l'intervention du processeur au niveau du périphérique QSPI et en modifiant l'interface de façon à ce qu'elle comporte six broches (CLK, CS, IO0, IO1, IO2, IO3) à la place des quatre broches standard (MOSI, MISO, CLK et CS). Cela permet d'utiliser quatre broches pour l'entrée et la sortie, contre deux broches pour une interface SPI.
Figure 5 : Les dispositifs de mémoire Flash externe AT25SF161 d'Adesto Technologies peuvent être utilisés pour augmenter la mémoire Flash interne. Ils présentent une interface QSPI qui permet un stockage et une récupération des données plus rapides. (Source de l'image : Adesto Technologies)
Enfin, la mémoire Flash peut être utilisée pour stocker des données d'application et des informations de charge utile. Par exemple, un système GPS n'essaie pas de stocker toutes les cartes GPS localement sur le processeur. Il utilise plutôt un dispositif de stockage externe comme une carte SD ou un dispositif eMMC. Ces supports de stockage peuvent être connectés à un microcontrôleur via une interface SPI ou une interface SDIO dédiée conçue pour communiquer de manière efficace avec le dispositif de mémoire externe.
Par exemple, le module eMMC IS21ES04G-JCLI d'ISSI peut être directement connecté à une interface SDIO sur le microcontrôleur afin d'ajouter 32 Gbits de stockage Flash au dispositif (Figure 6).
Figure 6 : Le module Flash eMMC d'ISSI dispose de 32 Gbits de mémoire pouvant être connectés à un hôte via une interface SPI ou SDIO. (Source de l'image : ISSI)
Du point de vue de l'interface électrique, les cartes SD et les dispositifs eMMC sont identiques. Ils comprennent en effet les mêmes broches communes utilisées pour connecter les dispositifs à un microcontrôleur, même s'ils sont certainement fournis dans différents boîtiers. Cela dit, ces deux types de mémoire peuvent être assez différents l'un de l'autre. Par rapport aux cartes SD, un dispositif eMMC présente généralement les différences suivantes :
- Plus rapide et moins sujet à la corruption physique
- Interaction plus rapide
- Plus coûteux
- Soudé sur la carte et non amovible
Si l'utilisateur n'a pas besoin de retirer la mémoire, l'utilisation d'un dispositif eMMC représente une solution plus robuste, mais cela dépend de l'application finale. Dans tous les cas, un développeur doit choisir sa mémoire soigneusement, car toutes les mémoires sont différentes.
Par exemple, un sous-système qui doit être installé dans une voiture peut nécessiter une mémoire éprouvée et certifiée conforme à une norme plus stricte que celle associée aux dispositifs Flash standard. Dans ce cas, un développeur doit se tourner vers une mémoire adaptée à une conception automobile, comme le module eMMC SM668GE4-AC de 4 Go de Silicon Motion.
En ce qui concerne les cartes SD, les développeurs doivent s'intéresser de près à ce qu'ils achètent, car les cartes SD, tout comme les dispositifs eMMC, ne sont pas toutes les mêmes. Les développeurs doivent examiner minutieusement la classe de vitesse et la température de fonctionnement de la carte. Par exemple, la plupart des cartes SD présentent une température de fonctionnement nominale comprise entre 0 et 70°C, ce qui convient aux dispositifs électroniques grand public.
Il existe aussi des classes de vitesse associées à chaque carte qui décrivent la vitesse d'interface maximale qui peut être attendue. Par exemple, une valeur nominale de classe 2 signifie qu'une carte sera lente pour une application de stockage d'images, à l'inverse d'une carte de classe 10 conçue pour le stockage de vidéos HD, comme la carte microSD SQFlash de 4 Go SQF-MSDM1-4G-21C d'Advantech.
Figure 7 : La carte microSD SQFlash SQF-MSDM1-4G-21C d'Advantech intègre une mémoire de 4 Go et présente une vitesse nominale élevée de classe 10. (Source de l'image : Advantech Corp)
Conseils et astuces pour choisir une mémoire
Choisir le bon type de mémoire et la bonne interface pour un produit embarqué peut être difficile. Voici quelques « conseils et astuces » que les développeurs doivent prendre en compte lorsqu'ils choisissent une mémoire pour leur application.
- Identifiez clairement les conditions de fonctionnement pour la mémoire, notamment :
- Cycles d'effacement/écriture attendus
- Conditions et facteurs environnementaux, comme la température, les vibrations et les radiations
- Exigences en matière de charge de données
- Étudiez les taux binaires nécessaires (minimal, souhaité et maximal) pour bien utiliser la mémoire dans le cadre de l'application
- Sélectionnez le type d'interface de mémoire qui correspond le mieux au taux binaire désiré
- Dans des conditions environnementales difficiles, comme les systèmes automobiles et aérospatiaux, choisissez une mémoire de grade automobile ou présentant une tolérance aux radiations
- Utilisez une carte Breakout pour tester le dispositif de mémoire choisi en l'intégrant au kit de développement du microcontrôleur
En suivant ces conseils, les développeurs pourront choisir la bonne mémoire pour leur application embarquée.
Conclusion
Aujourd'hui, les développeurs peuvent choisir parmi une large gamme de dispositifs de mémoire non volatile pouvant être utilisés pour stocker des données allant du code de l'application aux informations de configuration. Comme indiqué ici, les développeurs doivent évaluer avec attention les besoins de leur application, puis choisir soigneusement le bon type de mémoire et d'interface afin d'équilibrer ces besoins et les coûts.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

