Utilisation du stockage sur Azure Sphere

Cette rubrique explique comment utiliser le stockage sur un appareil Azure Sphere. Azure Sphere fournit deux types de stockage : le stockage Flash en lecture seule et le stockage mutable.

Le stockage en lecture seule est utilisé pour stocker des packages d’images d’application sur un appareil afin que le contenu ne puisse pas être modifié sans mettre à jour l’application. Cela peut inclure des données telles que des ressources d’interface utilisateur, des données de configuration statiques, des ressources binaires, y compris des images de microprogramme utilisées pour mettre à jour des MCU externes ou des données d’initialisation pour le stockage mutable. La mémoire disponible pour les applications fournit des détails supplémentaires sur la quantité de stockage disponible.

Le stockage mutable stocke les données qui persistent lorsqu’un appareil redémarre. Par exemple, si vous souhaitez gérer l’heure système à l’aide du fuseau horaire local, vous pouvez stocker les paramètres de fuseau horaire dans un stockage mutable. D’autres exemples sont les paramètres qu’un utilisateur peut modifier ou les données de configuration téléchargées. L’exemple de stockage mutable montre comment utiliser le stockage mutable dans une application.

Note

La mise à jour répétée du flash finit par l’épuiser et le rend non valide. Par conséquent, vous devez concevoir votre code pour éviter les mises à jour inutiles du flash. Par exemple, si vous souhaitez enregistrer l’état de votre application avant de quitter afin de pouvoir récupérer l’état enregistré après un redémarrage, envisagez d’enregistrer l’état de l’application dans le flash uniquement si l’état a changé.

Utilisation du stockage en lecture seule

Vous pouvez utiliser ces fonctions de bibliothèques d’applications pour gérer le stockage en lecture seule. Pour obtenir un exemple qui utilise ces fonctions, consultez Se connecter à des services web à l’aide de curl.

Exigences de stockage en lecture seule

Les applications qui utilisent le stockage en lecture seule doivent inclure les fichiers d’en-tête appropriés.

Incluez les en-têtes de stockage et non attachés dans votre projet :

#include <unistd.h>
#include <applibs/storage.h>

Ajouter un fichier à un package d’images

Pour ajouter un fichier au stockage en lecture seule sur l’appareil Azure Sphere, vous pouvez l’ajouter à votre projet en tant que ressource et l’inclure dans le package d’images de l’application :

  • Utilisez azsphere_target_add_image_package pour spécifier le fichier de package d’image et tous les fichiers de ressources à inclure lors de la génération. Par exemple :

    azsphere_target_add_image_package(${PROJECT_NAME} RESOURCE_FILES "file1.dat" "file2.dat")

Les fichiers « file1.dat » et « file2.dat » doivent maintenant apparaître dans le package d’images. Pour plus d’informations sur ces fonctions, consultez Utiliser les fonctions CMake .

Note

Les chemins absolus ne sont pas pris en charge pour RESOURCE_FILES.

Utilisation du stockage mutable

Lorsque vous configurez le stockage mutable pour votre application, il est affecté à l’ID de composant de l’application et n’est pas accessible par une application qui a un ID de composant différent. Si l’ID de composant de l’application change, la nouvelle application n’aura pas accès au stockage mutable de l’application précédente.

Si vous supprimez une application d’un appareil, le stockage mutable affecté à l’application est également supprimé. Si la même application est ensuite rechargée sur l’appareil, le stockage mutable est vide. Toutefois, si vous mettez à jour l’application sans la supprimer, le contenu du stockage mutable est conservé.

La commande az sphere device app show-quota affiche la quantité de stockage mutable actuellement utilisée.

Le système d’exploitation Azure Sphere dispose de mécanismes de protection contre la perte d’alimentation pour éviter l’altération de l’état de configuration critique et des métadonnées du système de fichiers. L’API de stockage mutable tire parti de ces fonctionnalités. Toutefois, le contenu réel du stockage mutable dépend du fait que, et dans quel ordre, les mémoires tampons sont vidées, il n’existe donc aucune garantie que toutes les modifications en attente au moment de la perte de puissance seront reflétées dans le fichier lui-même après la récupération.

Vous pouvez utiliser ces fonctions de bibliothèques d’applications pour gérer les données de stockage mutables :

Exigences de stockage mutable

Les applications qui utilisent le stockage mutable doivent inclure les fichiers d’en-tête appropriés et ajouter des paramètres de stockage mutable au manifeste de l’application.

Fichiers d’en-tête pour le stockage mutable

Incluez les en-têtes de stockage et non attachés dans votre projet :

#include <unistd.h>
#include <applibs/storage.h>

Manifeste d’application

Pour utiliser les API de cette rubrique, vous devez ajouter la MutableStorage fonctionnalité au manifeste de l’application , puis définir le SizeKB champ . Le champ SizeKB est un entier qui spécifie la taille de votre stockage mutable en kibioctets. La valeur maximale est 64 et le stockage est alloué en fonction de la taille du bloc d’effacement de l’appareil. L’allocation est effectuée en arrondissant la valeur SizeKB à la taille de bloc suivante si la valeur n’est pas un multiple entier de la taille de bloc de l’appareil.

Note

Le MT3620 a une taille de bloc d’effacement de 8 Ko, de sorte que toutes les valeurs qui ne sont pas des multiples de 8 seront arrondies vers le haut. Par exemple, si vous spécifiez 12 Ko dans la fonctionnalité « MutableStorage », vous recevrez 16 Ko sur un MT3620.

Dans l’exemple ci-dessous, la fonctionnalité de stockage MutableStorage est ajoutée au manifeste de l’application avec une taille de 8 Ko.

{
  "SchemaVersion": 1,
  "Name" : "Mt3620App_Mutable_Storage",
  "ComponentId" : "9f4fee77-0c2c-4433-827b-e778024a04c3",
  "EntryPoint": "/bin/app",
  "CmdArgs": [],
   "Capabilities": {
    "AllowedConnections": [],
    "AllowedTcpServerPorts": [],
    "AllowedUdpServerPorts": [],
    "MutableStorage": { "SizeKB": 8 },
    "Gpio": [],
    "Uart": [],
    "WifiConfig": false,
    "NetworkConfig": false,
    "SystemTime": false
  }
}

Écrire des données persistantes

Pour écrire des données dans un stockage persistant, commencez par appeler la fonction Applibs Storage_OpenMutableFile pour récupérer un descripteur de fichier pour un fichier de données persistant. Appelez ensuite la write fonction pour écrire les données dans le fichier de données persistant. Si la quantité de données que vous essayez d’écrire dépasse votre allocation de stockage mutable, la fonction d’écriture peut réussir . Toutefois, les seules données écrites sont la partie qui ne dépasse pas l’allocation de stockage. Pour vous assurer que toutes les données sont écrites, vous devez case activée la valeur de retour de l’appel write de fonction.

Lire les données persistantes

Pour lire des données à partir du stockage persistant, appelez Storage_OpenMutableFile pour récupérer un descripteur de fichier pour le fichier de données persistant, puis appelez la read fonction pour lire les données.

Supprimer des données persistantes

Pour supprimer des données du stockage persistant , appelez Storage_DeleteMutableFile.