Megosztás a következőn keresztül:


Tárolás használata az Azure Sphere-en

Ez a témakör azt ismerteti, hogyan használhatja a tárolót egy Azure Sphere-eszközön. Az Azure Sphere kétféle tárolót biztosít, csak olvasható flash-tárolót és módosítható tárolást.

Az írásvédett tároló alkalmazásképcsomagok tárolására szolgál az eszközön, így a tartalom nem módosítható az alkalmazás frissítése nélkül. Ezek közé tartozhatnak az olyan adatok, mint a felhasználói felületi objektumok, a statikus konfigurációs adatok, a bináris erőforrások, beleértve a külső MCU-k frissítéséhez használt belső vezérlőprogram-lemezképeket, vagy a módosítható tároló inicializálási adatai. Az alkalmazások számára rendelkezésre álló memória további részleteket tartalmaz a rendelkezésre álló tárterületről.

A mutable storage olyan adatokat tárol, amelyek megmaradnak az eszköz újraindításakor. Ha például a rendszeridőt a helyi időzónával szeretné kezelni, az időzóna-beállításokat tárolhatja egy módosítható tárolóban. Néhány további példa a beállításokra, amelyeket a felhasználó módosíthat vagy letölthet a konfigurációs adatokból. A mutable storage minta bemutatja, hogyan használható a mutáns tárolás egy alkalmazásban.

Megjegyzés

A vaku ismételt frissítése végül elhasználja, és érvényteleníti. Ezért úgy kell megterveznie a kódot, hogy elkerülje a flash felesleges frissítéseit. Ha például az alkalmazás állapotát a kilépés előtt szeretné menteni, hogy az újraindítás után helyreállíthassa a mentett állapotot, fontolja meg az alkalmazás állapotának flash állapotba mentését csak akkor, ha az állapot megváltozott.

Írásvédett tároló használata

Ezekkel az Applibs-függvényekkel felügyelheti az írásvédett tárolást. A függvényeket használó példákért lásd: Csatlakozás webszolgáltatásokhoz a curl használatával.

Írásvédett tárolási követelmények

Az írásvédett tárolást használó alkalmazásoknak tartalmazniuk kell a megfelelő fejlécfájlokat.

Adja meg a tárterületet és a nem tárolt fejléceket a projektben:

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

Fájl hozzáadása képcsomaghoz

Ha egy fájlt csak olvasható tárolóba szeretne felvenni az Azure Sphere-eszközön, erőforrásként hozzáadhatja a projekthez, és belefoglalhatja az alkalmazás rendszerképcsomagjába:

  • A azsphere_target_add_image_package használatával adja meg a képcsomagfájlt és az összeállítás során belefoglalandó erőforrásfájlokat. Például:

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

A "file1.dat" és a "file2.dat" fájloknak most meg kell jelennie a képcsomagban. További információ ezekről a függvényekről: CMake-függvények használata .

Megjegyzés

Az abszolút elérési utak nem támogatottak a RESOURCE_FILES.

A többtáblás tárolás használata

Amikor az alkalmazáshoz beállítja a módosítható tárolót, az hozzá lesz rendelve az alkalmazás összetevő-azonosítójához, és nem érhető el olyan alkalmazás számára, amely más összetevő-azonosítóval rendelkezik. Ha az alkalmazás összetevő-azonosítója megváltozik, az új alkalmazás nem fog hozzáférni az előző alkalmazás módosítható tárolóhoz.

Ha töröl egy alkalmazást egy eszközről, az alkalmazáshoz rendelt, módosítható tároló is törlődik. Ha ugyanezt az alkalmazást ezután újra betölti az eszközre, a cserélhető tároló üres lesz. Ha azonban törlés nélkül frissíti az alkalmazást, a rendszer megőrzi a módosítható tárolótartalmat.

Az az sphere device app show-quota parancs megjeleníti a jelenleg használatban lévő, módosítható tárterület mennyiségét.

Az Azure Sphere operációs rendszer energiaveszteség-védelmi mechanizmusokkal rendelkezik a kritikus konfigurációs állapot és a fájlrendszer metaadatainak sérülésének elkerülése érdekében. A mutable Storage API előnyei ezek a funkciók. A módosítható tároló tényleges tartalma azonban attól függ, hogy a pufferek kiürítése és sorrendje milyen sorrendben történik, így nem garantálható, hogy az áramkimaradás idején történt összes függőben lévő módosítás tükröződni fog magában a fájlban a helyreállítás után.

A következő Applibs-függvényekkel kezelheti a módosítható tárolási adatokat:

A módosítható tárolási követelmények

A mutable storage-ot használó alkalmazásoknak tartalmazniuk kell a megfelelő fejlécfájlokat, és fel kell vennie a módosítható tárolási beállításokat az alkalmazásjegyzékbe.

Fejlécfájlok a módosítható tároláshoz

Adja meg a tárterületet és a nem tárolt fejléceket a projektben:

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

Alkalmazásjegyzék

A témakörben szereplő API-k használatához hozzá kell adnia a MutableStorage képességet az alkalmazásjegyzékhez , majd be kell állítania a SizeKB mezőt. A SizeKB mező egy egész szám, amely kibibájtban adja meg a módosítható tárterület méretét. A maximális érték 64, és a tárterület az eszköz törlési blokkméretének megfelelően van lefoglalva. A foglalás úgy történik, hogy a SizeKB értéket a következő blokkméretre kerekítjük, ha az érték nem az eszköz blokkméretének egész többszöröse.

Megjegyzés

Az MT3620 8 KB méretű törlési blokktal rendelkezik, így a 8 többszörösét nem tartalmazó értékek fel lesznek kerekítve. Ha például 12 KB-ot ad meg a "MutableStorage" képességben, 16 KB-ot fog kapni egy MT3620-on.

Az alábbi példában a MutableStorage tárolási képesség hozzáadódik az alkalmazásjegyzékhez 8 KB-os mérettel.

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

Állandó adatok írása

Ha állandó tárolóba szeretne adatokat írni, először hívja meg az Applibs függvényt Storage_OpenMutableFile egy állandó adatfájl fájlleírójának lekéréséhez. Ezután hívja meg a függvényt write , hogy az adatokat az állandó adatfájlba írja. Ha az írni próbált adatok mennyisége meghaladja a módosítható tárterület-kiosztást, az írási függvény sikeres lehet; Azonban az egyetlen megírt adat az a rész lesz, amely nem haladja meg a tárterület-kiosztást. Az összes adat írásának ellenőrzéséhez ellenőriznie kell a write függvényhívás visszatérési értékét.

Állandó adatok olvasása

Ha adatokat szeretne beolvasni az állandó tárolási hívásból , Storage_OpenMutableFile lekérni az állandó adatfájl fájlleíróját, majd meghívni a read függvényt az adatok beolvasásához.

Állandó adatok törlése

Adatok törlése az állandó tárolási hívásból Storage_DeleteMutableFile.