Bagikan melalui


Manifes aplikasi

Manifes aplikasi menjelaskan sumber daya, juga disebut kemampuan aplikasi, yang diperlukan aplikasi. Setiap aplikasi memiliki manifes aplikasi.

Aplikasi harus memilih untuk menggunakan kemampuan dengan mencantumkan setiap sumber daya yang diperlukan di bagian Kemampuan manifes aplikasi; tidak ada kemampuan yang diaktifkan secara default. Jika aplikasi meminta kemampuan yang tidak tercantum, permintaan gagal. Jika file manifes aplikasi berisi kesalahan, upaya untuk membungkus sisi aplikasi gagal. Setiap manifes aplikasi harus disimpan sebagai app_manifest.json di direktori akar folder aplikasi di PC Anda.

Templat Azure Sphere secara otomatis membuat manifes aplikasi default saat Anda membuat aplikasi. Anda harus mengedit manifes default untuk mencantumkan kemampuan yang diperlukan aplikasi Anda. Setiap sampel Azure Sphere juga menyertakan manifes aplikasi. Jika Anda mendasarkan aplikasi Anda pada sampel, Anda mungkin juga perlu mengedit manifes.

Perangkat Azure Sphere yang berbeda dapat mengekspos fitur chip dengan cara yang berbeda. Akibatnya, nilai yang Anda gunakan dalam manifes untuk mengidentifikasi fitur tertentu, seperti pin GPIO, dapat bervariasi tergantung pada perangkat keras yang Anda kembangkan. Mengelola dependensi perangkat keras target menyediakan informasi selengkapnya tentang target perangkat keras untuk aplikasi tingkat tinggi. Dalam manifes aplikasi untuk aplikasi tingkat tinggi, gunakan konstanta yang ditentukan dalam file JSON di folder HardwareDefinitions dari direktori penginstalan Microsoft Azure Sphere SDK. Lokasi pasti direktori penginstalan akan berbeda di Windows dan Linux. Dalam aplikasi berkemampuan real time (RTApp), gunakan nilai mentah yang tercantum dalam Konten manifes aplikasi.

Ketika aplikasi apa pun dimuat samping atau disebarkan ke perangkat, runtime Azure Sphere membaca manifes aplikasi untuk memastikan kemampuan mana yang diizinkan untuk digunakan aplikasi. Upaya untuk mengakses sumber daya yang tidak tercantum dalam manifes akan mengakibatkan kesalahan API seperti EPERM (izin ditolak). Hanya satu aplikasi pada perangkat yang dapat menggunakan sumber daya. Jika Anda menginstal aplikasi yang meminta sumber daya yang sudah digunakan, upaya akan gagal.

Konten manifes aplikasi

Manifes aplikasi mencakup item berikut:

Nama Deskripsi
SchemaVersion Versi skema manifes aplikasi yang digunakan. Saat ini harus 1. Harus diisi.
Nama Nama aplikasi. Pada pembuatan proyek, nilai ini diatur ke nama proyek. Panjang nama bisa berapa saja, tetapi hanya 31 karakter pertama yang disimpan dalam paket gambar; dengan demikian nama muncul terpotong dalam pertanyaan tentang paket gambar. Harus diisi.
ComponentId ID komponen. Visual Studio membuat ID ini saat Anda membuat aplikasi. Jika Anda tidak menggunakan Visual Studio, lihat Membuat ID komponen untuk informasi tentang membuat ID. Harus diisi.
EntryPoint Nama yang dapat dieksekusi bersama dengan jalur relatif dalam gambar sistem file aplikasi, yang dibuat saat aplikasi dibangun. Visual Studio saat ini menggunakan /bin/app untuk nilai ini. Harus diisi.
CmdArgs Argumen untuk diteruskan ke aplikasi saat startup. Sertakan setiap argumen dalam tanda kutip ganda dan argumen terpisah dengan koma. Opsional.
TargetBetaApis Menentukan bahwa aplikasi memerlukan API Beta dan mengidentifikasi set API Beta yang digunakan. Bidang ini secara otomatis ditambahkan selama proses build jika aplikasi dibuat menggunakan API Beta. Opsional. Lihat Menggunakan fitur beta untuk detailnya.
ApplicationType Jenis Aplikasi. Opsional. Atur ke Debugger hanya jika Anda membangun pengganti gdbserver.
Kemampuan Daftar pasangan kunci/nilai yang menentukan persyaratan sumber daya aplikasi. Harus diisi.
MallocVersion Bilangan bulat yang menentukan versi malloc, dengan 1=standar dan 2=mallocng, malloc yang ditingkatkan yang tersedia dalam versi MUSL lebih besar dari 1.2.1. Versi 2 direkomendasikan untuk semua pengembangan aplikasi baru.

