Dela via


Använda lagring på Azure Sphere

Viktigt!

Det här är dokumentationen om Azure Sphere (Legacy). Azure Sphere (Legacy) upphör den 27 september 2027 och användarna måste migrera till Azure Sphere (integrerad) vid den här tiden. Använd versionsväljaren ovanför TOC för att visa dokumentationen om Azure Sphere (integrerad).

I det här avsnittet beskrivs hur du använder lagring på en Azure Sphere-enhet. Azure Sphere tillhandahåller två typer av lagring, skrivskyddad flashlagring och föränderlig lagring.

Skrivskyddad lagring används för att lagra programbildpaket på en enhet så att innehållet inte kan ändras utan att programmet uppdateras. Detta kan omfatta alla data som användargränssnittstillgångar, statiska konfigurationsdata, binära resurser, inklusive avbildningar av inbyggd programvara som används för att uppdatera externa MCU:er eller initieringsdata för föränderlig lagring. Tillgängligt minne för program ger ytterligare information om mängden tillgängligt lagringsutrymme.

Föränderlig lagring lagrar data som bevaras när en enhet startas om. Om du till exempel vill hantera systemtid med hjälp av den lokala tidszonen kan du lagra tidszonsinställningarna i föränderlig lagring. Några andra exempel är inställningar som en användare kan ändra eller ladda ned konfigurationsdata. Det föränderliga lagringsexemplet visar hur du använder föränderlig lagring i ett program.

Kommentar

Om du uppdaterar blixten upprepade gånger slits den så småningom ut och gör den ogiltig. Därför bör du utforma koden för att undvika onödiga uppdateringar av blixten. Om du till exempel vill spara programtillståndet innan du avslutar så att du kan återställa det sparade tillståndet efter en omstart kan du spara programmets tillstånd till blixten endast om tillståndet har ändrats.

Använda skrivskyddad lagring

Du kan använda dessa Applibs-funktioner för att hantera skrivskyddad lagring. Ett exempel som använder dessa funktioner finns i Ansluta till webbtjänster med curl.

Skrivskyddade lagringskrav

Program som använder skrivskyddad lagring måste innehålla lämpliga huvudfiler.

Ta med lagrings- och unistd-rubrikerna i projektet:

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

Lägga till en fil i ett avbildningspaket

Om du vill lägga till en fil i skrivskyddad lagring på Azure Sphere-enheten kan du lägga till den i projektet som en resurs och inkludera den i programmets avbildningspaket. Använd dessa funktioner i CMakeLists.txt för att lägga till filen som en resurs:

  • Använd azsphere_target_add_image_package för att ange avbildningspaketfilen och eventuella resurser som ska inkluderas när du skapar. Till exempel:

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

Filerna "file1.dat" och "file2.dat" bör nu visas i avbildningspaketet. Mer information om dessa funktioner finns i Använda CMake-funktioner .

Kommentar

Absoluta sökvägar stöds inte för RESOURCE_FILES.

Använda föränderlig lagring

När du konfigurerar föränderlig lagring för ditt program tilldelas det till programmets komponent-ID och kan inte nås av ett program som har ett annat komponent-ID. Om komponent-ID:t för programmet ändras kommer det nya programmet inte att ha åtkomst till det tidigare programmets föränderliga lagring.

Om du tar bort ett program från en enhet tas även den föränderliga lagring som tilldelats till programmet bort. Om samma program sedan läses in på enheten igen är det föränderliga lagringsutrymmet tomt. Men om du uppdaterar programmet utan att ta bort det bevaras det föränderliga lagringsinnehållet.

Kommandot azsphere device app show-quota visar mängden föränderlig lagring som för närvarande används.

Azure Sphere OS har mekanismer för energiförlustskydd på plats för att undvika skador av kritiskt konfigurationstillstånd och filsystemmetadata. Det föränderliga lagrings-API:et drar nytta av dessa funktioner. Det faktiska innehållet i föränderlig lagring beror dock på om och i vilken ordning buffertar töms, så det finns ingen garanti för att alla väntande ändringar vid tidpunkten för energiförlusten återspeglas i själva filen efter återställningen.

Du kan använda dessa Applibs-funktioner för att hantera föränderliga lagringsdata:

Krav för föränderlig lagring

Program som använder föränderlig lagring måste innehålla lämpliga huvudfiler och lägga till föränderliga lagringsinställningar i programmanifestet.

Rubrikfiler för föränderlig lagring

Ta med lagrings- och unistd-rubrikerna i projektet:

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

Programmanifest

Om du vill använda API:erna i det här avsnittet måste du lägga till MutableStorage funktionen i programmanifestet och sedan ange fältet SizeKB . Fältet SizeKB är ett heltal som anger storleken på din föränderliga lagring i kibibyte. Det maximala värdet är 64 och lagringen allokeras enligt enhetens blockstorlek för radering. Allokeringen görs genom att avrunda SizeKB-värdet till nästa blockstorlek om värdet inte är en hel multipel av enhetens blockstorlek.

Kommentar

MT3620 har en blockstorlek på 8 kB, så alla värden som inte är multiplar av 8 avrundas uppåt. Om du till exempel anger 12 KB i funktionen MutableStorage får du 16 KB på en MT3620.

I exemplet nedan läggs lagringsfunktionen MutableStorage till i programmanifestet med en storlek på 8 KB.

{
  "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
  }
}

Skriva beständiga data

Om du vill skriva data till beständig lagring börjar du med att anropa funktionen Applibs Storage_OpenMutableFile för att hämta en filbeskrivning för en beständig datafil. Anropa write sedan funktionen för att skriva data till den beständiga datafilen. Om mängden data som du försöker skriva överskrider den föränderliga lagringsallokeringen kan skrivfunktionen lyckas. Men de enda data som skrivs är den del som inte överskrider lagringsallokeringen. För att säkerställa att alla data skrivs måste du kontrollera returvärdet för funktionsanropet write .

Läsa beständiga data

Om du vill läsa data från beständigt lagringsanrop Storage_OpenMutableFile för att hämta en filbeskrivning för den beständiga datafilen och anropa read sedan funktionen för att läsa data.

Ta bort beständiga data

Ta bort data från beständigt lagringsanrop Storage_DeleteMutableFile.