Översikt över Azure Sphere-program

Azure Sphere-enheter kan köra två typer av program:

  • Program på hög nivå kör behållare i Azure Sphere-operativsystemet
  • Real-time capable applications (RTApps) run on bare metal or with a real-time operating system (RTOS) on the real-time cores

Ett program på hög nivå krävs för varje Azure Sphere-enhet. RTApps är valfria.

Program på hög nivå

Alla Azure Sphere-enheter har ett program på hög nivå som körs på Azure Sphere-operativsystemet och kan använda programbiblioteken. Ett program på hög nivå kan:

  • Konfigurera och interagera med Azure Sphere-kringutrustning, till exempel GPIO-stift (General-Purpose Input/Output), UARTs (Universell asynkron mottagare/sändare) och andra gränssnitt

  • Kommunicera med RTApps

  • Kommunicera med Internet och molnbaserade tjänster

  • Mäklarförtroenderelationer med andra enheter och tjänster via certifikatbaserad autentisering

Ett högnivåprogram körs i en behållare i normalvärldsanvändarläge enligt beskrivningen i Vad är Azure Sphere?. Programbehållaren har stöd för en delmängd av POSIX-miljön och en uppsättning programbibliotek (Applibs) som är specifika för Azure Sphere-operativsystemet. Biblioteken och funktionerna som är tillgängliga för program på hög nivå är begränsade för att säkerställa att plattformen förblir säker och enkelt kan uppdateras. Program kan bara komma åt de bibliotek och körningstjänster som Microsoft tillhandahåller. varken direkt fil-I/O eller gränssnittsåtkomst är tillgängliga, bland andra villkor. I utvecklingsmiljön beskrivs api-basuppsättningen och azure sphere-programbiblioteken som stöder enhetsspecifika funktioner introduceras.

Program på hög nivå förväntas köras kontinuerligt och startas om automatiskt om de stoppas eller misslyckas.

Skapa ett program på hög nivå som ger mer information om funktioner.

Program som kan användas i realtid

En Azure Sphere-enhet kan också ha ett eller flera kompatibla realtidsprogram utöver dess program på hög nivå. En RTApp kan:

  • Konfigurera och interagera med kringutrustning som är integrerad i Azure Sphere MCU, till exempel GPIO-stift och UARTs
  • Kommunicera med program på hög nivå

RTApps kan köras antingen på bar metall eller med ett realtidsoperativsystem (RTOS). Azure Sphere-exempelrepomentet på GitHub innehåller ett HelloWorld-prov av bar metall samt ett prov som visar kommunikation mellan hög nivå och RTApps. Azure Samples-repo på GitHub innehåller ett exempel som visar hur du använder Azure Sphere med Azure RTOS.

Ytterligare drivrutiner och exempel för RTApps som riktar sig till M4-realtidskärnor på MT3620-chipet är tillgängliga på GitHub från Azure Sphere-partner MediaTek och Codethink.

Varje RTApp körs isolerad på en viss I/O-kärna och kan bara kommunicera med en hög nivå program; Den kan inte använda Internet, Azure Sphere-applibs eller andra funktioner i Azure Sphere OS.

Skapa ett kompatibelt program i realtid ger mer information om funktionerna och utvecklingsprocessen för RTApps.

Funktioner som är gemensamma för alla program

Trots de stora skillnaderna mellan appar på hög nivå och RTApps har alla Azure Sphere-program vissa saker gemensamt. Du kan utveckla, skapa och felsöka båda typerna av program med Visual Studio eller Visual Studio Code, eller genom att anropa CMake och Ninja med CLI.

Dessutom gäller följande säkerhetsfunktioner för både högnivå- och RTApps:

Programfunktioner

Oavsett var det körs måste alla Azure Sphere-program ange de externa tjänster och gränssnitt som krävs, till exempel dess I/O- och nätverkskrav, för att förhindra obehörig eller oväntad användning.

Programfunktioner är de resurser som krävs för ett program. Programfunktionerna omfattar kringutrustningen som programmet använder, internetvärdarna som ett program på hög nivå ansluter till och behörighet att ändra nätverkskonfigurationen, bland annat. Alla program måste ha ett programmanifest som identifierar dessa resurser.

