Aracılığıyla paylaş


Uygulama bildirimi

Uygulama bildirimi, bir uygulamanın gerektirdiği uygulama özellikleri olarak da adlandırılan kaynakları açıklar. Her uygulamanın bir uygulama bildirimi vardır.

Uygulamalar, gerekli her kaynağı uygulama bildiriminin Özellikler bölümünde listeleyerek özellikleri kullanmayı kabul etmelidir; varsayılan olarak hiçbir özellik etkinleştirilmez. Bir uygulama listelenmeyen bir özellik isterse, istek başarısız olur. Uygulama bildirim dosyasında hatalar varsa, uygulamayı dışarıdan yükleme denemeleri başarısız olur. Her uygulamanın bildirimi, bilgisayarınızdaki uygulama klasörünün kök dizininde app_manifest.json olarak depolanmalıdır.

Bir uygulama oluşturduğunuzda Azure Sphere şablonu otomatik olarak bir varsayılan uygulama bildirimi oluşturur. Uygulamanızın gerektirdiği özellikleri listelemek için varsayılan bildirimi düzenlemeniz gerekir. Her Azure Sphere örneği bir uygulama bildirimi de içerir. Uygulamanızı bir örneğe dayandırırsanız, büyük olasılıkla bildirimi de düzenlemeniz gerekir.

Farklı Azure Sphere cihazları yonganın özelliklerini farklı şekillerde kullanıma sunabilir. Sonuç olarak, GPIO pini gibi belirli bir özelliği tanımlamak için bildirimde kullandığınız değer, geliştirmekte olduğunuz donanıma bağlı olarak değişebilir. Hedef donanım bağımlılıklarını yönetme, üst düzey bir uygulama için donanım hedefleri hakkında daha fazla bilgi sağlar. Üst düzey bir uygulamanın uygulama bildiriminde, Microsoft Azure Sphere SDK yükleme dizininin HardwareDefinitions klasöründeki JSON dosyasında tanımlanan sabitleri kullanın. Yükleme dizininin tam konumu Windows ve Linux'ta farklılık gösterir. Gerçek zamanlı özellikli bir uygulamada (RTApp), uygulama bildiriminin İçeriği bölümünde listelenen ham değerleri kullanın.

Herhangi bir uygulama dışarıdan yüklendiğinde veya cihaza dağıtıldığında, Azure Sphere çalışma zamanı uygulamanın hangi özellikleri kullanabileceğini belirlemek için uygulama bildirimini okur. Bildirimde listelenmeyen kaynaklara erişme girişimleri EPERM (izin reddedildi) gibi API hatalarına neden olur. Bir kaynağı cihazdaki yalnızca bir uygulama kullanabilir. Zaten kullanımda olan bir kaynağı isteyen bir uygulama yüklerseniz, deneme başarısız olur.

Uygulama bildiriminin içeriği

Uygulama bildirimi aşağıdaki öğeleri içerir:

Veri Akışı Adı Açıklama
SchemaVersion Kullanımdaki uygulama bildirimi şemasının sürümü. Şu anda 1 olmalıdır. Gerekli.
Ad Uygulamanın adı. Proje oluşturulurken, bu değer projenin adına ayarlanır. Ad herhangi bir uzunlukta olabilir, ancak görüntü paketinde yalnızca ilk 31 karakter depolanır; bu nedenle, görüntü paketiyle ilgili sorgularda ad kesilmiş olarak görünür. Gerekli.
ComponentId Bileşenin kimliği. Uygulamayı oluştururken Visual Studio bu kimliği oluşturur. Visual Studio kullanmıyorsanız, kimliği oluşturma hakkında bilgi için bkz . Bileşen kimliği oluşturma. Gerekli.
EntryPoint Yürütülebilir dosyanın adı ve uygulamanın dosya sistemi görüntüsündeki göreli yol, uygulama oluşturulduğunda oluşturulur. Visual Studio şu anda bu değer için /bin/app kullanıyor. Gerekli.
CmdArgs Başlangıçta uygulamaya geçirmek için bağımsız değişkenler. Her bağımsız değişkeni çift tırnak içine alın ve bağımsız değişkenleri virgülle ayırın. isteğe bağlı.
TargetBetaApis Uygulamanın Beta API'leri gerektirdiğini belirtir ve kullanılan Beta API'leri kümesini tanımlar. Uygulama Beta API'leri kullanılarak oluşturulduysa bu alan derleme işlemi sırasında otomatik olarak eklenir. isteğe bağlı. Ayrıntılar için bkz . Beta özelliklerini kullanma.
ApplicationType Uygulama türü. isteğe bağlı. Hata Ayıklayıcı olarak yalnızca gdbserver yerine bir değişiklik oluşturuyorsanız ayarlayın.
Özellikler Uygulama kaynak gereksinimlerini belirten anahtar/değer çiftlerinin listesi. Gerekli.
MallocVersion 1.2.1'den büyük MUSL sürümlerinde kullanılabilen gelişmiş bir malloc olan 1=standard ve 2=mallocng'un bulunduğu malloc sürümünü belirten bir tamsayı. Sürüm 2, tüm yeni uygulama geliştirmeleri için önerilir.

