Opslag gebruiken op Azure Sphere
Belangrijk
Dit is de Documentatie voor Azure Sphere (verouderd). Azure Sphere (verouderd) wordt op 27 september 2027 buiten gebruik gesteld en gebruikers moeten tegen deze tijd migreren naar Azure Sphere (geïntegreerd). Gebruik de versiekiezer boven de inhoudsweergave om de Documentatie van Azure Sphere (geïntegreerd) weer te geven.
In dit onderwerp wordt beschreven hoe u opslag op een Azure Sphere-apparaat gebruikt. Azure Sphere biedt twee typen opslag, alleen-lezen flashopslag en veranderlijke opslag.
Alleen-lezenopslag wordt gebruikt voor het opslaan van installatiekopieën van toepassingen op een apparaat, zodat de inhoud niet kan worden gewijzigd zonder de toepassing bij te werken. Dit kan bestaan uit alle gegevens, zoals assets van de gebruikersinterface, statische configuratiegegevens, binaire resources, waaronder firmware-installatiekopieën die worden gebruikt voor het bijwerken van externe MCU's of initialisatiegegevens voor onveranderbare opslag. Geheugen beschikbaar voor toepassingen biedt aanvullende informatie over de hoeveelheid beschikbare opslagruimte.
In de onveranderbare opslag worden gegevens opgeslagen die behouden blijven wanneer een apparaat opnieuw wordt opgestart. Als u bijvoorbeeld 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 gedownloade configuratiegegevens. In het voorbeeld van onveranderbare opslag ziet u hoe u onveranderbare opslag gebruikt in een toepassing.
Notitie
Herhaaldelijk bijwerken van de flash draagt deze uiteindelijk uit en maakt het ongeldig. Daarom moet u uw code ontwerpen om onnodige updates van de flash te voorkomen. Als u bijvoorbeeld de status van uw toepassing wilt opslaan voordat u afsluit, zodat u de opgeslagen status kunt herstellen na een herstart, kunt u overwegen om de status van de toepassing alleen op de flash op te slaan als de status is gewijzigd.
Alleen-lezenopslag gebruiken
U kunt deze Applibs-functies gebruiken om alleen-lezenopslag te beheren. Zie Verbinding maken met webservices met behulp van curl voor een voorbeeld dat deze functies gebruikt.
Vereisten voor alleen-lezenopslag
Toepassingen die alleen-lezenopslag gebruiken, moeten de juiste headerbestanden bevatten.
Neem de opslag- en niet-gekoppelde headers op in uw project:
#include <unistd.h>
#include <applibs/storage.h>
Een bestand toevoegen aan een afbeeldingspakket
Als u een bestand wilt toevoegen aan opslag met het kenmerk Alleen-lezen op het Azure Sphere-apparaat, kunt u het als een resource toevoegen aan uw project en 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 alle resourcesbestanden op te geven die moeten worden opgenomen bij het bouwen. Voorbeeld:
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.
Notitie
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 met een andere onderdeel-id. Als de onderdeel-id van de toepassing wordt gewijzigd, heeft de nieuwe toepassing geen toegang tot de onveranderbare opslag van de vorige toepassing.
Als u een toepassing van een apparaat verwijdert, wordt de onveranderbare opslag die aan de toepassing is toegewezen, ook verwijderd. Als dezelfde toepassing vervolgens weer op het apparaat wordt geladen, is de onveranderbare 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 onveranderbare opslag weergegeven die momenteel wordt gebruikt.
Het Azure Sphere-besturingssysteem heeft mechanismen voor energieverlies om beschadiging van kritieke configuratiestatus en metagegevens van het bestandssysteem te voorkomen. De veranderlijke opslag-API profiteert van deze functies. De werkelijke inhoud van onveranderbare opslag is echter afhankelijk van of en in welke volgorde buffers worden leeggemaakt, dus er is geen garantie dat alle wijzigingen die in behandeling zijn op het moment van stroomverlies, worden doorgevoerd in het bestand zelf na herstel.
U kunt deze Applibs-functies gebruiken om onveranderbare opslaggegevens te beheren:
Veranderlijke opslagvereisten
Toepassingen die gebruikmaken van onveranderbare opslag moeten de juiste headerbestanden bevatten en onveranderbare opslaginstellingen toevoegen aan het toepassingsmanifest.
Koptekstbestanden voor onveranderbare opslag
Neem de opslag- en niet-gekoppelde headers op in uw project:
#include <unistd.h>
#include <applibs/storage.h>
Manifest van de toepassing
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 SizeKB is een geheel getal dat de grootte van uw onveranderbare opslag in kibibytes aangeeft. De maximumwaarde is 64 en de opslag wordt toegewezen op basis van de grootte van het gumblok van het apparaat. De toewijzing wordt uitgevoerd door de GrootteKB-waarde naar de volgende blokgrootte te afronden als de waarde niet een geheel veelvoud is van de blokgrootte van het apparaat.
Notitie
De MT3620 heeft een wisblokgrootte van 8 kB, dus alle waarden die niet veelvouden van 8 zijn, worden naar boven afgerond. Als u bijvoorbeeld 12 KB opgeeft in de mogelijkheid 'MutableStorage', ontvangt u 16 KB op een MT3620.
In het onderstaande voorbeeld wordt de opslagmogelijkheid 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 de onveranderbare opslagtoewijzing, kan de schrijffunctie slagen; De enige gegevens die zijn geschreven, zijn echter het gedeelte dat de opslagtoewijzing niet overschrijdt. Om ervoor te zorgen dat alle gegevens worden geschreven, moet u de retourwaarde van de write
functie-aanroep controleren.
Permanente gegevens lezen
Als u gegevens wilt lezen uit permanente opslagaanroep 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
Gegevens verwijderen uit permanente opslagoproep Storage_DeleteMutableFile.