Utilisation du stockage sur Azure Sphere
Important
Il s’agit de la documentation Azure Sphere (héritée). Azure Sphere (hérité) prend sa retraite le 27 septembre 2027 et les utilisateurs doivent migrer vers Azure Sphere (intégré) pour l’instant. Utilisez le sélecteur de version situé au-dessus du TOC pour afficher la documentation Azure Sphere (intégrée).
Cette rubrique décrit comment utiliser le stockage sur un appareil Azure Sphere. Azure Sphere fournit deux types de stockage : un stockage flash en lecture seule et un stockage mutable.
Le stockage en lecture seule est utilisé pour stocker des packages d’image d’application sur un appareil afin que le contenu ne puisse pas être modifié sans mettre à jour l’application. Ce type de stockage peut contenir des données telles que des ressources d’interface utilisateur, des données de configuration statiques, des ressources binaires, y compris les images de microprogramme servant à la mise à jour des MCU externes, ou des données d’initialisation pour le stockage mutable. Mémoire disponible pour les applications fournit des détails supplémentaires sur la quantité de stockage disponible.
Le stockage mutable contient les données à conserver au redémarrage d’un appareil. Par exemple, si vous souhaitez gérer l’heure système selon le fuseau horaire local, vous pouvez stocker les paramètres du fuseau horaire dans le stockage mutable. Ce stockage peut également contenir des paramètres modifiables par l’utilisateur ou des données de configuration téléchargées. L’exemple de stockage mutable montre comment utiliser le stockage mutable dans une application.
Remarque
À plusieurs reprises, la mise à jour du flash l’a porté et la 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 gérer le stockage en lecture seule à l’aide de ces fonctions Applibs. Pour obtenir un exemple d’utilisation de ces fonctions, consultez Se connecter aux services web à l’aide de curl.
Exigences pour le stockage en lecture seule
Les applications qui utilisent un stockage en lecture seule doivent inclure les fichiers d’en-tête appropriés.
Ajoutez les en-têtes storage et unistd dans votre projet :
#include <unistd.h>
#include <applibs/storage.h>
Ajouter un fichier à un package d’image
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’image de l’application. Définissez ces fonctions dans le fichier CMakeLists.txt pour ajouter le fichier en tant que ressource :
Utilisez azsphere_target_add_image_package pour spécifier le fichier de package d’image et 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’image. Pour plus d’informations sur ces fonctions, consultez Utiliser les fonctions CMake.
Remarque
Les chemins absolus ne sont pas pris en charge pour RESOURCE_FILES.
Utilisation du stockage mutable
Quand vous configurez le stockage mutable pour votre application, ce stockage 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’a pas accès au stockage mutable de l’application précédente.
Si vous supprimez une application sur 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 azsphere device app show-quota affiche la quantité de stockage modifiable qui est actuellement utilisée.
Le système d’exploitation Azure Sphere dispose de mécanismes de protection contre la perte de puissance en place pour éviter toute altération de l’état de configuration critique et des métadonnées du système de fichiers. L’API de stockage mutable bénéficie de ces fonctionnalités. Toutefois, le contenu réel du stockage mutable dépend du fait que, dans quel ordre, les mémoires tampons sont vidées, de sorte qu’il n’existe aucune garantie que toutes les modifications en attente au moment de la perte d’alimentation seront reflétées dans le fichier lui-même après la récupération.
Vous pouvez gérer les données du stockage mutable à l’aide de ces fonctions Applibs :
Exigences pour le stockage mutable
Les applications qui utilisent le stockage mutable doivent inclure les fichiers d’en-tête appropriés et ajouter les paramètres de stockage mutable dans le manifeste de l’application.
Fichiers d’en-tête pour le stockage mutable
Ajoutez les en-têtes storage et unistd dans votre projet :
#include <unistd.h>
#include <applibs/storage.h>
Manifeste d’application
Pour utiliser les API dans cette rubrique, vous devez ajouter la fonctionnalité MutableStorage
au manifeste de l’application, puis définir le champ SizeKB
. Le champ SizeKB est un entier qui spécifie la taille du stockage mutable en kibioctets. La valeur maximale est 64 et le stockage est alloué d’après la taille du bloc d’effacement de l’appareil. Si la valeur n’est pas un multiple entier de la taille du bloc de l’appareil, le stockage alloué correspond à la valeur SizeKB arrondie à la taille de bloc suivante.
Remarque
Le MT3620 ayant une taille de bloc d’effacement de 8 Ko, toutes les valeurs qui ne sont pas des multiples de 8 seront arrondies. Par exemple, si vous spécifiez 12 Ko dans la fonction « MutableStorage », vous obtiendrez 16 Ko sur un MT3620.
Dans l’exemple ci-dessous, la fonction de stockage MutableStorage est ajoutée au manifeste d’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 afin de récupérer un descripteur de fichier pour un fichier de données persistantes. Appelez ensuite la fonction write
pour écrire les données dans le fichier de données persistantes. Si la quantité de données que vous tentez d’écrire dépasse le stockage mutable alloué, la fonction write peut réussir, mais seules seront écrites les données de la partie qui ne dépasse pas le stockage alloué. Pour vérifier que toutes les données ont été écrites, examinez la valeur de retour de l’appel de la fonction write
.
Lire des données persistantes
Pour lire les données d’un stockage persistant, appelez Storage_OpenMutableFile afin de récupérer un descripteur de fichier pour le fichier de données persistantes, puis appelez la fonction read
pour lire les données.
Supprimer des données persistantes
Pour supprimer des données d’un stockage persistant, appelez Storage_DeleteMutableFile.