Özellikler bölümü aşağıdakileri destekler:

Not

Üst düzey uygulamalar donanım tanımı dosyalarındaki yetenek değerlerini veya ham değerleri kullanabilir. Ancak, aynı özellikteki her iki değer türünü de karıştıramazsınız. RTApps, özellikler için yalnızca ham değerleri kullanabilir.

Veri Akışı Adı Açıklama
Adc Uygulama tarafından kullanılan analogdan dijitale dönüştürme (ADC) denetleyicisi. Bu özellik, yalnızca bloktaki 0'ı sabitlemek için değil, tüm ADC denetleyicisini (8 pinli bir blok içerir) ayırır.
Üst düzey bir uygulamada, donanım tanımı üst bilgi dosyasında bildirilen çevre birimi adını belirtin.
RTApp'te, donanım tanımı JSON dosyasında bildirilen AppManifestValue değerini belirtin.
Donanım tanımı örneği: "Adc": [ "$MT3620_RDB_ADC_CONTROLLER0" ]
Ham değer örneği: "Adc": [ "ADC-CONTROLLER-0" ]
API başvurusu: Applibs adc.h
Kavramsal: Azure Sphere'da ADC'leri kullanma
AllowedApplicationConnections Uygulamanın bağlanmasına izin verilen uygulama bileşeni kimliklerinin listesi.
Örnek: "AllowedApplicationConnections": [ "005180BC-402F-4CB3-A662-72937DBCDE47" ]
API başvurusu: Applibs application.h
Kavramsal: Üst düzey bir uygulamayla iletişim kurma
AllowedConnections Uygulamanın bağlanmasına izin verilen DNS ana bilgisayar adlarının veya IP adreslerinin (IPv4) listesi. Uygulama bir Azure IoT Hub kullanıyorsa, listenin hub için IP adresini veya DNS ana bilgisayar adını (genellikle hub-name.azure-devices.net) içermesi gerekir. Bağlantı noktası numaraları ve adlarda ve IP adreslerinde joker karakterler kabul edilmemektedir.
Örnek: "AllowedConnections" : [ "my-hub.example.net", "global.azure-devices-provisioning.net" ]
AllowedTcpServerPorts Gelen TCP trafiğine izin veren bağlantı noktalarının listesi. En fazla 10 bağlantı noktası ekleyebilirsiniz ve her bağlantı noktasının ayrı ayrı listelenmiş olması gerekir. Desteklenen bağlantı noktaları 1024 - 65535'tır. Hem TCP hem de UDP için aynı bağlantı noktalarını belirtebilirsiniz. Ancak, cihazdaki birden fazla uygulama için aynı bağlantı noktasını belirtirseniz, çalıştırılacak ikinci uygulama yüklenemiyor.
Örnek: "AllowedTcpServerPorts": [ 1024, 65535 ]
AllowedUdpServerPorts Gelen UDP trafiğine izin veren bağlantı noktalarının listesi. En fazla 10 bağlantı noktası ekleyebilirsiniz ve her bağlantı noktasının ayrı ayrı listelenmiş olması gerekir. Desteklenen bağlantı noktaları 1024 - 65535'tır. Hem TCP hem de UDP için aynı bağlantı noktalarını belirtebilirsiniz. Ancak, cihazdaki birden fazla uygulama için aynı bağlantı noktasını belirtirseniz, çalıştırılacak ikinci uygulama yüklenemiyor.
Örnek: "AllowedUdpServerPorts": [ 1024, 50000 ]
CertStore Üst düzey bir uygulamanın CertStore API'siyle sertifikaları yönetme izni olup olmadığını gösteren Boole değeri: API'yi etkinleştirmek için true; aksi takdirde false.
Örnek: "CertStore" : true
DeviceAuthentication Cihaz kimlik doğrulaması için kullanılacak Azure Sphere kiracısının UUID değerini belirten dize.
Örnek: "DeviceAuthentication": "77304f1f-9530-4157-8598-30bc1f3d66f0"
DhcpService Uygulamanın DHCP hizmetini yapılandırma izni olup olmadığını gösteren Boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek: "DhcpService" : true
API başvurusu: Applibs networking.h
Kavramsal: Ağ hizmetlerini kullanma
EnterpriseWifiConfig Üst düzey bir uygulamanın EAP-TLS ağı oluşturma ve sertifikalarla ilişkilendirme izni olup olmadığını gösteren Boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek: "EnterpriseWifiConfig" : true
ExternalInterrupt RTApp'in kullandığı dış kesmelerin listesi. Bu özellik üst düzey uygulamalarda kullanılamaz.
Örnek: "ExternalInterrupt": [ "EINT4", "EINT12" ]
Gpio Uygulamanın kullandığı GPO'ların listesi.
Üst düzey bir uygulamada, $MT 3620_RDB_LED1_RED gibi donanım tanımı üst bilgi dosyasında bildirilen GPIO adını belirtin.
RTApp'te, donanım tanımı JSON dosyasındaki GPIO numaralarına karşılık gelen tamsayıları belirtin. Örneğin, 8 GPIO 8'i belirtir.
Donanım tanımı örneği: "Gpio": [ "$MT3620_RDB_HEADER1_PIN6_GPIO", "$MT3620_RDB_LED1_RED", "$MT3620_RDB_BUTTON_A" ]
Ham değer örneği: "Gpio": [ 8, 12 ]
API başvurusu: Applibs gpio.h
Kavramsal: Azure Sphere'da GPO'ları kullanma
HardwareAddressConfig Uygulamanın ağ arabiriminin donanım adresini yapılandırma iznine sahip olup olmadığını gösteren boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek:"HardwareAddressConfig" : true
API başvurusu: Applibs networking.h
Kavramsal: Ağ hizmetlerini kullanma
HeapMemStats Yığın bellek ayırma izlemesinin etkinleştirilip etkinleştirilmediğini gösteren boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek: "HeapMemStats": true
Kavramsal:Üst düzey uygulamalarda bellek kullanımı
I2cMaster Uygulama tarafından kullanılan I2C ana arabirimlerinin listesi.
Üst düzey bir uygulamada, donanım tanımı üst bilgi dosyasında bildirilen çevre birimi adını belirtin.
RTApp'te, donanım tanımı JSON dosyasında bildirilen AppManifestValue değerini belirtin.
Donanım tanımı örneği: "I2cMaster": [ "$MT3620_RDB_HEADER2_ISU0_I2C", "$MT3620_RDB_HEADER4_ISU1_I2C" ]
Ham değer örneği: "I2cMaster": [ "ISU0", "ISU1" ]
API başvurusu: Applibs i2c.h
Kavramsal: Azure Sphere ile I2C kullanma
I2sSubordinate RTApp tarafından kullanılan IC Arası Ses (I2S) alt arabirimi. Bu özellik üst düzey uygulamalarda kullanılamaz. Ham değer örneği: "I2sSubordinate": [ "I2S0", "I2S1" ]
MutableStorage Uygulamanın kalıcı depolama kullanmasını sağlayan değiştirilebilir depolama ayarları.
Örnek: "MutableStorage" : { "SizeKB": 64, }
API başvurusu: Applibs storage.h
Kavramsal: Azure Sphere'da depolamayı kullanma
NetworkConfig Uygulamanın bir ağ arabirimi yapılandırma izni olup olmadığını gösteren Boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek: "NetworkConfig" : true
API başvurusu: Applibs networking.h
Kavramsal: Ağ hizmetlerini kullanma
PowerControls Cihaz güç durumunu denetlemek için ayrıntılı özellikleri temsil eden dize dizisi. ForcePowerDown ve ForceReboot desteklenen tek değerlerdir.
Uyarı: ForcePowerDown ve ForceReboot bir uygulamanın tüm uygulamaları hemen sonlandırmasına olanak sağladığından, cihazınızın işletim sistemi ve uygulama güncelleştirmelerini almaya devam ettiğinden emin olmanız gerekir . Daha fazla bilgi ve kılavuz için bkz . Güç Azaltma ve güncelleştirmeleri zorlama.
Örnek: "PowerControls": ["ForcePowerDown", "ForceReboot"]
API başvurusu: Applibs powermanagement.h
Kavramsal: Azure Sphere cihazları için güç azaltma durumunu yönetme
Pwm Uygulama tarafından kullanılan darbe genişlikli modülatör (PWM).
Üst düzey bir uygulamada, donanım tanımı üst bilgi dosyasında bildirilen çevre birimi adını belirtin.
RTApp'te, donanım tanımı JSON dosyasında bildirilen AppManifestValue değerini belirtin.
Donanım tanımı örneği: "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]
Ham değer örneği: "Pwm": [ "PWM-CONTROLLER-0" ]
API başvurusu: Applibs pwm.h
Kavramsal: Üst düzey uygulamalarda PWM'leri kullanma
ReadNetworkProxyConfig Uygulamanın ara sunucu yapılandırmasını alma izni olup olmadığını gösteren boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek: "ReadNetworkProxyConfig": true
API başvurusu: Applibs networking.h
Kavramsal: Web hizmetlerine bağlanma
SntpService Uygulamanın SNTP hizmetini yapılandırma izni olup olmadığını gösteren boole değeri: uygulama özelliğine sahipse true; aksi takdirde false.
Örnek: "SntpService" : true
API başvurusu: Applibs networking.h
Kavramsal: SNTP sunucusu
SoftwareUpdateDeferral Uygulamanın sınırlı bir süre için yazılım güncelleştirmelerini erteleme izni olup olmadığını gösteren boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek: "SoftwareUpdateDeferral" : true
API başvurusu: Applibs eventloop.h
Kavramsal: Cihaz güncelleştirmelerini erteleme
SpiMaster Uygulama tarafından kullanılan SPI ana arabirimlerinin listesi.
Üst düzey bir uygulamada, donanım tanımı üst bilgi dosyasında bildirilen çevre birimi adını belirtin.
RTApp'te, donanım tanımı JSON dosyasında bildirilen AppManifestValue değerini belirtin.
Donanım tanımı örneği: "SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ]
Ham değer örneği: "SpiMaster": [ "ISU0", "ISU1" ]
API başvurusu: Applibs spi.h
Kavramsal: Azure Sphere ile SPI kullanma
SystemEventNotifications Uygulamanın sistem olay bildirimlerini alma izni olup olmadığını gösteren boole değeri: uygulama özelliğine sahipse true; aksi takdirde false.
Örnek: "SystemEventNotifications" : true
API başvurusu: Applibs sysevent.h
Kavramsal: Cihaz güncelleştirmelerini erteleme
SystemTime Uygulamanın sistem saatini yapılandırma izni olup olmadığını gösteren Boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek: "SystemTime" : true
API başvurusu: Applibs rtc.h
Kavramsal: Azure Sphere'da sistem saatini ve RTC'yi yönetme
TimeSyncConfig Uygulamanın zaman eşitleme hizmetini yapılandırma izni olup olmadığını gösteren boole değeri: uygulama özelliğine sahipse true; aksi takdirde false.
Örnek: "TimeSyncConfig" : true
Uart Uygulamanın kullandığı UART çevre birimlerinin listesi. Bu özellik, MT3620 geliştirme panosunda ayrılmış UART'ı etkinleştirmez. Ayrılmış UART hakkında bilgi için bkz . Gerçek zamanlı uyumlu bir uygulama oluşturma.
Üst düzey bir uygulamada, donanım tanımı üst bilgi dosyasında bildirilen çevre birimi adını belirtin.
RTApp'te, donanım tanımı JSON dosyasında bildirilen AppManifestValue değerini belirtin.
Donanım tanımı örneği: "Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ]
Ham değer örneği: "Uart": [ "ISU0", "ISU1" ]
API başvurusu: Applibs uart.h
Kavramsal: Azure Sphere'da UART kullanma
WifiConfig Uygulamanın Wi-Fi yapılandırmasını değiştirmek için WifiConfig API'sini kullanma izni olup olmadığını gösteren boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek: "WifiConfig" : true
API başvurusu: Applibs wificonfig.h
Kavramsal: Ağı yapılandırma

