Enhetsfunktioner och kommunikation

Enhetsfunktionerna avgör enhetsspecifika OS-principer för service-UART-kommunikation. All kommunikation mellan värddatorn och en ansluten enhet sker via tjänsten UART. Värddatorn kommunicerar med en ansluten enhet för att utföra åtgärder på enheten. Tillverkare, programvaruutvecklare och tekniker för fälttjänster använder funktioner för att låsa upp service-UART-kommunikation för de åtgärder som de behöver samtidigt som de ser till att enheten skyddas mot skadliga användare.

Enhetstillverkare och OEM-tillverkare kan låsa service-UART-kommunikation för att förhindra obehörig användning av dem som har fysisk åtkomst till enheten. Att låsa sådan kommunikation är en del av slutförande av enheten. Efter slutförande kan en användare få ID:t för en enhet, men inget mer. alla andra åtgärder kräver en enhetsfunktion. Slutförande utförs vanligtvis på fabriksgolvet innan tillverkaren skickar enheten till en kundwebbplats.

En enhetsfunktionsfil innehåller endast noll eller fler funktioner för en enda enhet. Funktionsfilen fungerar inte om den tillämpas på en enhet som inte är den som den är avsedd för. En enhet kan ha följande funktioner, som var och en beskrivs senare i det här avsnittet:

Observera

Enhetsfunktioner är inte relaterade till programfunktioner. Programfunktionerna anger de resurser som krävs för ett program vid körning. Mer information om programfunktioner finns i programmanifestet .

Så här avgör du enhetsfunktioner eller tillverkningstillstånd

För att fastställa funktionskonfigurationen som lagras på den anslutna enheten använder du kommandot az sphere device capability show-attached . Kommandot visar de funktioner som är konfigurerade med hjälp av en funktionsfil och vissa, men inte alla, funktioner som finns som standard på anslagstavlor.

Enhetens funktioner kan påverkas av enhetens tillverkningsstatus. Använd kommandot az sphere device manufacturing-state show för att bestämma enhetens tillverkningsstatus. Om kommandot visar att enheten är i tillverkningstillståndet DeviceComplete eller returnerar Device access is forbiddenär service-UART-kommunikation låst och du behöver en enhetsfunktion för att kommunicera med enheten från datorn. När en enhet är i tillverkningstillståndet DeviceComplete tillåts tillverkning endast när enheten är upplåst via en funktionsfil.

Observera

Om du installerar en enhet på en kundwebbplats bör du se till att enheten slutförs till tillverkningstillståndet DeviceComplete före installationen. Se Slutför Azure Sphere-enheten.

DeviceComplete-manufacuring-tillståndet är normalt inte lämpligt för dev kit. För att möjliggöra testning av tillverkningsåtgärder som utvecklas av tillverkningsingenjörer bör ett dev-kit vara antingen i läget Tom tillverkning eller Module1Complete-tillverkning .

Hur enheter hämtar funktioner

Enheter kan skaffa funktioner på något av tre sätt:

  • Öppnas som standard. En enhet som är i antingen läget Tom tillverkning eller tillverkning av Module1Complete har vissa funktioner öppna som standard. Detta görs så att enheter som fortfarande befinner sig i tillverkningsfasen inte behöver anslutas till molnet eller begäras in i kataloger, vilket krävs genom processen att använda enhetsfunktionsfiler för att låsa upp funktioner. Allteftersom tillverkningen fortskrider kan tillverkare ändra enhetens tillverkningsstatus för att låsa funktioner som inte längre är lämpliga, enligt beskrivningen i Aktiviteter på fabriksgolvet.

  • Separat inlästa på enheten. En enhet kan ha en funktionsfil separat inläst på enheten från värddatorn. Använd kommandot az sphere device capability download för att hämta funktionsfilen. Den här separat inlästa uppsättningen funktioner finns kvar tills en ny funktionsfil (som kan vara en tom fil utan funktioner) har separat inlästs. Det här är den vanliga situationen under programutveckling, till exempel när kommandot az sphere device enable-development körs. Programutveckling underlättas genom att enheten är i ett olåst tillstånd där utvecklaren kan utföra åtgärder som felsökning och enkelt ta bort och distribuera separat inlästa versioner av programmet.

  • Skickas till enheten vid varje åtgärd. En enhet kan ha lokalt valda funktioner som tillämpas per åtgärd. Az sphere device capability apply command väljer en funktionsfil som lagras lokalt på värddatorn. När det här kommandot körs överförs den valda funktionen från datorn till enheten med varje efterföljande kommando. Det här är det rekommenderade sättet att använda funktioner för enheter som finns i fältet eftersom funktionerna lagras på datorn i stället för på enheten. Risken för att en fälttekniker oavsiktligt lämnar enheten i ett osäkert tillstånd genom att glömma att ta bort funktionen undviks.

Innan en funktionsfil kan läsas in separat på en enhet eller skickas till en enhet med en åtgärd måste den laddas ned från Azure Sphere Security Service (AS3), enligt beskrivningen i Göra ändringar i en enhet efter tillverkningen. Nedladdade funktionsfiler är enhetsspecifika. när en funktionsfil har laddats ned kan den användas flera gånger på den associerade enheten.

EnableRfTestMode-funktionen

EnableRfTestMode-funktionen finns som standard på enheten när enhetens tillverkningsstatus är Tom. Den här funktionen möjliggör programmering av e-säkringar och konfiguration och testning av RF-drift. Katalogägare kan inte ladda ned den här funktionen till en värddator. Om du behöver den här funktionen kontaktar du din Microsoft-representant.

När enhetens tillverkningsstatus är Tom visar det bifogade kommandot az sphere-enhetens funktionenableRfTestMode-funktion .

AppUtvecklingsfunktion

AppUtvecklingsenhetens funktion låser upp service-UART-kommunikation och ändrar vilken typ av signering som enheten litar på. Den är avsedd att användas under programutveckling.

Som standard litar Azure Sphere-enheter på produktionssignerade avbildningspaket som laddas ned av Azure Sphere Security Service, men som inte litar på SDK-signerade avbildningspaket. Därför kan du inte skapa ett avbildningspaket med SDK:et och läsa in det separat på din Azure Sphere-enhet för felsökning, såvida inte enheten har funktionen appUtveckling . Funktionen appUtveckling gör att enheten litar på avbildningspaketet och gör att du kan starta, stoppa, felsöka eller ta bort ett program från enheten.

Sammanfattningsvis låser appUtvecklingsfunktionen upp service-UART-kommunikation för att tillåta följande åtgärder:

  • Separat inläsning av ett avbildningspaket som är byggt med Visual Studio, Visual Studio Code, CLI eller kommandot az sphere image-package .

  • Starta, stoppa, felsöka eller ta bort ett avbildningspaket från Azure Sphere-enheten, oavsett hur avbildningspaketet är signerat.

Om du vill lägga till funktionen appUtveckling använder du kommandot az sphere device enable-development . Det här kommandot laddar ned appUtvecklingsfunktionen för den anslutna enheten, separat inläsningar av funktionen på enheten och flyttar enheten till standardgruppen för utvecklingsenheter. Om du vill ange en annan enhetsgrupp tar du med parametern --device-group .

När du använder aktivering av az sphere-enhet förblir enheten olåst tills du uttryckligen låser den. Om du vill låsa enheten igen använder du kommandot az sphere device enable-cloud-test . Det här kommandot tar bort funktionen och ändrar enhetsgruppen, beroende på vilka kommandoradsparametrar som anges.

Az sphere device enable-development och az sphere device enable-cloud-test-kommandon utför en sekvens av åtgärder som förbereder en enhet för utveckling och felsökning respektive för molndistributioner. I stället för att använda dessa kommandon kan du använda kommandot az sphere device capability för att ladda ned eller uppdatera en enhetsfunktion, eller för att ta reda på vilka funktioner en enhet har för närvarande.

Funktionen fieldServicing

Funktionen fieldServicing finns som standard på en enhet när enheten har tillverkningstillståndet Tom eller Module1Complete. När en enhet är i tillverkningstillståndet DeviceComplete kan funktionen fieldServicing läsas in separat, men skickas vanligtvis till enheten vid varje åtgärd under en underhållssession. Mer information om hur du startar en underhållssession finns i Göra ändringar i en enhet efter tillverkningen.

Oavsett enhetens tillverkningsstatus låser fieldServicing-funktionen upp service-UART-kommunikation så att följande åtgärder tillåts:

  • Separat inläsning av ett produktionssignerat avbildningspaket.
  • Starta, stoppa och ta bort ett produktionssignerat avbildningspaket som är markerat som tillfälligt.
  • Utföra rutinmässiga underhållsåtgärder, till exempel konfigurera Wi-Fi.

Även om funktionen fieldServicing finns som standard på enheten när enhetens tillverkningsstatus är Tom eller Module1Complete, visar inte det az sphere device capability show-attached-kommandotfieldServicing-funktionen .

Beroende av aktuell betrodd nyckellagring

När en funktionsfil skapas av AS3 signeras den med den aktuella avbildningssigneringsnyckeln. Varje enhet har en betrodd nyckellagringsdel som en del av operativsystemet där dessa nycklar sparas. Men om enheten inte är ansluten till Internet är det möjligt att en funktion inte är betrodd av den enhet den riktar sig till om enhetens betrodda nyckellagring är inaktuell.

För att åtgärda detta är en metod att tillåta enheten att ansluta till Internet så att den uppdaterar den betrodda nyckelhandeln. Anslut enheten till Internet och tryck på Återställ för att utlösa en OS-uppdatering.

Om detta inte är möjligt kan du separat läsa in en uppdaterad betrodd nyckellagring. Det gör du genom att godkänna licensvillkoren och sedan ladda ned de senaste os-återställningsbilderna, och från den här zip-filen extraheras bara filen "trusted-keystore.bin". Sedan kan du använda kommandot az sphere device sideload deploy --image-package <path-to-trustedkeystore.bin-file> för att separat läsa in den betrodda nyckellagringsfilen, och funktionen ska nu vara betrodd av enheten.

En tredje metod är Återställa systemprogramvaran för att uppdatera Azure Sphere-operativsystemet till den senaste versionen, inklusive den senaste betrodda nyckellagringen.