Azure Sphere'de depolamayı kullanma
Bu konu başlığında Azure Sphere cihazında depolamanın nasıl kullanılacağı açıklanmaktadır. Azure Sphere, salt okunur flash depolama ve değiştirilebilir depolama olmak üzere iki tür depolama alanı sağlar.
Uygulama görüntüsü paketlerini bir cihazda depolamak için salt okunur depolama kullanılır, bu nedenle içerik, uygulamayı güncelleştirmeden değiştirilemez. Bu, kullanıcı arabirimi varlıkları, statik yapılandırma verileri, dış MCU'ları güncelleştirmek için kullanılan üretici yazılımı görüntüleri dahil olmak üzere ikili kaynaklar veya değiştirilebilir depolama için başlatma verileri gibi tüm verileri içerebilir. Uygulamalar için kullanılabilir bellek , kullanılabilir depolama alanı miktarı hakkında ek ayrıntılar sağlar.
Mutable storage, cihaz yeniden başlatıldığında kalıcı olan verileri depolar. Örneğin, yerel saat dilimini kullanarak sistem saatini yönetmek istiyorsanız, saat dilimi ayarlarını değiştirilebilir depolama alanında depolayabilirsiniz. Diğer örneklerden bazıları, kullanıcının değiştirebileceği veya indirebileceği yapılandırma verileridir. Değiştirilebilir depolama örneği, bir uygulamada değiştirilebilir depolamanın nasıl kullanılacağını gösterir.
Not
Flash'ın tekrar tekrar güncelleştirilmesi sonunda yıpranıyor ve geçersiz hale geliyor. Bu nedenle, flash'ın gereksiz güncelleştirmelerini önlemek için kodunuzu tasarlamanız gerekir. Örneğin, yeniden başlatma işleminden sonra kaydedilen durumu kurtarabilmek için uygulama durumunuzu çıkmadan önce kaydetmek istiyorsanız, uygulamanın durumunu yalnızca durum değiştiyse flash'a kaydetmeyi göz önünde bulundurun.
Salt okunur depolama kullanma
Salt okunur depolamayı yönetmek için bu Applibs işlevlerini kullanabilirsiniz. Bu işlevleri kullanan bir örnek için bkz. Curl kullanarak web hizmetlerine bağlanma.
Salt okunur depolama gereksinimleri
Salt okunur depolama kullanan uygulamalar uygun üst bilgi dosyalarını içermelidir.
Depolama alanını ve kaydedilmemiş üst bilgileri projenize ekleyin:
#include <unistd.h>
#include <applibs/storage.h>
Görüntü paketine dosya ekleme
Azure Sphere cihazında salt okunur depolama alanına dosya eklemek için dosyayı projenize kaynak olarak ekleyebilir ve uygulamanın görüntü paketine ekleyebilirsiniz:
Azsphere_target_add_image_package kullanarak görüntü paketi dosyasını ve oluştururken eklenecek tüm kaynak dosyalarını belirtin. Örneğin:
azsphere_target_add_image_package(${PROJECT_NAME} RESOURCE_FILES "file1.dat" "file2.dat")
"file1.dat" ve "file2.dat" dosyaları artık görüntü paketinde görünmelidir. Bu işlevler hakkında daha fazla bilgi için bkz . CMake işlevlerini kullanma .
Not
Mutlak yollar RESOURCE_FILES için desteklenmez.
Değiştirilebilir depolama kullanma
Uygulamanız için değiştirilebilir depolamayı yapılandırdığınızda, uygulamanın bileşen kimliğine atanır ve farklı bir bileşen kimliğine sahip bir uygulama tarafından erişilemez. Uygulamanın bileşen kimliği değişirse, yeni uygulamanın önceki uygulamanın değiştirilebilir depolama alanına erişimi olmaz.
Bir uygulamayı bir cihazdan silerseniz, uygulamaya atanan değiştirilebilir depolama alanı da silinir. Aynı uygulama daha sonra cihaza yeniden yüklenirse, değiştirilebilir depolama alanı boş olur. Ancak, uygulamayı silmeden güncelleştirirseniz, değiştirilebilir depolama içeriği korunur.
az sphere device app show-quota komutu şu anda kullanılmakta olan değiştirilebilir depolama miktarını görüntüler.
Azure Sphere işletim sistemi, kritik yapılandırma durumu ve dosya sistemi meta verilerinin bozulmasını önlemek için güç kaybı koruma mekanizmalarına sahiptir. Değiştirilebilir depolama API'sinin avantajları bu özelliklerdir. Ancak, değiştirilebilir depolamanın gerçek içeriği arabelleklerin boşaltılıp boşaltılmadığına ve hangi sırayla boşaltılacağına bağlıdır, bu nedenle güç kaybı sırasında bekleyen tüm değişikliklerin kurtarmadan sonra dosyanın kendisine yansıtılacağı garanti edilemez.
Bu Applibs işlevlerini, değiştirilebilir depolama verilerini yönetmek için kullanabilirsiniz:
Değiştirilebilir depolama gereksinimleri
Değiştirilebilir depolama kullanan uygulamaların uygun üst bilgi dosyalarını içermesi ve uygulama bildirimine değiştirilebilir depolama ayarları eklemesi gerekir.
Değiştirilebilir depolama için üst bilgi dosyaları
Depolama alanını ve kaydedilmemiş üst bilgileri projenize ekleyin:
#include <unistd.h>
#include <applibs/storage.h>
Uygulama bildirimi
Bu konudaki API'leri kullanmak için, özelliği uygulama bildirimine eklemeniz MutableStorage
ve ardından alanı ayarlamanız SizeKB
gerekir. SizeKB alanı, değiştirilebilir depolama alanınızın boyutunu kibibayt cinsinden belirten bir tamsayıdır. Maksimum değer 64'tür ve depolama alanı cihazın silme bloğu boyutuna göre ayrılır. Ayırma işlemi, cihazın blok boyutunun tam katı değilse SizeKB değerini bir sonraki blok boyutuna yuvarlayarak yapılır.
Not
MT3620'nin silme bloğu boyutu 8 KB olduğundan, 8'in katları olmayan tüm değerler yuvarlanacaktır. Örneğin, 'MutableStorage' özelliğinde 12 KB belirtirseniz, MT3620 üzerinde 16 KB alırsınız.
Aşağıdaki örnekte, MutableStorage depolama özelliği uygulama bildirimine 8 KB boyutunda eklenmiştir.
{
"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
}
}
Kalıcı veri yazma
Kalıcı depolamaya veri yazmak için applibs işlevini çağırarak başlayın Storage_OpenMutableFile kalıcı bir veri dosyası için dosya tanımlayıcısı alın. Ardından, verileri kalıcı veri dosyasına yazmak için işlevini çağırın write
. Yazmaya çalıştığınız veri miktarı, değiştirilebilir depolama ayırmanızı aşarsa, yazma işlevi başarılı olabilir; ancak, yazılan tek veri depolama ayırmasını aşmayan kısım olacaktır. Tüm verilerin yazılmasını sağlamak için işlev çağrısının dönüş değerini write
denetlemeniz gerekir.
Kalıcı verileri okuma
Kalıcı depolama çağrısından verileri okumak için , kalıcı veri dosyası için bir dosya tanımlayıcısı almak üzere Storage_OpenMutableFile ve ardından verileri okumak için işlevini çağırın read
.
Kalıcı verileri silme
Kalıcı depolama çağrısından verileri silmek için Storage_DeleteMutableFile.