使用 Azure 球體上的儲存空間

本主題說明如何使用 Azure 球體裝置上的儲存空間。 Azure 球體提供兩種儲存空間類型:只讀快閃儲存空間和可靜音儲存空間。

唯讀儲存空間可用來將應用程式映像套件儲存在裝置上,如此一來,更新應用程式就無法修改內容。 這可能包含任何數據,例如使用者介面資產、靜態設定數據、二進位資源,包括用來更新外部 MCU 的韌體圖像,或可靜音儲存空間的初始化數據。 應用程式可用的記憶體 會提供有關可用儲存空間量的其他詳細數據。

可靜音儲存空間會儲存裝置重新啟動時會持續存在的數據。 例如,如果您想要使用本機 時區管理系統時間 ,您可以將時區設定儲存在可靜音儲存空間中。 其他一些範例是設定使用者可以修改或下載的組態數據。 可靜音儲存樣本顯示如何在應用程式中使用可靜音儲存空間。

注意

重複更新閃光燈最後會磨損,使其無效。 因此,您應該設計程序代碼,以避免出現不必要的刷新更新。 例如,如果您想要在結束之前儲存應用程式狀態,以便在重新啟動后復原已儲存的狀態,請考慮只在狀態已變更時,才將應用程式的狀態儲存到閃光燈。

使用唯讀儲存空間

您可以使用這些 Applibs 函數來管理唯讀儲存空間。 如需使用這些函數的範例,請參閱 使用 Curl 連線至 Web 服務

唯讀儲存需求

使用唯讀儲存空間的應用程式必須包含適當的頁首檔案。

在專案中包含儲存空間與未儲存的標頭:

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

新增檔案至圖像套件

若要將檔案新增到 Azure 球體裝置上的唯讀儲存空間,您可以將它新增到專案做為資源,並將其包含在應用程式的映像套件中:

  • 使用 azsphere_target_add_image_package 來指定建置時要包含的影像套件檔案和任何資源檔案。 例如:

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

檔案「file1.dat」和「file2.dat」現在應該會顯示在影像套件中。 如需這些函數的詳細資訊,請參閱 使用 CMake 函數。

注意

RESOURCE_FILES不支持絕對路徑。

使用可靜音儲存空間

當您為應用程式設定可靜音儲存空間時,它會指派給應用程式的元件標識碼,且無法由具有不同元件標識碼的應用程式存取。 如果應用程式的元件標識碼變更,新應用程式將無法存取先前應用程式的可靜音儲存空間。

如果您從裝置刪除應用程式,指派給應用程式的可靜音儲存空間也會一併刪除。 如果將相同的應用程式載入回裝置上,可靜音的儲存空間將會是空白的。 不過,如果您更新應用程式而不刪除,則會保留可靜音的儲存內容。

az 球形裝置應用程式顯示配額命令會顯示目前使用的可靜音儲存空間量。

Azure 球體 OS 具有電源外洩保護機制,可避免損毀關鍵組態狀態和文件系統元數據。 這些功能可讓您使用可靜音的儲存空間 API。 不過,可靜音儲存空間的實際內容取決於是否依何種順序排清緩衝區,因此不保證在電源中斷時,所有擱置的變更都會在復原後反映在檔案本身中。

您可以使用這些 Applibs 函數來管理可靜音儲存資料:

可靜音儲存空間需求

使用可靜音儲存空間的應用程式必須包含適當的頁首檔案,並將可靜音儲存空間設定新增至 應用程式指令清單

可靜音儲存空間的頁首檔案

在專案中包含儲存空間與未儲存的標頭:

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

應用程式指令清單

若要使用本主題中的 API,您必須將此 MutableStorage 功能新增至 應用程式指令清單 ,然後設定欄位 SizeKB 。 SizeKB 字段是一個整數,可指定 Kibib 的可靜音儲存空間大小。 最大值為 64,儲存空間會根據裝置的清除封鎖大小配置。 如果值不是裝置區塊大小的完整倍數,則會將 SizeKB 值四捨五入至下一個區塊大小,以完成配置。

注意

MT3620 的清除區塊大小為8 KB,因此任何不是8之倍數的值都會進位。 例如,如果您在「MutableStorage」功能中指定 12 KB,您將會在 MT3620 上收到 16 KB。

在下列範例中,將 MutableStorage 儲存功能新增至大小為 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
  }
}

撰寫永續性數據

若要將數據寫入持續性儲存空間,請先呼叫 Applibs 函 數Storage_OpenMutableFile 以擷取永續性數據檔的檔案描述。 接下來,請呼叫函 write 數,將數據寫入永續性數據檔。 如果您嘗試寫入的數據量超過靜音儲存配置,寫入函數可能會成功;不過,撰寫的唯一數據會是不會超過儲存空間配置的部分。 若要確保已撰寫所有數據,您必須檢查函數呼叫的 write 傳回值。

朗讀永續性數據

若要讀取持續性儲存呼叫 中的數據,Storage_OpenMutableFile 擷取永續性數據檔的檔案描述,然後呼叫函 read 數來讀取數據。

刪除永續性數據

若要從持續性儲存通話中刪除數據 ,請Storage_DeleteMutableFile