Manifest van de toepassing
Belangrijk
Dit is de Documentatie voor Azure Sphere (verouderd). Azure Sphere (verouderd) wordt op 27 september 2027 buiten gebruik gesteld en gebruikers moeten tegen deze tijd migreren naar Azure Sphere (geïntegreerd). Gebruik de versiekiezer boven de inhoudsweergave om de Documentatie van Azure Sphere (geïntegreerd) weer te geven.
Het toepassingsmanifest beschrijft de resources, ook wel toepassingsmogelijkheden genoemd, die een toepassing nodig heeft. Elke toepassing heeft een toepassingsmanifest.
Toepassingen moeten zich aanmelden voor het gebruik van mogelijkheden door elke vereiste resource in de sectie Mogelijkheden van het toepassingsmanifest weer te geven. Standaard zijn er geen mogelijkheden ingeschakeld. Als een toepassing een mogelijkheid aanvraagt die niet wordt vermeld, mislukt de aanvraag. Als het manifestbestand van de toepassing fouten bevat, mislukt het laden van de toepassing. Het manifest van elke toepassing moet worden opgeslagen als app_manifest.json in de hoofdmap van de toepassingsmap op uw pc.
Met de Azure Sphere-sjabloon wordt automatisch een standaardtoepassingsmanifest gemaakt wanneer u een toepassing maakt. U moet het standaardmanifest bewerken om de mogelijkheden weer te geven die uw toepassing nodig heeft. Elk Azure Sphere-voorbeeld bevat ook een toepassingsmanifest. Als u uw toepassing baseeert op een voorbeeld, moet u waarschijnlijk ook het manifest bewerken.
Verschillende Azure Sphere-apparaten kunnen functies van de chip op verschillende manieren beschikbaar maken. Als gevolg hiervan kan de waarde die u in het manifest gebruikt om een bepaalde functie, zoals een GPIO-pin, te identificeren, variëren, afhankelijk van de hardware waarvoor u ontwikkelt. Beheer doelhardwareafhankelijkheden biedt meer informatie over hardwaredoelen voor een toepassing op hoog niveau. Gebruik in het toepassingsmanifest voor een toepassing op hoog niveau de constanten die zijn gedefinieerd in het JSON-bestand in de map HardwareDefinitions van de installatiemap van de Microsoft Azure Sphere SDK. De exacte locatie van de installatiemap verschilt in Windows en Linux. Gebruik in een realtime geschikte toepassing (RTApp) de onbewerkte waarden die worden vermeld in de inhoud van het toepassingsmanifest.
Wanneer een toepassing sideloaden of op het apparaat wordt geïmplementeerd, leest de Azure Sphere-runtime het toepassingsmanifest om te bepalen welke mogelijkheden de toepassing mag gebruiken. Pogingen om toegang te krijgen tot resources die niet in het manifest worden vermeld, leiden tot API-fouten zoals EPERM (machtiging geweigerd). Slechts één toepassing op het apparaat kan een resource gebruiken. Als u een toepassing installeert die een resource aanvraagt die al in gebruik is, mislukt de poging.
Inhoud van het toepassingsmanifest
Het toepassingsmanifest bevat de volgende items:
Name | Beschrijving |
---|---|
SchemaVersion | Versie van het toepassingsmanifestschema dat wordt gebruikt. Dit moet momenteel 1 zijn. Vereist. |
Naam | Naam van de toepassing. Bij het maken van een project wordt deze waarde ingesteld op de naam van het project. De naam kan elke lengte hebben, maar alleen de eerste 31 tekens worden opgeslagen in het installatiekopieënpakket; de naam wordt dus afgekapt weergegeven in vragen over het installatiekopieënpakket. Vereist. |
ComponentId | Id van het onderdeel. Visual Studio maakt deze id wanneer u de toepassing bouwt. Als u Visual Studio niet gebruikt, raadpleegt u Een onderdeel-id genereren voor informatie over het maken van de id. Vereist. |
EntryPoint | Naam van het uitvoerbare bestand samen met het relatieve pad in de installatiekopie van het bestandssysteem van de toepassing, die wordt gemaakt wanneer de toepassing wordt gebouwd. Visual Studio gebruikt momenteel /bin/app voor deze waarde. Vereist. |
CmdArgs | Argumenten die moeten worden doorgegeven aan de toepassing bij het opstarten. Plaats elk argument tussen dubbele aanhalingstekens en afzonderlijke argumenten met een komma. Optioneel. |
TargetBetaApis | Hiermee geeft u op dat voor de toepassing bèta-API's zijn vereist en wordt de set bèta-API's geïdentificeerd die worden gebruikt. Dit veld wordt automatisch toegevoegd tijdens het buildproces als de toepassing wordt gebouwd met behulp van bèta-API's. Optioneel. Zie Bètafuncties gebruiken voor meer informatie. |
ApplicationType | Type toepassing. Optioneel. Stel deze optie alleen in op Foutopsporingsprogramma als u een vervanging voor gdbserver bouwt. |
Mogelijkheden | Lijst met sleutel-waardeparen die vereisten voor toepassingsresources opgeven. Vereist. |
MallocVersion | Een geheel getal dat de versie van malloc aangeeft, waarbij 1=standaard en 2=mallocng, een verbeterde malloc beschikbaar zijn in MUSL-versies die groter zijn dan 1.2.1. Versie 2 wordt aanbevolen voor alle nieuwe app-ontwikkeling. |
De sectie Capabilities ondersteunt het volgende:
Notitie
Toepassingen op hoog niveau kunnen capaciteitswaarden uit hardwaredefinitiebestanden gebruiken of ze kunnen onbewerkte waarden gebruiken. U kunt beide waardetypen echter niet combineren in dezelfde mogelijkheid. RTApps kan alleen onbewerkte waarden gebruiken voor mogelijkheden.
Name | Beschrijving |
---|---|
Adc | De ADC-controller (analog-to-digital conversion) die door de toepassing wordt gebruikt. Deze mogelijkheid behoudt zich de volledige ADC-controller (die bestaat uit een blok met 8 pinnen), niet alleen 0 vastmaken in het blok. Geef in een toepassing op hoog niveau de randapparaatnaam op die is gedeclareerd in het headerbestand van de hardwaredefinitie. Geef in een RTApp de AppManifestValue op die is gedeclareerd in het JSON-bestand van de hardwaredefinitie. Voorbeeld van hardwaredefinitie: "Adc": [ "$MT3620_RDB_ADC_CONTROLLER0" ] Voorbeeld van onbewerkte waarde: "Adc": [ "ADC-CONTROLLER-0" ] API-verwijzing: Applibs adc.h Conceptueel: ADC's gebruiken op Azure Sphere |
AllowedApplicationConnections | Een lijst met toepassingsonderdeel-id's waarmee de toepassing verbinding mag maken. Voorbeeld: "AllowedApplicationConnections": [ "005180BC-402F-4CB3-A662-72937DBCDE47" ] API-verwijzing: Applibs application.h Conceptueel: Communiceren met een toepassing op hoog niveau |
AllowedConnections | Een lijst met DNS-hostnamen of IP-adressen (IPv4) waarmee de toepassing verbinding mag maken. Als de toepassing gebruikmaakt van een Azure IoT Hub, moet de lijst het IP-adres of de DNS-hostnaam voor de hub bevatten, meestal hub-name.azure-devices.net. Poortnummers en jokertekens in namen en IP-adressen worden niet geaccepteerd. Voorbeeld: "AllowedConnections" : [ "my-hub.example.net", "global.azure-devices-provisioning.net" ] |
AllowedTcpServerPorts | Een lijst met poorten die binnenkomend TCP-verkeer toestaan. U kunt maximaal 10 poorten opnemen en elke poort moet afzonderlijk worden vermeld. De ondersteunde poorten zijn 1024 tot 65535. U kunt dezelfde poorten opgeven voor ZOWEL TCP als UDP. Als u echter dezelfde poort opgeeft voor meer dan één app op het apparaat, kan de tweede app die moet worden uitgevoerd, niet laden. Voorbeeld: "AllowedTcpServerPorts": [ 1024, 65535 ] |
AllowedUdpServerPorts | Een lijst met poorten waarmee binnenkomend UDP-verkeer is toegestaan. U kunt maximaal 10 poorten opnemen en elke poort moet afzonderlijk worden vermeld. De ondersteunde poorten zijn 1024 tot 65535. U kunt dezelfde poorten opgeven voor ZOWEL TCP als UDP. Als u echter dezelfde poort opgeeft voor meer dan één app op het apparaat, kan de tweede app die moet worden uitgevoerd, niet laden. Voorbeeld: "AllowedUdpServerPorts": [ 1024, 50000 ] |
CertStore | Een Booleaanse waarde die aangeeft of een app op hoog niveau gemachtigd is om certificaten te beheren met de CertStore-API: waar om de API in te schakelen; anders, onwaar. Voorbeeld: "CertStore" : true |
DeviceAuthentication | Een tekenreeks die de UUID van de Azure Sphere-tenant aangeeft die moet worden gebruikt voor apparaatverificatie. Voorbeeld: "DeviceAuthentication": "77304f1f-9530-4157-8598-30bc1f3d66f0" |
DhcpService | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om de DHCP-service te configureren: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "DhcpService" : true API-verwijzing: Applibs networking.h Conceptueel: Netwerkservices gebruiken |
EnterpriseWifiConfig | Een Booleaanse waarde die aangeeft of een toepassing op hoog niveau gemachtigd is om een EAP-TLS-netwerk te maken en er certificaten aan te koppelen: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "EnterpriseWifiConfig" : true |
ExternalInterrupt | Een lijst met externe interrupts die een RTApp gebruikt. Deze mogelijkheid is niet beschikbaar voor toepassingen op hoog niveau. Voorbeeld: "ExternalInterrupt": [ "EINT4", "EINT12" ] |
Gpio | Een lijst met GPIO's die door de toepassing worden gebruikt. Geef in een toepassing op hoog niveau de GPIO-naam op die wordt gedeclareerd in het headerbestand van de hardwaredefinitie, zoals $MT 3620_RDB_LED1_RED. Geef in een RTApp de gehele getallen op die overeenkomen met de GPIO-nummers in het JSON-bestand met de hardwaredefinitie. Bijvoorbeeld, 8 geeft GPIO 8. Voorbeeld van hardwaredefinitie: "Gpio": [ "$MT3620_RDB_HEADER1_PIN6_GPIO", "$MT3620_RDB_LED1_RED", "$MT3620_RDB_BUTTON_A" ] Voorbeeld van onbewerkte waarde: "Gpio": [ 8, 12 ] API-verwijzing: Applibs gpio.h Conceptueel: GPIOs gebruiken op Azure Sphere |
HardwareAddressConfig | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om het hardwareadres van de netwerkinterface te configureren: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "HardwareAddressConfig" : true API-verwijzing: Applibs networking.h Conceptueel: Netwerkservices gebruiken |
HeapMemStats | Een Booleaanse waarde die aangeeft of het bijhouden van heap-geheugentoewijzing is ingeschakeld: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "HeapMemStats": true Conceptueel:Geheugengebruik in toepassingen op hoog niveau |
I2cMaster | Een lijst met I2C-hoofdinterfaces die door de toepassing worden gebruikt. Geef in een toepassing op hoog niveau de randapparaatnaam op die is gedeclareerd in het headerbestand van de hardwaredefinitie. Geef in een RTApp de AppManifestValue op die is gedeclareerd in het JSON-bestand van de hardwaredefinitie. Voorbeeld van hardwaredefinitie: "I2cMaster": [ "$MT3620_RDB_HEADER2_ISU0_I2C", "$MT3620_RDB_HEADER4_ISU1_I2C" ] Voorbeeld van onbewerkte waarde: "I2cMaster": [ "ISU0", "ISU1" ] API-verwijzing: Applibs i2c.h Conceptueel: I2C gebruiken met Azure Sphere |
I2sSubördinaat | De onderliggende interface van Inter-IC Sound (I2S) die wordt gebruikt door een RTApp. Deze mogelijkheid is niet beschikbaar voor toepassingen op hoog niveau. Voorbeeld van onbewerkte waarde: "I2sSubördinaat": [ "I2S0", "I2S1" ] |
MutableStorage | Veranderlijke opslaginstellingen waarmee de toepassing permanente opslag kan gebruiken. Voorbeeld: "MutableStorage" : { "SizeKB": 64, } API-verwijzing: Applibs storage.h Conceptueel: Opslag gebruiken op Azure Sphere |
NetworkConfig | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om een netwerkinterface te configureren: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "NetworkConfig" : true API-verwijzing: Applibs networking.h Conceptueel: Netwerkservices gebruiken |
PowerControls | Een matrix met tekenreeksen die gedetailleerde mogelijkheden vertegenwoordigen om de energiestatus van het apparaat te beheren. ForcePowerDown en ForceReboot zijn de enige ondersteunde waarden. Waarschuwing: Omdat ForcePowerDown en ForceReboot toestaan dat een toepassing alle toepassingen onmiddellijk beëindigt, moet u ervoor zorgen dat uw apparaat nog steeds besturingssysteem- en toepassingsupdates kan ontvangen. Zie Force Power Down en updates voor meer informatie en richtlijnen. Voorbeeld: "PowerControls": ["ForcePowerDown", "ForceReboot"] API-verwijzing: Applibs powermanagement.h Conceptueel: Power-downstatus voor Azure Sphere-apparaten beheren |
Pwm | De pulse-width modulator (PWM) die door de toepassing wordt gebruikt. Geef in een toepassing op hoog niveau de randapparaatnaam op die is gedeclareerd in het headerbestand van de hardwaredefinitie. Geef in een RTApp de AppManifestValue op die is gedeclareerd in het JSON-bestand van de hardwaredefinitie. Voorbeeld van hardwaredefinitie: "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ] Voorbeeld van onbewerkte waarde: "Pwm": [ "PWM-CONTROLLER-0" ] API-verwijzing: Applibs pwm.h Conceptueel: PWM's gebruiken in toepassingen op hoog niveau |
ReadNetworkProxyConfig | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om de proxyconfiguratie op te halen: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "ReadNetworkProxyConfig": true API-verwijzing: Applibs networking.h Conceptueel: Verbinding maken met webservices |
SntpService | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om de SNTP-service te configureren: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "SntpService" : true API-verwijzing: Applibs networking.h Conceptueel: SNTP-server |
SoftwareUpdateDeferral | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om software-updates gedurende een beperkte periode uit te stellen: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "SoftwareUpdateDeferral" : true API-verwijzing: Applibs eventloop.h Conceptueel: Apparaatupdates uitstellen |
SpiMaster | Een lijst met SPI-masterinterfaces die door de toepassing worden gebruikt. Geef in een toepassing op hoog niveau de randapparaatnaam op die is gedeclareerd in het headerbestand van de hardwaredefinitie. Geef in een RTApp de AppManifestValue op die is gedeclareerd in het JSON-bestand van de hardwaredefinitie. Voorbeeld van hardwaredefinitie: "SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ] Voorbeeld van onbewerkte waarde: "SpiMaster": [ "ISU0", "ISU1" ] API-verwijzing: Applibs spi.h Conceptueel: SPI gebruiken met Azure Sphere |
SystemEventNotifications | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om meldingen van systeemgebeurtenissen te ontvangen: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "SystemEventNotifications" : true API-verwijzing: Applibs sysevent.h Conceptueel: Apparaatupdates uitstellen |
SystemTime | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om de systeemtijd te configureren: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "SystemTime" : true API-verwijzing: Applibs rtc.h Conceptueel: Systeemtijd en RTC op Azure Sphere beheren |
TimeSyncConfig | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om de time-sync-service te configureren: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "TimeSyncConfig" : true |
Uart | Een lijst met UART-randapparatuur die door de toepassing wordt gebruikt. Met deze mogelijkheid wordt de toegewezen UART niet ingeschakeld op een MT3620-ontwikkelbord. Zie Een toepassing in realtime bouwen voor meer informatie over de toegewezen UART. Geef in een toepassing op hoog niveau de randapparaatnaam op die is gedeclareerd in het headerbestand van de hardwaredefinitie. Geef in een RTApp de AppManifestValue op die is gedeclareerd in het JSON-bestand van de hardwaredefinitie. Voorbeeld van hardwaredefinitie: "Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ] Voorbeeld van onbewerkte waarde: "Uart": [ "ISU0", "ISU1" ] API-verwijzing: Applibs uart.h Conceptueel: UART gebruiken op Azure Sphere |
WifiConfig | Een Booleaanse waarde die aangeeft of de toepassing gemachtigd is om de WifiConfig-API te gebruiken om de Wi-Fi-configuratie te wijzigen: waar als de toepassing de mogelijkheid heeft; anders, onwaar. Voorbeeld: "WifiConfig" : true API-verwijzing: Applibs wificonfig.h Conceptueel: Netwerken configureren |
De sectie MutableStorage ondersteunt het volgende:
Name | Beschrijving |
---|---|
Grootte kB | Een geheel getal dat de grootte van veranderlijke opslag in kibibytes aangeeft. De maximumwaarde is 64. Een waarde van 0 is gelijk aan het niet hebben van de onveranderbare opslagmogelijkheid. |
Opmerking
Hieronder ziet u een voorbeeldbestand app_manifest.json voor een toepassing op hoog niveau die is gericht op de MT3620 RDB-hardware:
{
"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
}
Het voorbeeldbestand app_manifest.json voor MyTestApp doet het volgende:
- Geeft vier opdrachtregelargumenten door aan de app.
- Alleen verbindingen met de DNS-hosts my-hub.example.net, contoso.azure-devices.net en global.azure-devices-provisioning.net toestaan.
- Hiermee staat u binnenkomend TCP-verkeer toe op poorten 1024 en 65535.
- Staat binnenkomend UDP-verkeer toe op poorten 1024 en 50000.
- Hiermee geeft u een Azure Sphere-tenant op die moet worden gebruikt voor apparaatverificatie en verbindingen met Device Provisioning Service toestaan.
- Hiermee geeft u het gebruik van drie GPIO's.
- Hiermee kan de toepassing het hardwareadres van de netwerkinterface configureren.
- Hiermee geeft u het gebruik van één UART-randapparaat.
- Hiermee kunt u onveranderbare opslag met 64 kibibytes aan opslagruimte inschakelen.
- Hiermee kan de app de WifiConfig-API gebruiken om de Wi-Fi-configuratie te wijzigen.
- Hiermee geeft u het gebruik van één SPI-masterinterface.
- Hiermee geeft u het gebruik van één I2C-masterinterface.
- Hiermee kan de app systeemtijd configureren met behulp van de RTC-API.
- Maakt mallocng mogelijk voor app-ontwikkeling.