Share via


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 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 farklılık gösterebilir. 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 iç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. Cihazdaki yalnızca bir uygulama kaynak 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:

Adı Açıklama
SchemaVersion Kullanımda olan 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 ad, görüntü paketiyle ilgili sorgularda kesilmiş olarak görünür. Gerekli.
Componentıd 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 uygulama oluşturulduğunda oluşturulan uygulamanın dosya sistemi görüntüsündeki göreli yol. Visual Studio şu anda bu değer için /bin/app kullanıyor. Gerekli.
CmdArgs Başlangıçta uygulamaya geçirecek 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'ler 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ısı olarak yalnızca gdbserver için bir değiştirme oluşturuyorsanız ayarlayın.
Yetenek -lerini Uygulama kaynağı 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, her iki değer türünü de aynı özellikte karıştıramazsınız. RTApps, özellikler için yalnızca ham değerleri kullanabilir.

Adı Açıklama
Adc Uygulama tarafından kullanılan analogdan dijitale dönüştürme (ADC) denetleyicisi. Bu özellik ADC denetleyicisinin tamamını (8 raptiye bloğundan oluşur) ayırarak bloktaki 0'ı sabitler.
Ü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, listede hub için IP adresi veya DNS ana bilgisayar adı (genellikle hub-name.azure-devices.net) bulunmalıdır. Adlarda ve IP adreslerinde bağlantı noktası numaraları ve 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ı ayrı ayrı listelenmelidir. Desteklenen bağlantı noktaları 1024 ile 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ı ayrı ayrı listelenmelidir. Desteklenen bağlantı noktaları 1024 ile 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 uygulamalar tarafından 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 izni 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 uygulamalar tarafından 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 bir dizi dize. 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ştirmeler.
Ö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 proxy 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: uygulamanın özelliği varsa 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 iznine sahip olup olmadığını gösteren boole değeri: uygulamanın özelliği varsa true; aksi takdirde false.
Örnek:"SystemEventNotifications" : true
API başvurusu:Applibs sysevent.h
Kavramsal:Cihaz güncelleştirmelerini erteleme
Systemtıme 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: uygulamanın özelliği varsa 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 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:

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 olmamaya eşdeğerdir.

Örnek

Aşağıda , MT3620 RDB donanımını hedefleyen üst düzey bir uygulama için örnek bir 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ı 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 saatini yapılandırmasına olanak tanır.
  • Uygulama geliştirme için mallocng'a olanak tanır.