MutableStorage bölümü aşağıdakileri destekler:

Veri Akışı Adı Açıklama
Boyut KB Kibibayt cinsinden değiştirilebilir depolama boyutunu belirten bir tamsayı. En yüksek değer 64'dür. 0 değeri, değiştirilebilir depolama özelliğine sahip olmamasıyla eşdeğerdir.

Örnek

Aşağıda MT3620 RDB donanımını hedefleyen üst düzey bir uygulama için örnek app_manifest.json dosyası gösterilmektedir:

{
    "SchemaVersion": 1,
    "Name": "MyTestApp",
    "ComponentId": "072c9364-61d4-4303-86e0-b0f883c7ada2",
    "EntryPoint": "/bin/app",
    "CmdArgs": ["-m", "262144", "-t", "1"],
    "Capabilities": {
        "AllowedConnections" : [
            "my-hub.example.net",
            "contoso.azure-devices.net",
            "global.azure-devices-provisioning.net" ],
        "AllowedTcpServerPorts": [ 1024, 65535 ],
        "AllowedUdpServerPorts": [ 1024, 50000 ],
        "DeviceAuthentication": "77304f1f-9530-4157-8598-30bc1f3d66f0",
        "Gpio": [ "$MT3620_RDB_HEADER1_PIN6_GPIO", "$MT3620_RDB_LED1_RED", "$MT3620_RDB_BUTTON_A" ],
        "HardwareAddressConfig": true,
        "I2cMaster": [ "ISU2" ],
        "MutableStorage" : {
            "SizeKB": 64,
        },
        "SpiMaster": [ "ISU1" ],
        "SystemTime" : true,
        "Uart": [ "ISU0" ],
        "WifiConfig" : true
    },
    "ApplicationType": "Default",
    "MallocVersion": 2
}

