Les cartes Arduino AVR, ainsi que d'autres plateformes utilisant cet environnement et cet « IDE », proposent de base une EEPROM permettant de stocker une quantité réduite de données survivant entre les phases d'alimentation d'un projet. Dans le cas des AVR, cette EEPROM est physiquement présente dans le microcontrôleur, mais avec un ESP32 par exemple, c'est une zone de la flash qui sera utilisée. Qu'en est-il d'une fonctionnalité similaire avec la Raspberry Pi Pico et son RP2040 ?
Bien que le RP2040 offre un certain nombre de modes de sommeil (sleep, dormant, Memory Power Down), ainsi qu'un réglage fin des horloges, il arrive que l'approche optimale consiste à totalement cesser d'alimenter un projet. Dans ce genre de situations, seule une mémoire de stockage non volatile permettra la rétention des données. Les AVR d'Atmel/Microchip intègrent une zone de flash spécifique, inscriptible depuis le code en C, dédiée à cet usage. D'autres plateformes comme les microcontrôleurs d'Expressif implémentent ce type de fonctionnalités de façon logicielle via l'utilisation d'une partie de la mémoire de stockage NVS (pour Non-Volatile Storage, une zone du système de partitionnement de la flash SPI [1]) et d'une bibliothèque dédiée (« Preferences » dans le support Arduino [2]).
Ce genre de mécanismes suppose de pouvoir accéder à la mémoire flash, normalement dédiée au stockage du code binaire et des données en lecture seule, depuis le code en...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première