Dela via


Skapa ett realtidskompatibelt program

Viktigt!

Det här är dokumentationen om Azure Sphere (Legacy). Azure Sphere (Legacy) upphör den 27 september 2027 och användarna måste migrera till Azure Sphere (integrerad) vid den här tiden. Använd versionsväljaren ovanför TOC för att visa dokumentationen om Azure Sphere (integrerad).

Du kan använda Visual Studio, Visual Studio Code eller kommandoraden (CLI) för att utveckla och felsöka realtidskompatibla program (RTApps) på ungefär samma sätt som högnivåprogram.

Förutsättningar

Aktivera utveckling och felsökning

Innan du kan skapa ett exempelprogram på din Azure Sphere-enhet eller utveckla nya program för den måste du aktivera utveckling och felsökning. Som standard är Azure Sphere-enheter "låsta"; De tillåter alltså inte att program under utveckling läses in från en dator, och de tillåter inte felsökning av program. När du förbereder enheten för felsökning tar du bort den här begränsningen och läser in programvara som krävs för felsökning och låser upp enhetsfunktioner enligt beskrivningen i Enhetsfunktioner och kommunikation.

Om du vill felsöka realtidskärnor använder du kommandot azsphere device enable-development. Det här kommandot konfigurerar enheten för att acceptera program från en dator för felsökning och tilldelar enheten till gruppen Utvecklingsenhet, som inte tillåter uppdateringar av molnprogram. Under programutveckling och felsökning bör du lämna enheten i den här gruppen så att molnprogramuppdateringar inte skriver över programmet under utveckling.

I Windows måste du lägga till parametern --enable-rt-core-debugging som läser in felsökningsservrarna och nödvändiga drivrutiner för varje typ av kärna på enheten.

  1. Logga in på Azure Sphere om du inte redan har gjort det:

    azsphere login
    
  2. Öppna ett kommandoradsgränssnitt med PowerShell eller Windows-kommandotolken med administratörsbehörighet. Parametern --enable-rt-core-debugging kräver administratörsbehörighet eftersom den installerar USB-drivrutiner för felsökningsprogrammet.

  3. Ange följande kommando:

    azsphere device enable-development --enable-rt-core-debugging
    
  4. Stäng fönstret när kommandot har slutförts eftersom administratörsbehörighet inte längre krävs. Som bästa praxis bör du alltid använda den lägsta behörighet som kan utföra en uppgift.

Om kommandot azsphere device enable-development misslyckas kan du läsa Felsöka Azure Sphere-problem för hjälp.

Aktivera utveckling och felsökning

Innan du kan skapa ett exempelprogram på din Azure Sphere-enhet eller utveckla nya program för den måste du aktivera utveckling och felsökning. Som standard är Azure Sphere-enheter "låsta"; De tillåter alltså inte att program under utveckling läses in från en dator, och de tillåter inte felsökning av program. När du förbereder enheten för felsökning tar du bort den här begränsningen och läser in programvara som krävs för felsökning och låser upp enhetsfunktioner enligt beskrivningen i Enhetsfunktioner och kommunikation.

Om du vill felsöka realtidskärnor använder du kommandot azsphere device enable-development. Det här kommandot konfigurerar enheten för att acceptera program från en dator för felsökning och tilldelar enheten till gruppen Utvecklingsenhet, som inte tillåter uppdateringar av molnprogram. Under programutveckling och felsökning bör du lämna enheten i den här gruppen så att molnprogramuppdateringar inte skriver över programmet under utveckling.

I Windows måste du lägga till parametern --enable-rt-core-debugging som läser in felsökningsservrarna och nödvändiga drivrutiner för varje typ av kärna på enheten.

  1. Logga in på Azure Sphere om du inte redan har gjort det:

    azsphere login
    
  2. Öppna ett kommandoradsgränssnitt med PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet med administratörsbehörighet. Parametern --enable-rt-core-debugging kräver administratörsbehörighet eftersom den installerar USB-drivrutiner för felsökningsprogrammet.

  3. Ange följande kommando:

    azsphere device enable-development --enable-rt-core-debugging
    
  4. Stäng fönstret när kommandot har slutförts eftersom administratörsbehörighet inte längre krävs. Som bästa praxis bör du alltid använda den lägsta behörighet som kan utföra en uppgift.