Enhetsfunktioner

En enhetsfunktion möjliggör en enhetsspecifik aktivitet. Enhetsfunktioner beviljas av Azure Sphere-säkerhetstjänsten. Som standard har Azure Sphere-kretsar inga enhetsfunktioner. Det finns två huvudsakliga typer av enhetsfunktioner: funktionen appUtvecklingsenhet och funktionen fieldServicing-enhet .

Funktionen appUtvecklingsenhet ändrar vilken typ av signering som enheten litar på. Som standard litar Azure Sphere-enheter på produktionssignerade avbildningspaket men litar inte på SDK-signerade avbildningspaket. Därför kan du inte separat läsa in ett SDK-signerat avbildningspaket till en Azure Sphere-enhet som inte har den här funktionen. När funktionen appUtveckling finns litar dock enheten på SDK-signerade avbildningspaket. Dessutom kan du starta, stoppa, felsöka eller ta bort ett program från enheten. Sammanfattningsvis måste funktionen för programutveckling finnas på enheten innan du kan:

  • Separat inlästa ett avbildningspaket som har skapats av Visual Studio eller kommandot azsfärbildpaket .
  • Starta, stoppa, felsöka eller ta bort ett avbildningspaket från Azure Sphere-enheten, oavsett hur avbildningspaketet är signerat.

Aktivera-utvecklingskommandot för az sphere-enheten skapar och tillämpar appUtvecklingsfunktionen och förhindrar att enheten tar emot uppdateringar av molnprogram.

FieldServicing-funktionen tillåter kommunikation från enhet till dator på enheter som är i tillverkningstillståndet DeviceComplete. Med den här funktionen kan du använda separat inläsning av produktionssignerade avbildningar, men inte ta bort dem. Du kan starta och stoppa program, men inte felsöka dem. Du kan också utföra rutinmässiga underhållsåtgärder, till exempel konfigurera Wi-Fi. Den är avsedd för kortvarig användning under en underhållssession, en begränsad period under vilken åtkomst till enheten beviljas per operation.

Krav för signering och distribution

Alla avbildningspaket som distribueras till en Azure Sphere-enhet måste vara signerade. Azure Sphere SDK och az sphere-avbildningspaketet signerar avbildningspaket för testning med en SDK-signeringsnyckel. Azure Sphere-enheter litar bara på den här nyckeln om funktionen för appUtvecklingsenhet också finns.

Produktionsskyltar för Azure Sphere Security Service-avbildningspaket när du laddar upp dem till molnet. Produktionssignerade avbildningspaket kan läsas in separat eller läsas in från molnet.

För att förhindra installation av oseriösa program kan program endast läsas in på en Azure Sphere-enhet på två sätt:

  • Separat inläsning, som kan användas både för programvaruutveckling och testning och för fältunderhåll av enheter. Separat inläsning för programvaruutveckling och testning kräver appUtvecklingsenhetens kapacitet. Separat inläsning för fältunderhåll kräver fieldServicing-enhetsfunktioner och produktionssignerade avbildningspaket. Både Visual Studio och Visual Studio Code separat inläsning av program under utveckling och felsökning; du kan också läsa in separat manuellt med hjälp av Azure CLI.

  • Molnuppdatering, som endast kan utföras av Azure Sphere-säkerhetstjänsten. Använd Azure CLI för att skapa och hantera molndistributioner.

Partnerprogram

Program som fungerar tillsammans kan betraktas som partnerprogram och kan sedan läsas in separat. När du separat inläser ett program som har en partner finns partnerprogrammet kvar på Azure Sphere-enheten om det redan har distribuerats. Varje ansökan deklarerar en lista över sina partner i projektkonfigurationen.

Om du vill lägga till partner i konfigurationen av CMake-projekt anger du komponent-ID för partnerappen i fältet partnerkomponenter i konfigurationsavsnittet i launch.vs.json- eller .vscode/launch.json-filen:

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

Appar på hög nivå och RTApps som kommunicerar med varandra måste identifieras som partner. Azure Sphere stöder inte kommunikation mellan par med appar på hög nivå eller rtapppar.