Självstudiekurs: Skapa ett program på hög nivå

Ett program på hög nivå körs på Azure Sphere-operativsystemet, använder Azure Sphere-programbiblioteken och kan kommunicera med Internet och med molnbaserade tjänster. Se Översikt över Azure Sphere-program för grundläggande information om program på hög nivå.

I den här självstudiekursen får du lära dig hur du:

  • Förbereda enheten för utveckling och felsökning
  • Skapa, köra och felsöka ett program på hög nivå

Förutsättningar

Förbereda enheten för 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 separat inläsning. 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. Om du förbereder enheten för separat inläsning försvinner denna begränsning.

Aktivera-utvecklingskommandot för az sphere-enheten konfigurerar enheten så att den accepterar program för felsökning, läser in felsökningsservern på enheten och tilldelar enheten till en enhetsgrupp 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.

  1. Kontrollera att Azure Sphere-enheten är ansluten till datorn och att datorn är ansluten till Internet.

  2. Öppna ett kommandoradsgränssnitt med PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet.

  3. Ange följande kommando:

    az sphere device enable-development --resource-group <ResourceGroupName> --catalog <CatalogName> --device <DeviceIdValue>
    

    Du bör se utdata som liknar följande:

    Getting device capability configuration for application development.
    Downloading device capability configuration for device ID '<device ID>'.
    Successfully downloaded device capability configuration.
    Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'.
    Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'.
    Successfully disabled over-the-air updates.
    Enabling application development capability on attached device.
    Applying device capability configuration to device.
    Successfully applied device capability configuration to device.
    The device is rebooting.
    Installing debugging server to device.
    Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device.
    Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device.
    Application development capability enabled.
    Successfully set up device '<device ID>' for application development, and disabled over-the-air updates.
    Command completed successfully in 00:00:38.3299276.
    

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

Skapa och köra programmet på hög nivå med Visual Studio-kod

I den här självstudiekursen används mallen Azure Sphere Blink, som är en del av Azure Sphere-tillägget för Visual Studio-kod. Blink-mallen blinkar en lysdiod så att du kan kontrollera att Azure Sphere-enheten och verktygen är installerade och konfigurerade korrekt.

  1. Starta Visual Studio-kod. Välj Visa>kommandopalett och skriv sedan "Azure Sphere: Generate New Project".

  2. Välj Blink på menyn Mallar.

  1. Visual Studio-kod visar sedan ett Utforskaren fönster. Navigera till den mapp där du vill placera Blink-programmet. Visual Studio Code skapar mappen Blink på den valda platsen och genererar build-filerna för Blink-programmet. Du bör se meddelanden från CMake.

  2. Öppna filen CMakeLists.txt och ändra inställningen för TARGET_DIRECTORY för att ange mappen som innehåller definitioner för maskinvaran du använder. Som standard anger TARGET_DIRECTORY HardwareDefinitions/mt3620_rbd, som matchar Seeed Azure Sphere MT3620 Development Kit:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    Mallen innehåller flera maskinvarudefinitioner. Om du till exempel använder en SEEED MT3620 Mini Dev Board anger du HardwareDefinitions/seeed_mt3620_mdb i stället.

  3. Tryck på F5 för att skapa och felsöka projektet. Om projektet inte har skapats tidigare, eller om filer har ändrats och återskapats, skapas projektet i Visual Studio Code innan felsökningen påbörjas.

  4. Vänta i några sekunder på att Visual Studio-koden ska skapa programmet, skapa ett avbildningspaket, distribuera det till tavlan och starta det i felsökningsläge. Statusuppdateringar visas i fönstret Utdata längs vägen.

    Först avgör CMake om programmet behöver byggas. I så fall flyttas fokus till utdatafönstret, som visar utdata från CMake/Build.

    I utdatafönstret visas sedan utdata när avbildningspaketet distribueras till enheten. Slutligen får felsökningskonsolen fokus och visar gdb-utdata.

    Tips

    Notera var avbildningspaketet finns, som du behöver när du skapar en distribution. Du bör se ett meddelande som "Skapa filer skrivna till <sökväg>" i utdatafönstret , där <sökvägen är den fullständiga sökvägen> till blinkprogrammets byggmapp, som vanligtvis slutar med "out\ARM-Debug" eller "out/ARM-Debug".

  5. Efter en kort fördröjning ska en lysdiod blinka.

  6. Ange en brytpunkt någonstans i main.c och stega igenom programmet så att du kan utforska felsökningsfunktionerna för Visual Studio-kod för Azure Sphere.

Skapa och köra programmet på hög nivå med Visual Studio

I den här självstudiekursen används mallen Azure Sphere Blink, som är en del av Azure Sphere-tillägget för Visual Studio. Blink-mallen blinkar en lysdiod så att du kan kontrollera att Azure Sphere-enheten och verktygen är installerade och konfigurerade korrekt.

  1. Om du inte har använt Visual Studio tidigare kan du använda Snabbstart eller Guidad visning för att lära dig mer om hur du navigerar och använder den.

  2. Öppna Visual Studio och välj Skapa ett nytt projekt. I rutan Search skriver du "azure sphere" för att få en lista över Azure Sphere-mallar. Välj Azure Sphere Blink i listan.

  3. Ange ett namn och en plats för projektet och välj sedan Skapa.

  4. Öppna filen CMakeLists.txt och ändra inställningen för TARGET_DIRECTORY för att ange mappen som innehåller definitioner för maskinvaran du använder. Som standard anger TARGET_DIRECTORY HardwareDefinitions/mt3620_rbd, som matchar Seeed Azure Sphere MT3620 Development Kit:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
    

    Mallen innehåller flera maskinvarudefinitioner. Om du till exempel använder en SEEED MT3620 Mini Dev Board anger du HardwareDefinitions/seeed_mt3620_mdb i stället.

  5. I Visual Studio väljer du Visa>utdata för att visa fönstret Utdata .

  6. Kontrollera att enheten är ansluten till datorn via USB. På menyn Ange startobjekt trycker du på F5 eller väljer Azure Sphere App (HLCore)* där Azure Sphere-appen är namnet på ditt aktuella högnivåprogram.

  7. Om du uppmanas att skapa projektet väljer du Ja. Visual Studio kompilerar programmet, skapar ett avbildningspaket, läser in det separat på tavlan och startar det i felsökningsläge. Separat inläsning innebär att programmet levereras direkt från datorn via en fast anslutning i stället för att levereras via molnet.

    Tips

    Notera var avbildningspaketet finns, som du behöver när du skapar en distribution. Du bör se ett meddelande som "Utdatafil är på: <sökväg>" i utdata i Visa>utdata>Visa utdata från: Version, där <sökvägen är den fullständiga sökvägen> till blinkprogrammets byggmapp, som vanligtvis slutar med "out/ARM-Debug".

  8. Som standard visar fönstret Utdata utdata från Enhetsutdata. Om du vill se meddelanden från felsökaren väljer du Felsök i listrutan Visa utdata från: . Du kan också kontrollera programdemonteringen, registren eller minnet via Menyn Felsöka>Windows .

  9. När du kör programmet ska en lysdiod blinka.

Ladda ned exempelprogrammet

Du kan ladda ned HelloWorld-programmet på följande sätt:

  1. Rikta webbläsaren mot microsoft exempelwebbläsaren.
  2. Skriv "Azure Sphere" i rutan Search.
  3. Välj Azure Sphere – Hello World i sökresultaten.
  4. Välj Ladda ned ZIP.
  5. Öppna den nedladdade filen och extrahera den till en lokal katalog.

Skapa exemplet

Följ de här stegen om du vill skapa build- och .imagepackage-filer för HelloWorld_HighLevelApp exempelprogram.

  1. Uppdatera exemplet för att rikta maskinvaran, om det behövs. Som standard är exempel på målmaskinvara som följer MT3620-referenstavlans design (RDB), till exempel MT3620 Development Kit från Seeed Studios. Ytterligare målmaskinvarudefinitioner för exempelprogrammen är tillgängliga i katalogen HardwareDefinitions i Azure Sphere Samples-lagringslistan. Till exempel finns maskinvarudefinitionsfilerna för Avnet MT3620 Starter Kit i underkatalogen HardwareDefinitions/avnet_mt3620_sk.

    • Öppna CMakeLists.txt och uppdatera parametern TARGET_DIRECTORY i funktionen azure_target_hardware_definition så att den pekar på underkatalogen för maskinvaran. Till exempel:

      azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
      
  2. Öppna ett kommandoradsgränssnitt med PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet. Navigera till projektversionskatalogen.

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

    I följande exempel visas CMake-kommandon för Hello World högnivåapp:

    Kommandotolken i Windows

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

    Windows PowerShell

     cmake `
     --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp"
    
  4. 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 .

    När du felsöker, särskilt när du har gjort ändringar i CMake-kommandon, tar du bort hela versionen och försöker igen.

Kör exemplet

  1. Om enheten redan kör ett program tar du bort programmet:

    az sphere device sideload delete
    
  2. Ändra till katalogen som innehåller build- och .imagepackage-filerna som skapats tidigare.

  3. Läs in avbildningspaketet på enheten genom att köra kommandot az sphere device sideload deploy och ange avbildningspaketet. Till exempel:

    az sphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
    

    Det här kommandot läser in avbildningspaketet och startar programmet. En lysdiod ska blinka.

    Tips

    Anteckna sökvägen till avbildningspaketet. Du använder avbildningspaketet senare i snabbstartsguiden för distribution.

Felsöka exemplet

  1. Ändra till katalogen som innehåller build- och .imagepackage-filerna som skapats tidigare.

  2. Hämta komponent-ID:t om du inte redan har det:

    az sphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
    
  3. Om programmet körs stoppar du det och startar sedan om det med alternativet --debug-mode :

    az sphere device app stop --component-id <ComponentId>
    
    az sphere device app start --debug-mode --component-id <ComponentId>
    

    Du bör se:

     ...
       "Identity": {
         "ComponentId": "<component-id>",
         "ImageId": "<image-id>",
         "ImageType": "Application"
       },
     ...
    
  4. Använd en terminalklient för att upprätta en Telnet- eller raw-TCP-anslutning för att läsa utdataströmmen från processen. Ange 192.168.35.2 som IP-adress och 2342 som port.

  5. Öppna ett kommandoradsgränssnitt med PowerShell eller en standardkommandouppmaning i Windows, eller kommandogränssnittet på Linux, och skicka den binära .out-appen från din version som en parameter. Då aktiveras fullständig felsökning av källkod.

    Kommandotolken i Windows

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
    

Observera

Azure Sphere SDK levereras med flera sysroots så att program kan rikta olika API-uppsättningar enligt beskrivningen i Application Runtime-versionen, sysroots och Beta-API:er. Sysroots installeras i Azure Sphere SDK-installationsmappen under Sysroots.

  1. Ställ in fjärrfelsökningsmålet på IP-adress 192.168.35.2 på port 2345:

    target remote 192.168.35.2:2345

  2. Kör alla andra gdb-kommandon som du väljer. Följande kommandon anger till exempel en brytpunkt vid inmatning till main() och fortsätter sedan körningen efter brytpunkten.

    break main
    
    c
    

    Mer information om felsökning med gdb finns i GDB: GNU Project Debugger eller någon av de andra många källorna i ämnet.

Nästa steg

Du har skapat ett program på hög nivå som körs på din Azure Sphere-enhet. Du kanske vill ändra den nu. Maskinvarudefinitioner beskriver hur du redigerar en JSON-fil för maskinvarudefinition och återskapar den associerade rubrikfilen.

Lär dig sedan hur du distribuerar ditt högnivåprogram från molnet.

Se även

Besök Azure Sphere-galleriet, en samling inspirerande, oavsiktliga och återanvändbara Azure Sphere-skript, verktyg och funktioner.