Om kommandot azsphere device enable-development misslyckas med följande felmeddelande kan du läsa Felsöka Azure Sphere-problem för hjälp.

error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'azsphere device show-deployment-status'.

Skapa RTApp med Visual Studio Code

Så här skapar du en RTApp:

  1. Öppna mappen HelloWorld_RTApp_MT3620_BareMetal i din klon av Azure Sphere-exempellagringsplatsen i Visual Studio Code. Om du uppmanas att välja ett kit väljer du "Använd inte ett kit".

  2. Tryck på F5 för att starta felsökningsprogrammet. Om projektet inte har skapats tidigare, eller om filer har ändrats och återskapats krävs, skapar Visual Studio Code projektet innan felsökningen startar.

  3. Den anslutna terminalemulatorn bör visa utdata från programmet. Programmet skickar följande ord med en sekunds intervall:

    Tick

    Tock

    Kommentar

    Visual Studio Code tillhandahåller Intellisense, men uppdateras inte automatiskt när du ändrar CMakeLists.txt. Du måste köra kommandot CMake: Delete Cache och Reconfigure för att uppdatera Intellisense. Vyn CMake-mål finns i CMake-tilläggsvyn i det vänstra fältet.

Skapa RTApp med Visual Studio

Så här skapar du en RTApp:

  1. I Visual Studio väljer du Arkiv>CMake och navigerar till mappen som innehåller exemplet.

  2. Om CMake-genereringen inte startas automatiskt väljer du filen CMakeLists.txt.

  3. I Visual Studio visar Visa>utdata>Visa utdata från: CMake-utdata ska visa meddelanden och CMake generation started.CMake generation finished.

  4. På CMake-menyn (om den finns) väljer du Skapa alla. Om menyn inte finns öppnar du Solution Explorer, högerklickar på filen CMakeLists.txt och väljer Skapa. Utdataplatsen för Azure Sphere-programmet visas i utdatafönstret.

  5. Tryck på F5 för att distribuera programmet.

  6. Den anslutna terminalemulatorn bör visa utdata från programmet. Programmet skickar följande ord med en sekunds intervall:

    Tick

    Tock

    Kommentar

    • Visual Studio tillhandahåller Intellisense för Azure Sphere RTApps genom att samla in data från CMake-cachen. Visual Studio uppdaterar cachen när CMakeLists.txt- eller CMakeSettings.json-filen i RTApp ändras.

    • Som standard använder Visual Studio mappvyn. Om du föredrar en logisk vy över CMake-projektet kan du ändra till vyn CMake-mål. I Solution Explorer väljer du mappväxlingsikonen:

      Växla mellan lösnings- och mappvyer

      På den nedrullningsbara menyn väljer du CMake-målvyn.

    • Programmet kan börja köras innan OpenOCD upprättar en anslutning. Därför kan brytpunkter som anges tidigt i koden missas. En enkel lösning för detta är att fördröja starten av appen tills OpenOCD ansluter.

      1. Infoga följande kod i början av programmets startpunkt RTCoreMain. Detta gör att programmet anger och förblir i en while loop tills variabeln f har angetts till true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Tryck på F5 för att starta appen med felsökning och sedan bryta in i körningen.

      3. Ändra värdet f för från noll till ett i felsökningsfönstret Lokalt.

      4. Stega igenom koden som vanligt.

Skapa RTApp med hjälp av CLI

