Skapa ett program som kan användas i realtid

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

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". d.v.s. de tillåter 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 upplåsning av enhetsfunktioner .

Om du vill felsöka kärnor i realtid använder du kommandot az sphere device enable-development . Det här kommandot konfigurerar enheten så att den accepterar 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:

    az login
    
  2. Öppna ett kommandoradsgränssnitt med PowerShell eller Kommandotolken i Windows med administratörsbehörighet. Parametern --enable-rt-core-debugging kräver administratörsbehörighet eftersom DEN installerar USB-drivrutiner för felsökaren.

  3. Ange följande kommando:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Stäng fönstret när kommandot har slutförts eftersom administratörsbehörighet inte längre krävs. Det bästa sättet är att alltid använda det lägsta privilegiet som kan utföra en uppgift.

Om az sphere device enable-development-kommandot 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". d.v.s. de tillåter 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 kärnor i realtid använder du kommandot az sphere device enable-development . Det här kommandot konfigurerar enheten så att den accepterar 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 om du inte redan har gjort det:

    az 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ökaren.

  3. Ange följande kommando:

    az sphere 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. Det bästa sättet är att alltid använda det lägsta privilegiet som kan utföra en uppgift.

Om aktivera-utvecklingskommandot för az sphere-enheten misslyckas med följande felmeddelande kan du få hjälp i Felsöka Azure Sphere-problem .

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

Skapa RTApp med Visual Studio-kod

Så här skapar du en RTApp:

  1. I Visual Studio-kod öppnar du mappen HelloWorld_RTApp_MT3620_BareMetal i klonen av Azure Sphere-exempelrepoken. 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ökningen. Om projektet inte har skapats tidigare, eller om filer har ändrats och återskapats krävs, skapas projektet i Visual Studio Code innan felsökningen påbörjas.

  3. Den anslutna terminalemulatorn ska visa utdata från programmet. Följande ord skickas med en sekunds intervall:

    Tick

    Tock

    Observera

    Visual Studio-kod tillhandahåller Intellisense, men den 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 vyn CMake-tillägg 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-generering inte startar automatiskt markerar du filen CMakeLists.txt.

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

  4. På menyn CMake (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 fönstret Utdata .

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

  6. Den anslutna terminalemulatorn ska visa utdata från programmet. Följande ord skickas med en sekunds intervall:

    Tick

    Tock

    Observera

    • 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.

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

      Växla mellan lösnings- och mappvyer

      I den nedrullningsbara menyn väljer du Vyn CMake-mål.

    • 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 är att fördröja starten av appen tills OpenOCD ansluter.

      1. Infoga följande kod i början av programinmatningspunkten RTCoreMain. Detta gör att programmet kommer in i och förblir i en while slinga tills variabeln f är inställd på sant.

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

      3. I felsökningsfönstret Lokala inställningar ändrar du värdet f för från noll till ett.

      4. Stega igenom koden som vanligt.

Skapa RTApp med 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 ta reda på lämpliga kompilerings- och länkningsalternativ genom att titta på azuresfärtoolchainBase.cmake- och AzureSfärosfär-verktygsfilernaToolchain.cmake som installeras med Azure Sphere SDK.

  1. Öppna ett kommandoradsgränssnitt med PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet. Navigera till projektversionskatalogen.

  2. Kör CMake med följande parametrar i kommandotolken från project build-katalogen:

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

      Namnet på konfigurationsförinställningen som definierats i CMakePresets.json.

    • --build <cmake-path>

      Den binära katalogen som innehåller CMake-cachen. Om du till exempel kör CMake på 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 AzSfär.

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

    Följande exempel visar 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 de resulterande program- 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> den binära katalogen som innehåller CMake-cachen. Om du till exempel kör CMake på ett Azure Sphere-exempel blir cmake --build out/ARM-Debugbuild-kommandot .

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

    az sphere device sideload delete
    
  5. Distribuera avbildningspaketet som Ninja skapade:

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

    az sphere image-package show --image-package <path-to-imagepackage>
    

    Kommandot returnerar alla metadata för avbildningspaketet. Programmets komponent-ID visas i avsnittet Identitet för programbildtypen. Till exempel:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    
  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. kan du 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 appkommandot az sphere device för att stoppa och starta sedan om programmet. Ange komponent-ID för programmet i kommandona. Till exempel:

    az sphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    az sphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. Den anslutna terminalemulatorn ska visa utdata från programmet. Följande ord skickas med en sekunds intervall:

    Tick

    Tock

Loggutdata från en RTApp

Varje kärnor i realtid 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 utdata visas enligt beskrivningen i snabbstarten. Det dedikerade UART kräver Uart inte kravet på programmanifest, men det bör inte användas för andra ändamål än loggningsresultat 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 dess partner inte bort. Mer information finns i Markera program som partner .

Felsökning

Om du stöter på problem kan du läsa Felsöka program som kan användas i realtid.

Ytterligare resurser

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