MyTestApp için örnek app_manifest.json dosyası aşağıdakileri yapar:

  • Uygulamaya dört komut satırı bağımsız değişkeni geçirir.
  • Yalnızca MY-HUB.EXAMPLE.NET, contoso.azure-devices.net ve global.azure-devices-provisioning.net DNS konaklarına bağlantılara izin verir.
  • 1024 ve 65535 numaralı bağlantı noktalarında gelen TCP trafiğine izin verir.
  • 1024 ve 50000 numaralı bağlantı noktalarında gelen UDP trafiğine izin verir.
  • Cihaz kimlik doğrulaması için kullanılacak bir Azure Sphere kiracısını belirtir ve Cihaz Sağlama Hizmeti'ne bağlantılara izin verir.
  • Üç GPO'nun kullanımını belirtir.
  • Uygulamanın ağ arabiriminin donanım adresini yapılandırmasına izin verir.
  • Bir UART çevre biriminin kullanımını belirtir.
  • 64 kibibayt depolama alanı ile değiştirilebilir depolamayı etkinleştirir.
  • Uygulamanın Wi-Fi yapılandırmasını değiştirmek için WifiConfig API'sini kullanmasını sağlar.
  • Bir SPI ana arabiriminin kullanımını belirtir.
  • Bir I2C ana arabiriminin kullanımını belirtir.
  • Uygulamanın RTC API'sini kullanarak sistem zamanını yapılandırmasına olanak tanır.
  • Uygulama geliştirme için mallocng'a olanak tanır.