Anvisningarna nedan förutsätter att du använder CMake. Om du föredrar att bygga på kommandoraden utan att använda CMake kan du fastställa lämpliga kompilator- och länkalternativ genom att titta på filerna AzureSphereToolchainBase.cmake och AzureSphereRTCoreToolchain.cmake, som är installerade med Azure Sphere SDK.

  1. Öppna ett kommandoradsgränssnitt med hjälp av PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet. Gå till din projektversionskatalog.

  2. Kör CMake i kommandotolken i projektversionskatalogen med följande parametrar:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      Förinställningsnamnet för byggkonfigurationen enligt definitionen i CMakePresets.json.

    • --build <cmake-path>

      Binärkatalogen som innehåller CMake-cachen. Om du till exempel kör CMake i ett Azure Sphere-exempel blir cmake --build out/ARM-Debugbuild-kommandot .

    • <source-path>

      Sökvägen till katalogen som innehåller källfilerna för exempelprogrammet. I exemplet laddades Azure Sphere-exempellagringsplatsen ned till en katalog med namnet AzSphere.

      CMake-parametrar avgränsas med blanksteg. Radfortsättningstecknet (^ för Windows-kommandoraden, \ för Linux-kommandoraden eller för PowerShell) kan användas för läsbarhet, men krävs inte.

    I följande exempel visas CMake-kommandona för HelloWorld RTApp:

    Kommandotolken i Windows

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. Kör Ninja för att skapa programmet och skapa avbildningspaketfilen:

    ninja -C out/ARM-Debug
    

    Ninja placerar det resulterande programmet och .imagepackage-filerna i den angivna katalogen.

    Du kan också anropa Ninja via CMake med följande kommando:

    cmake --build out/<binary-dir>
    

    Ange <binary-dir> till den binära katalog som innehåller CMake-cachen. Om du till exempel kör CMake i ett Azure Sphere-exempel blir cmake --build out/ARM-Debugbuild-kommandot .

  4. Ta bort alla program som redan har distribuerats till enheten:

    azsphere device sideload delete
    
  5. Distribuera avbildningspaketet som Ninja skapade:

    azsphere device sideload deploy --image-package <package-name>
    
  6. Hämta komponent-ID:t för avbildningen:

    azsphere image-package show --image-package <path-to-imagepackage>
    

    Kommandot returnerar alla metadata för avbildningspaketet. Komponent-ID:t för programmet visas i avsnittet Identitet för programbildtypen. Till exempel:

    Image package metadata:
    Section: Identity
    Image Type:           Application
    Component ID:         <component id>
    Image ID:             <image id>
    
  7. Ta reda på vilken kärna din app körs på.

    Som standard distribueras RTApp till den första tillgängliga realtidskärnan på enheten. Du kan för närvarande inte ange en viss kärna. Om du vill ta reda på vilken kärna programmet körs på använder du kommandot azsphere device app för att stoppa och sedan starta om programmet. Ange komponent-ID:t för programmet i kommandona. Till exempel:

    azsphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    azsphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. Den anslutna terminalemulatorn bör visa utdata från programmet. Programmet skickar följande ord med en sekunds intervall:

    Tick

    Tock

Logga utdata från en RTApp

Varje realtidskärna på MT3620 har en dedikerad UART som är avsedd för loggning av utdata. Realtidskärnorna kan också komma åt ISU UARTs. MT3620 RDB exponerar endast TX-stiftet, som du kan använda för att visa loggutdata från programmet. Annan maskinvara kan exponera detta på ett annat sätt, eller inte alls. Om du vill se loggutdata konfigurerar du maskinvaran så att den visar utdata enligt beskrivningen i snabbstarten. Den dedikerade UART kräver inte kravet på Uart programmanifest. Det bör dock inte användas för andra syften än loggning av utdata för en RTApp.

Utveckla med partnerappar

När du läser in ett program på Azure Sphere-enheten tar Azure Sphere-distributionsverktygen som standard bort alla befintliga program. För att förhindra att detta händer när du utvecklar program som kommunicerar med varandra måste du markera programmen som partner. När du distribuerar ett av programmen tas inte dess partner bort. Mer information finns i Markera program som partner .

Felsökning

Om du stöter på problem kan du läsa Felsöka realtidskompatibla program.

Ytterligare resurser

Ytterligare drivrutiner och exempel för RTApps som riktar in sig på M4-realtidskärnorna på MT3620-chipet finns tillgängliga på GitHub från Azure Sphere-partner: