Overzicht van Azure Sphere-toepassingen

Azure Sphere-apparaten kunnen twee typen toepassingen uitvoeren:

  • Toepassingen op hoog niveau worden in containers uitgevoerd in het Azure Sphere-besturingssysteem
  • Realtime compatibele toepassingen (RTApps) worden uitgevoerd op bare metal of met een realtime besturingssysteem (RTOS) op de realtime kernen

Er is een toepassing op hoog niveau vereist voor elk Azure Sphere-apparaat; RTApps zijn optioneel.

Toepassingen op hoog niveau

Elk Azure Sphere-apparaat heeft een toepassing op hoog niveau, die wordt uitgevoerd op het Azure Sphere-besturingssysteem en de toepassingsbibliotheken kan gebruiken. Een toepassing op hoog niveau kan:

  • Azure Sphere-randapparatuur configureren en gebruiken, zoals de gpio-pinnen (general-purpose input/output), universal asynchronous receiver/transmitters (UART's) en andere interfaces

  • Communiceren met RTApps

  • Communiceren met internet en cloudservices

  • Brokervertrouwensrelaties met andere apparaten en services via verificatie op basis van certificaten

Een toepassing op hoog niveau wordt uitgevoerd in een container in de gebruikersmodus Normale wereld, zoals beschreven in Wat is Azure Sphere?. De toepassingscontainer ondersteunt een subset van de POSIX-omgeving en een set toepassingsbibliotheken (Applibs) die specifiek zijn voor het Azure Sphere-besturingssysteem. De bibliotheken en functies die beschikbaar zijn voor toepassingen op hoog niveau zijn beperkt om ervoor te zorgen dat het platform veilig blijft en eenvoudig kan worden bijgewerkt. Toepassingen hebben alleen toegang tot de bibliotheken en runtimeservices die Microsoft biedt; er zijn geen directe bestands-I/O- en shell-toegang beschikbaar, naast andere beperkingen. Ontwikkelomgeving beschrijft de basis-API-set en introduceert de Azure Sphere-toepassingsbibliotheken die apparaatspecifieke functies ondersteunen.

Toepassingen op hoog niveau worden naar verwachting continu uitgevoerd en worden automatisch opnieuw gestart als ze stoppen of mislukken.

Een toepassing op hoog niveau maken biedt meer informatie over functies.

Toepassingen die geschikt zijn voor realtime

Een Azure Sphere-apparaat kan naast de toepassing op hoog niveau ook een of meer toepassingen hebben die geschikt zijn voor realtime. Een RTApp kan het volgende doen:

  • Randapparatuur configureren en gebruiken die zijn geïntegreerd in de Azure Sphere MCU, zoals de GPIO-pinnen en UART's
  • Communiceren met toepassingen op hoog niveau

RTApps kunnen worden uitgevoerd op bare metal of met een realtime besturingssysteem (RTOS). De Azure Sphere-voorbeeldopslagplaats op GitHub bevat een bare-metal HelloWorld-voorbeeld en een voorbeeld dat communicatie tussen kernen tussen hoog niveau en RTApps demonstreert. De Azure Samples-opslagplaats op GitHub bevat een voorbeeld dat laat zien hoe u Azure Sphere gebruikt met Azure RTOS.

Aanvullende stuurprogramma's en voorbeelden voor RTApps die gericht zijn op de M4 realtime kernen op de MT3620-chip, zijn beschikbaar op GitHub van Azure Sphere-partners MediaTek en Codethink.

Elke RTApp wordt geïsoleerd uitgevoerd op een bepaalde I/O-kern en kan alleen communiceren met een toepassing op hoog niveau; het kan geen gebruik maken van internet, de Azure Sphere-applibs of andere functies van het Azure Sphere-besturingssysteem.

Create a real-time capable application (Create a real-time capable application ) biedt meer informatie over de functies en het ontwikkelingsproces voor RTApps.

Functies die gemeenschappelijk zijn voor alle toepassingen

Ondanks de aanzienlijke verschillen tussen apps op hoog niveau en RTApps, hebben alle Azure Sphere-toepassingen een aantal dingen gemeen. U kunt beide typen toepassingen ontwikkelen, bouwen en fouten opsporen met behulp van Visual Studio of Visual Studio Code, of door CMake en Ninja aan te roepen met behulp van de CLI.

Bovendien zijn de volgende beveiligingsfuncties van toepassing op zowel high-level als RTApps:

Toepassingsmogelijkheden

Ongeacht waar deze wordt uitgevoerd, moet elke Azure Sphere-toepassing de externe services en interfaces opgeven die nodig zijn, bijvoorbeeld de I/O- en netwerkvereisten, om onbevoegd of onverwacht gebruik te voorkomen.

Toepassingsmogelijkheden zijn de resources die een toepassing vereist. Toepassingsmogelijkheden omvatten onder andere de randapparatuur die de toepassing gebruikt, de internethosts waarmee een toepassing op hoog niveau verbinding maakt en machtigingen voor het wijzigen van de netwerkconfiguratie. Elke toepassing moet een toepassingsmanifest hebben waarmee deze resources worden geïdentificeerd.

Apparaatmogelijkheden

Een apparaatmogelijkheid maakt een apparaatspecifieke activiteit mogelijk. Apparaatmogelijkheden worden verleend door de Azure Sphere-beveiligingsservice. Azure Sphere-chips hebben standaard geen apparaatmogelijkheden. Er zijn twee hoofdtypen apparaatmogelijkheden: de appDevelopment-apparaatmogelijkheid en de fieldServicing-apparaatmogelijkheid .

De appDevelopment-apparaatmogelijkheid wijzigt het type ondertekening dat het apparaat vertrouwt. Azure Sphere-apparaten vertrouwen standaard productieondertekende installatiekopieënpakketten, maar geen SDK-ondertekende installatiekopieënpakketten. Als gevolg hiervan kunt u een SDK-ondertekend installatiekopieënpakket niet sideloaden naar een Azure Sphere-apparaat dat niet over deze mogelijkheid beschikt. Wanneer de appDevelopment-mogelijkheid echter aanwezig is, vertrouwt het apparaat SDK-ondertekende installatiekopieën. Bovendien kunt u hiermee een toepassing starten, stoppen, fouten opsporen of verwijderen van het apparaat. Kortom, de mogelijkheid voor het ontwikkelen van toepassingen moet aanwezig zijn op het apparaat voordat u het volgende kunt doen:

  • Sideload een installatiekopiepakket dat is gebouwd door Visual Studio of de opdracht azsphere image-package .
  • Start, stop, debug of verwijder een installatiekopieënpakket van het Azure Sphere-apparaat, ongeacht hoe het installatiekopieënpakket is ondertekend.

Met de opdracht az sphere device enable-development maakt en past u de appDevelopment-mogelijkheid toe en voorkomt u dat het apparaat cloudtoepassingsupdates ontvangt.

De fieldServicing-mogelijkheid staat apparaat-naar-computer communicatie toe op apparaten die zich in de productiestatus DeviceComplete bevinden. Met deze mogelijkheid kunt u door productie ondertekende installatiekopieën sideloaden, maar niet verwijderen. U kunt toepassingen starten en stoppen, maar geen fouten opsporen. U kunt ook routineonderhoudstaken uitvoeren, zoals het configureren van Wi-Fi. Het is bedoeld voor kort gebruik tijdens een onderhoudssessie, een beperkte periode waarin toegang tot het apparaat per bewerking wordt verleend.

Vereisten voor ondertekening en implementatie

Alle installatiekopiepakketten die zijn geïmplementeerd op een Azure Sphere-apparaat, moeten zijn ondertekend. De Azure Sphere SDK en de opdracht az sphere image-package ondertekenen installatiekopieënpakketten om te testen met behulp van een SDK-ondertekeningssleutel. Azure Sphere-apparaten vertrouwen deze sleutel alleen als de appDevelopment-apparaatmogelijkheid ook aanwezig is.

De Azure Sphere Security Service-productieondertekening installatiekopieënpakketten wanneer u ze uploadt naar de cloud. Productieondertekende installatiekopieën kunnen sideloaden of worden geladen vanuit de cloud.

Om de installatie van rogue software te voorkomen, kunnen toepassingen op slechts twee manieren op een Azure Sphere-apparaat worden geladen:

  • Sideloading, die kan worden gebruikt voor zowel softwareontwikkeling en -testen als voor service buiten het veld van apparaten. Voor sideloading voor softwareontwikkeling en -testen is de appDevelopment-apparaatmogelijkheid vereist. Voor sideloading voor veldonderhoud zijn de fieldServicing device capability en production-signed image packages vereist. Zowel Visual Studio als Visual Studio Code sideload toepassingen tijdens ontwikkeling en foutopsporing; u kunt ook handmatig sideloaden met behulp van de Azure CLI.

  • Cloudupdate, die alleen kan worden uitgevoerd door de Azure Sphere-beveiligingsservice. Gebruik de Azure CLI om cloudimplementaties te maken en te beheren.

Partnertoepassingen

Toepassingen die samenwerken, kunnen worden beschouwd als partnertoepassingen en kunnen vervolgens afzonderlijk worden sideloaden. Wanneer u een toepassing met een partner sideload, blijft de partnertoepassing op het Azure Sphere-apparaat staan als deze al is geïmplementeerd. Elke toepassing declareert een lijst met partners in de projectconfiguratie.

Als u partners wilt toevoegen aan de CMake-projectconfiguratie, geeft u de onderdeel-id van de partner-app op in het veld partnerComponents van de sectie configuraties van het bestand launch.vs.json of het bestand .vscode/launch.json:

"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Apps op hoog niveau en RTApps die met elkaar communiceren, moeten worden geïdentificeerd als partners. Azure Sphere biedt geen ondersteuning voor communicatie tussen paren van apps op hoog niveau of paren van RTApps.