Bagian Kapabilitas mendukung hal berikut:

Catatan

Aplikasi tingkat tinggi dapat menggunakan nilai kemampuan dari file definisi perangkat keras atau dapat menggunakan nilai mentah. Namun, Anda tidak dapat mencampur kedua jenis nilai dalam kemampuan yang sama. RTApps hanya dapat menggunakan nilai mentah untuk kemampuan.

Nama Deskripsi
Adc Pengontrol konversi analog-ke-digital (ADC) yang digunakan oleh aplikasi. Kemampuan ini mencadangkan seluruh pengontrol ADC (yang terdiri dari blok 8-pin), bukan hanya sematkan 0 di blok.
Dalam aplikasi tingkat tinggi, tentukan nama periferal yang dideklarasikan dalam file header definisi perangkat keras.
Dalam RTApp, tentukan AppManifestValue yang dideklarasikan dalam file JSON definisi perangkat keras.
Contoh definisi perangkat keras: "Adc": [ "$MT3620_RDB_ADC_CONTROLLER0" ]
Contoh nilai mentah: "Adc": [ "ADC-CONTROLLER-0" ]
Referensi API: Applibs adc.h
Konseptual: Menggunakan ADC di Azure Sphere
AllowedApplicationConnections Daftar ID komponen aplikasi tempat aplikasi diizinkan untuk terhubung.
Contoh: "AllowedApplicationConnections": [ "005180BC-402F-4CB3-A662-72937DBCDE47" ]
Referensi API: Applibs application.h
Konseptual: Berkomunikasi dengan aplikasi tingkat tinggi
AllowedConnections Daftar nama host DNS atau alamat IP (IPv4) tempat aplikasi diizinkan untuk terhubung. Jika aplikasi menggunakan Azure IoT Hub, daftar harus menyertakan alamat IP atau nama host DNS untuk hub, biasanya hub-name.azure-devices.net. Nomor port dan karakter kartubebas dalam nama dan alamat IP tidak diterima.
Contoh: "AllowedConnections" : [ "my-hub.example.net", "global.azure-devices-provisioning.net" ]
AllowedTcpServerPorts Daftar port yang memungkinkan lalu lintas TCP masuk. Anda dapat menyertakan hingga 10 port, dan setiap port harus dicantumkan satu per satu. Port yang didukung adalah 1024 hingga 65535. Anda dapat menentukan port yang sama untuk TCP dan UDP. Namun, jika Anda menentukan port yang sama untuk lebih dari satu aplikasi di perangkat, aplikasi kedua yang dijalankan akan gagal dimuat.
Contoh: "AllowedTcpServerPorts": [ 1024, 65535 ]
AllowedUdpServerPorts Daftar port yang memungkinkan lalu lintas UDP masuk. Anda dapat menyertakan hingga 10 port, dan setiap port harus dicantumkan satu per satu. Port yang didukung adalah 1024 hingga 65535. Anda dapat menentukan port yang sama untuk TCP dan UDP. Namun, jika Anda menentukan port yang sama untuk lebih dari satu aplikasi di perangkat, aplikasi kedua yang dijalankan akan gagal dimuat.
Contoh: "AllowedUdpServerPorts": [ 1024, 50000 ]
CertStore Boolean yang menunjukkan apakah aplikasi tingkat tinggi memiliki izin untuk mengelola sertifikat dengan CertStore API: true untuk mengaktifkan API; jika tidak, salah.
Contoh: "CertStore" : true
DeviceAuthentication String yang menentukan UUID penyewa Azure Sphere (Warisan) untuk digunakan untuk autentikasi perangkat.
Contoh: "DeviceAuthentication": "77304f1f-9530-4157-8598-30bc1f3d66f0"
DhcpService Boolean yang menunjukkan apakah aplikasi memiliki izin untuk mengonfigurasi layanan DHCP: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "DhcpService" : true
Referensi API: Applibs networking.h
Konseptual: Menggunakan layanan jaringan
EnterpriseWifiConfig Boolean yang menunjukkan apakah aplikasi tingkat tinggi memiliki izin untuk membuat jaringan EAP-TLS dan mengaitkan sertifikat dengannya: benar jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "EnterpriseWifiConfig" : true
ExternalInterrupt Daftar gangguan eksternal yang digunakan RTApp. Kemampuan ini tidak tersedia untuk aplikasi tingkat tinggi.
Contoh: "ExternalInterrupt": [ "EINT4", "EINT12" ]
Gpio Daftar GPIO yang digunakan aplikasi.
Dalam aplikasi tingkat tinggi, tentukan nama GPIO yang dideklarasikan dalam file header definisi perangkat keras, seperti $MT 3620_RDB_LED1_RED.
Dalam RTApp, tentukan bilangan bulat yang sesuai dengan nomor GPIO dalam file JSON definisi perangkat keras. Misalnya, 8 menentukan GPIO 8.
Contoh definisi perangkat keras: "Gpio": [ "$MT3620_RDB_HEADER1_PIN6_GPIO", "$MT3620_RDB_LED1_RED", "$MT3620_RDB_BUTTON_A" ]
Contoh nilai mentah: "Gpio": [ 8, 12 ]
Referensi API: Applibs gpio.h
Konseptual: Menggunakan GPO di Azure Sphere
HardwareAddressConfig Boolean yang menunjukkan apakah aplikasi memiliki izin untuk mengonfigurasi alamat perangkat keras antarmuka jaringan: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh:"HardwareAddressConfig" : true
Referensi API: Applibs networking.h
Konseptual: Menggunakan layanan jaringan
HeapMemStats Boolean yang menunjukkan apakah pelacakan alokasi memori tumpukan diaktifkan: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "HeapMemStats": true
Konseptual:Penggunaan memori dalam aplikasi tingkat tinggi
I2cMaster Daftar antarmuka master I2C yang digunakan oleh aplikasi.
Dalam aplikasi tingkat tinggi, tentukan nama periferal yang dideklarasikan dalam file header definisi perangkat keras.
Dalam RTApp, tentukan AppManifestValue yang dideklarasikan dalam file JSON definisi perangkat keras.
Contoh definisi perangkat keras: "I2cMaster": [ "$MT3620_RDB_HEADER2_ISU0_I2C", "$MT3620_RDB_HEADER4_ISU1_I2C" ]
Contoh nilai mentah: "I2cMaster": [ "ISU0", "ISU1" ]
Referensi API: Applibs i2c.h
Konseptual: Menggunakan I2C dengan Azure Sphere
I2sSubordinate Antarmuka bawahan Inter-IC Sound (I2S) yang digunakan oleh RTApp. Kemampuan ini tidak tersedia untuk aplikasi tingkat tinggi. Contoh nilai mentah: "I2sSubordinate": [ "I2S0", "I2S1" ]
MutableStorage Pengaturan penyimpanan yang dapat diubah yang memungkinkan aplikasi menggunakan penyimpanan persisten.
Contoh: "MutableStorage" : { "SizeKB": 64, }
Referensi API: Applibs storage.h
Konseptual: Menggunakan penyimpanan di Azure Sphere
NetworkConfig Boolean yang menunjukkan apakah aplikasi memiliki izin untuk mengonfigurasi antarmuka jaringan: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "NetworkConfig" : true
Referensi API: Applibs networking.h
Konseptual: Menggunakan layanan jaringan
PowerControls Array string yang mewakili kemampuan terperinci untuk mengontrol status daya perangkat. ForcePowerDown dan ForceReboot adalah satu-satunya nilai yang didukung.
Peringatan: Karena ForcePowerDown dan ForceReboot memungkinkan aplikasi untuk segera menghentikan semua aplikasi, Anda harus memastikan perangkat Anda masih dapat menerima pembaruan sistem operasi dan aplikasi. Untuk informasi dan panduan selengkapnya, lihat Memaksa Power Down dan pembaruan.
Contoh: "PowerControls": ["ForcePowerDown", "ForceReboot"]
Referensi API: Applibs powermanagement.h
Konseptual: Mengelola status power-down untuk perangkat Azure Sphere
Pwm Modulator lebar pulsa (PWM) yang digunakan oleh aplikasi.
Dalam aplikasi tingkat tinggi, tentukan nama periferal yang dideklarasikan dalam file header definisi perangkat keras.
Dalam RTApp, tentukan AppManifestValue yang dideklarasikan dalam file JSON definisi perangkat keras.
Contoh definisi perangkat keras: "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]
Contoh nilai mentah: "Pwm": [ "PWM-CONTROLLER-0" ]
Referensi API: Applibs pwm.h
Konseptual: Menggunakan PWM dalam aplikasi tingkat tinggi
ReadNetworkProxyConfig Boolean yang menunjukkan apakah aplikasi memiliki izin untuk mengambil konfigurasi proksi: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "ReadNetworkProxyConfig": true
Referensi API: Applibs networking.h
Konseptual: Menyambungkan ke layanan web
SntpService Boolean yang menunjukkan apakah aplikasi memiliki izin untuk mengonfigurasi layanan SNTP: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "SntpService" : true
Referensi API: Applibs networking.h
Konseptual: Server SNTP
SoftwareUpdateDeferral Boolean yang menunjukkan apakah aplikasi memiliki izin untuk menunggak pembaruan perangkat lunak selama periode terbatas: benar jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "SoftwareUpdateDeferral" : true
Referensi API: Applibs eventloop.h
Konseptual: Menuangkan pembaruan perangkat
SpiMaster Daftar antarmuka master SPI yang digunakan oleh aplikasi.
Dalam aplikasi tingkat tinggi, tentukan nama periferal yang dideklarasikan dalam file header definisi perangkat keras.
Dalam RTApp, tentukan AppManifestValue yang dideklarasikan dalam file JSON definisi perangkat keras.
Contoh definisi perangkat keras: "SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ]
Contoh nilai mentah: "SpiMaster": [ "ISU0", "ISU1" ]
Referensi API: Applibs spi.h
Konseptual: Menggunakan SPI dengan Azure Sphere
SystemEventNotifications Boolean yang menunjukkan apakah aplikasi memiliki izin untuk menerima pemberitahuan peristiwa sistem: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "SystemEventNotifications" : true
Referensi API: Applibs sysevent.h
Konseptual: Menuangkan pembaruan perangkat
SystemTime Boolean yang menunjukkan apakah aplikasi memiliki izin untuk mengonfigurasi waktu sistem: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "SystemTime" : true
Referensi API: Applibs rtc.h
Konseptual: Mengelola waktu sistem dan RTC di Azure Sphere
TimeSyncConfig Boolean yang menunjukkan apakah aplikasi memiliki izin untuk mengonfigurasi layanan sinkronisasi waktu: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "TimeSyncConfig" : true
Uart Daftar periferal UART yang digunakan aplikasi. Kemampuan ini tidak mengaktifkan UART khusus pada papan pengembangan MT3620. Untuk informasi tentang UART khusus, lihat Membangun aplikasi berkemampu real time.
Dalam aplikasi tingkat tinggi, tentukan nama periferal yang dideklarasikan dalam file header definisi perangkat keras.
Dalam RTApp, tentukan AppManifestValue yang dideklarasikan dalam file JSON definisi perangkat keras.
Contoh definisi perangkat keras: "Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ]
Contoh nilai mentah: "Uart": [ "ISU0", "ISU1" ]
Referensi API: Applibs uart.h
Konseptual: Menggunakan UART di Azure Sphere
WifiConfig Boolean yang menunjukkan apakah aplikasi memiliki izin untuk menggunakan API WifiConfig untuk mengubah konfigurasi Wi-Fi: true jika aplikasi memiliki kemampuan; jika tidak, salah.
Contoh: "WifiConfig" : true
Referensi API: Applibs wificonfig.h
Konseptual: Mengonfigurasi jaringan

