Share via


Opslag gebruiken in Azure Sphere

In dit onderwerp wordt beschreven hoe u opslag gebruikt op een Azure Sphere-apparaat. Azure Sphere biedt twee typen opslag: alleen-lezen flashopslag en onveranderbare opslag.

Alleen-lezenopslag wordt gebruikt voor het opslaan van toepassingsinstallatiekopieën op een apparaat, zodat de inhoud niet kan worden gewijzigd zonder de toepassing bij te werken. Dit kan gegevens omvatten zoals assets van de gebruikersinterface, statische configuratiegegevens, binaire resources, inclusief firmware-installatiekopieën die worden gebruikt voor het bijwerken van externe MCU's of initialisatiegegevens voor veranderlijke opslag. Beschikbaar geheugen voor toepassingen biedt aanvullende informatie over de hoeveelheid beschikbare opslagruimte.

In verwisselbare opslag worden gegevens opgeslagen die behouden blijven wanneer een apparaat opnieuw wordt opgestart. Als u bijvoorbeeld de systeemtijd wilt beheren met behulp van de lokale tijdzone, kunt u de tijdzone-instellingen opslaan in onveranderbare opslag. Enkele andere voorbeelden zijn instellingen die een gebruiker kan wijzigen of configuratiegegevens kan downloaden. Het voorbeeld van onveranderbare opslag laat zien hoe u veranderlijke opslag gebruikt in een toepassing.

Opmerking

Als u de flitser herhaaldelijk bijwerkt, wordt deze uiteindelijk versleten en wordt deze ongeldig. Daarom moet u uw code ontwerpen om onnodige updates van de flash te voorkomen. Als u bijvoorbeeld de toepassingsstatus wilt opslaan voordat u wordt afgesloten, zodat u de opgeslagen status kunt herstellen na het opnieuw opstarten, kunt u overwegen de status van de toepassing alleen op te slaan in de flash als de status is gewijzigd.

Alleen-lezenopslag gebruiken

U kunt deze Applibs-functies gebruiken om alleen-lezen opslag te beheren. Zie Verbinding maken met webservices met behulp van curl voor een voorbeeld waarin deze functies worden gebruikt.

Alleen-lezen opslagvereisten

Toepassingen die alleen-lezenopslag gebruiken, moeten de juiste headerbestanden bevatten.

Neem de opslag- en unistd headers op in uw project:

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

Een bestand toevoegen aan een installatiekopieënpakket

Als u een bestand wilt toevoegen aan alleen-lezenopslag op het Azure Sphere-apparaat, kunt u het als een resource toevoegen aan uw project en het opnemen in het installatiekopieënpakket van de toepassing. Gebruik deze functies in CMakeLists.txt om het bestand toe te voegen als een resource:

  • Gebruik azsphere_target_add_image_package om het installatiekopieënpakketbestand en eventuele resources op te geven die moeten worden opgenomen bij het bouwen. Bijvoorbeeld:

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

De bestanden 'file1.dat' en 'file2.dat' moeten nu worden weergegeven in het installatiekopieënpakket. Zie CMake-functies gebruiken voor meer informatie over deze functies.

Opmerking

Absolute paden worden niet ondersteund voor RESOURCE_FILES.

Onveranderbare opslag gebruiken

Wanneer u onveranderbare opslag voor uw toepassing configureert, wordt deze toegewezen aan de onderdeel-id van de toepassing en kan deze niet worden geopend door een toepassing die een andere onderdeel-id heeft. Als de onderdeel-id van de toepassing verandert, heeft de nieuwe toepassing geen toegang tot de verwisselbare opslag van de vorige toepassing.

Als u een toepassing van een apparaat verwijdert, wordt de veranderlijke opslag die aan de toepassing is toegewezen, ook verwijderd. Als dezelfde toepassing vervolgens weer op het apparaat wordt geladen, is de verwisselbare opslag leeg. Als u de toepassing echter bijwerkt zonder deze te verwijderen, blijft de onveranderbare opslaginhoud behouden.

Met de opdracht show-quota voor de azsphere-apparaat-app wordt de hoeveelheid verwisselbare opslag weergegeven die momenteel wordt gebruikt.

Het Azure Sphere-besturingssysteem heeft mechanismen voor bescherming tegen energieverlies om beschadiging van kritieke configuratiestatus en metagegevens van het bestandssysteem te voorkomen. De verwisselbare opslag-API profiteert van deze functies. De werkelijke inhoud van onveranderbare opslag is echter afhankelijk van of en in welke volgorde buffers worden doorgespoeld, dus er is geen garantie dat alle in behandeling zijnde wijzigingen op het moment van energieverlies worden weergegeven in het bestand zelf na herstel.

U kunt deze Applibs-functies gebruiken om veranderlijke opslaggegevens te beheren:

Vereisten voor onveranderbare opslag

Toepassingen die gebruikmaken van onveranderbare opslag moeten de juiste headerbestanden bevatten en instellingen voor onveranderbare opslag toevoegen aan het toepassingsmanifest.

Headerbestanden voor onveranderbare opslag

Neem de opslag- en unistd headers op in uw project:

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

Toepassingsmanifest

Als u de API's in dit onderwerp wilt gebruiken, moet u de MutableStorage mogelijkheid toevoegen aan het toepassingsmanifest en vervolgens het SizeKB veld instellen. Het veld GrootteKB is een geheel getal dat de grootte van uw verwisselbare opslag in kibibytes aangeeft. De maximumwaarde is 64 en de opslag wordt toegewezen op basis van de grootte van het wisblok van het apparaat. De toewijzing wordt uitgevoerd door de waarde SizeKB naar boven af te ronden naar de volgende blokgrootte als de waarde geen geheel veelvoud van de blokgrootte van het apparaat is.

Opmerking

De MT3620 heeft een wisblokgrootte van 8 kB, zodat waarden die geen veelvouden van 8 zijn, naar boven worden afgerond. Als u bijvoorbeeld 12 kB opgeeft in de mogelijkheid 'MutableStorage', ontvangt u 16 kB op een MT3620.

In het onderstaande voorbeeld wordt de opslagcapaciteit MutableStorage toegevoegd aan het toepassingsmanifest met een grootte van 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
  }
}

Permanente gegevens schrijven

Als u gegevens naar permanente opslag wilt schrijven, roept u eerst de functie Applibs aan Storage_OpenMutableFile om een bestandsdescriptor voor een permanent gegevensbestand op te halen. Roep vervolgens de write functie aan om de gegevens naar het permanente gegevensbestand te schrijven. Als de hoeveelheid gegevens die u probeert te schrijven groter is dan uw onveranderbare opslagtoewijzing, kan de schrijffunctie slagen; De enige gegevens die worden geschreven, zijn echter het gedeelte dat de opslagtoewijzing niet overschrijdt. Om ervoor te zorgen dat alle gegevens zijn geschreven, moet u de retourwaarde van de write functie-aanroep controleren.

Permanente gegevens lezen

Als u gegevens uit permanente opslag wilt lezen , roept Storage_OpenMutableFile om een bestandsdescriptor voor het permanente gegevensbestand op te halen en vervolgens de read functie aan te roepen om de gegevens te lezen.

Permanente gegevens verwijderen

Als u gegevens uit permanente opslag wilt verwijderen, roept u Storage_DeleteMutableFile aan.