Použití úložiště v Azure Sphere

Toto téma popisuje, jak používat úložiště na zařízení Azure Sphere. Azure Sphere poskytuje dva typy úložiště: úložiště flash jen pro čtení a proměnlivé úložiště.

Úložiště jen pro čtení se používá k ukládání balíčků imagí aplikací na zařízení, takže obsah nelze změnit bez aktualizace aplikace. To může zahrnovat jakákoli data, jako jsou prostředky uživatelského rozhraní, statická konfigurační data, binární prostředky včetně imagí firmwaru, které se používají k aktualizaci externích MCU, nebo inicializační data pro proměnlivé úložiště. Paměť dostupná pro aplikace poskytuje další podrobnosti o velikosti dostupného úložiště.

Proměnlivé úložiště ukládá data, která se zachovají při restartování zařízení. Pokud například chcete spravovat systémový čas pomocí místního časového pásma, můžete nastavení časového pásma uložit do proměnlivého úložiště. Mezi další příklady patří nastavení, která může uživatel upravit nebo stáhnout konfigurační data. Ukázka proměnlivého úložiště ukazuje, jak v aplikaci používat proměnlivé úložiště.

Poznámka

Opakovaná aktualizace blesku ho nakonec opotřebuje a způsobí, že je neplatný. Proto byste měli navrhnout kód tak, aby nedocházelo ke zbytečným aktualizacím flash. Pokud například chcete před ukončením uložit stav aplikace, abyste mohli po restartování obnovit uložený stav, zvažte uložení stavu aplikace do režimu flash pouze v případě, že se stav změnil.

Použití úložiště jen pro čtení

Tyto funkce Applibs můžete použít ke správě úložiště jen pro čtení. Příklad, který tyto funkce používá, najdete v tématu Připojení k webovým službám pomocí curl.

Požadavky na úložiště jen pro čtení

Aplikace, které používají úložiště jen pro čtení, musí obsahovat příslušné soubory hlaviček.

Zahrňte do projektu hlavičky úložiště a neistd:

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

Přidání souboru do balíčku obrázku

Pokud chcete přidat soubor do úložiště jen pro čtení na zařízení Azure Sphere, můžete ho přidat do projektu jako prostředek a zahrnout ho do balíčku imagí aplikace:

  • Pomocí azsphere_target_add_image_package určete soubor balíčku imagí a všechny soubory prostředků, které se mají zahrnout do sestavování. Příklad:

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

Soubory "file1.dat" a "file2.dat" by se teď měly zobrazit v balíčku imagí. Další informace o těchto funkcích najdete v tématu Použití funkcí CMake .

Poznámka

Absolutní cesty nejsou pro RESOURCE_FILES podporované.

Použití proměnlivého úložiště

Když pro aplikaci nakonfigurujete proměnlivé úložiště, přiřadí se k ID komponenty aplikace a aplikace, která má jiné ID komponenty, k němu nemá přístup. Pokud se ID komponenty aplikace změní, nová aplikace nebude mít přístup k proměnlivé úložišti předchozí aplikace.

Pokud odstraníte aplikaci ze zařízení, odstraní se také proměnlivé úložiště přiřazené k aplikaci. Pokud se pak stejná aplikace načte zpět do zařízení, bude proměnlivé úložiště prázdné. Pokud ale aplikaci aktualizujete, aniž byste ji odstranili, bude se měnitelný obsah úložiště zachován.

Příkaz az sphere device app show-quota zobrazí aktuálně používané proměnlivé úložiště.

Operační systém Azure Sphere má mechanismy ochrany před ztrátou výkonu, které zabraňují poškození kritického stavu konfigurace a metadat systému souborů. Z těchto funkcí těží rozhraní API pro proměnlivé úložiště. Skutečný obsah proměnlivého úložiště však závisí na tom, zda a v jakém pořadí jsou vyrovnávací paměti vyprázdněny, takže neexistuje žádná záruka, že všechny čekající změny v době výpadku napájení se projeví v samotném souboru po obnovení.

Ke správě proměnlivých dat úložiště můžete použít tyto funkce Applibs:

Požadavky na proměnlivé úložiště

Aplikace, které používají proměnlivé úložiště, musí obsahovat příslušné soubory hlaviček a přidat proměnlivé nastavení úložiště do manifestu aplikace.

Soubory záhlaví pro proměnlivé úložiště

Zahrňte do projektu hlavičky úložiště a neistd:

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

Manifest aplikace

Pokud chcete použít rozhraní API v tomto tématu, musíte přidat MutableStorage funkci do manifestu aplikace a pak nastavit SizeKB pole. Pole SizeKB je celé číslo, které určuje velikost proměnlivého úložiště v kibibajtech. Maximální hodnota je 64 a úložiště se přiděluje podle velikosti bloku mazání zařízení. Přidělení se provádí zaokrouhlením hodnoty SizeKB na další velikost bloku, pokud hodnota není celý násobek velikosti bloku zařízení.

Poznámka

Mt3620 má blok mazání velikost 8 kB, takže všechny hodnoty, které nejsou násobky 8, budou zaokrouhleny nahoru. Pokud například zadáte 12 kB ve funkci MutableStorage, získáte 16 kB na mt3620.

V následujícím příkladu je do manifestu aplikace přidána funkce úložiště MutableStorage s velikostí 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
  }
}

Zápis trvalých dat

Pokud chcete zapsat data do trvalého úložiště, začněte voláním funkce Applibs Storage_OpenMutableFile k načtení popisovače souboru pro trvalý datový soubor. Další voláním write funkce zapište data do souboru trvalých dat. Pokud množství dat, která se pokusíte zapsat, překročí proměnlivé přidělení úložiště, může být funkce zápisu úspěšná. Jediným zápisem dat však bude část, která nepřekračuje přidělení úložiště. Pokud chcete zajistit zápis všech dat, musíte zkontrolovat návratové hodnoty write volání funkce.

Čtení trvalých dat

Pokud chcete číst data z trvalého úložiště, volejte Storage_OpenMutableFile načíst popisovač souboru pro soubor trvalých dat a pak voláním read funkce načtěte data.

Odstranit trvalá data

Pokud chcete odstranit data z trvalého úložiště , volejte Storage_DeleteMutableFile.