Bagian MutableStorage mendukung hal berikut:

Nama Deskripsi
SizeKB Bilangan bulat yang menentukan ukuran penyimpanan yang dapat diubah dalam kibibyte. Nilai maksimum adalah 64. Nilai 0 setara dengan tidak memiliki kemampuan penyimpanan yang dapat diubah.

Contoh

Berikut ini menunjukkan contoh file app_manifest.json untuk aplikasi tingkat tinggi yang menargetkan perangkat keras MT3620 RDB:

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

Contoh file app_manifest.json untuk MyTestApp melakukan hal berikut:

  • Meneruskan empat argumen baris perintah ke aplikasi.
  • Hanya mengizinkan koneksi ke host DNS my-hub.example.net, contoso.azure-devices.net, dan global.azure-devices-provisioning.net.
  • Memungkinkan lalu lintas TCP masuk pada port 1024 dan 65535.
  • Memungkinkan lalu lintas UDP masuk pada port 1024 dan 50000.
  • Menentukan UUID penyewa Azure Sphere (Warisan) untuk digunakan untuk autentikasi perangkat dan mengizinkan koneksi ke Device Provisioning Service.
  • Menentukan penggunaan tiga GPO.
  • Memungkinkan aplikasi untuk mengonfigurasi alamat perangkat keras antarmuka jaringan.
  • Menentukan penggunaan satu periferal UART.
  • Memungkinkan penyimpanan yang dapat diubah dengan ruang penyimpanan 64 kibibyte.
  • Memungkinkan aplikasi menggunakan API WifiConfig untuk mengubah konfigurasi Wi-Fi.
  • Menentukan penggunaan satu antarmuka master SPI.
  • Menentukan penggunaan satu antarmuka master I2C.
  • Memungkinkan aplikasi mengonfigurasi waktu sistem menggunakan API RTC.
  • Mengaktifkan mallocng untuk pengembangan aplikasi.