Självstudie: Skapa ett program på hög nivå
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).
Ett högnivåprogram körs i Azure Sphere OS, 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 högnivåprogram.
I den här självstudien lär du dig att:
- Förbereda enheten för utveckling och felsökning
- Skapa, köra och felsöka ett högnivåprogram
Förutsättningar
- Installera CMake och Ninja för Windows eller för Linux.
- Installera Visual Studio Code för Windows eller Linux.
- Installera CMake och Ninja för Windows eller för Linux.
- Installera SDK:t för Windows eller linux
- Välj en klientorganisation och gör anspråk på din enhet
- Konfigurera nätverk och uppdatera enhetens operativsystem
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"; 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 separat inläsning tar du bort den här begränsningen.
Kommandot azsphere device enable-development konfigurerar enheten för att acceptera 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.
Kontrollera att Din Azure Sphere-enhet är ansluten till datorn och att datorn är ansluten till Internet.
Öppna ett kommandoradsgränssnitt med hjälp av PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet.
Ange följande kommando:
azsphere device enable-development
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 kommandot azsphere device enable-development misslyckas kan du läsa Felsöka Azure Sphere-problem för hjälp.
Skapa och köra högnivåprogrammet med Visual Studio Code
I den här självstudien används Azure Sphere Blink-mallen, som ingår i Azure Sphere-tillägget för Visual Studio Code. Blink-mallen blinkar en lysdiod så att du kan kontrollera att Azure Sphere-enheten och verktygen har installerats och konfigurerats korrekt.
Starta Visual Studio Code. Välj Visa>kommandopalett och skriv sedan Azure Sphere: Generera nytt projekt.
Välj Blinka på menyn Mallar.
Visual Studio Code visar sedan ett Utforskaren fönster. Navigera till mappen där du vill placera Blink-programmet. Visual Studio Code skapar mappen Blink på den valda platsen och genererar byggfilerna för Blink-programmet. Meddelanden från CMake bör visas.
Öppna CMakeLists.txt-filen och ändra inställningen TARGET_DIRECTORY för att ange den mapp som innehåller definitioner för maskinvaran som 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")
Flera maskinvarudefinitioner tillhandahålls med mallen. Om du till exempel använder en SEEED MT3620 Mini Dev Board anger du HardwareDefinitions/seeed_mt3620_mdb i stället.
Tryck på F5 för att skapa och felsöka projektet. Om projektet inte har skapats tidigare, eller om filer har ändrats och återskapats krävs, skapar Visual Studio Code projektet innan felsökningen startar.
Vänta några sekunder tills Visual Studio Code har skapat programmet, skapa ett avbildningspaket, distribuera det till brädet 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 skapas. I så fall flyttas fokus till utdatafönstret, som visar utdata från CMake/Build.
Därefter visar utdatafönstret utdata från Azure Sphere när det distribuerar avbildningspaketet till enheten. Slutligen får felsökningskonsolen fokus och visar gdb-utdata.
Dricks
Anteckna platsen för avbildningspaketet, eftersom du behöver det när du skapar en distribution. Du bör se ett meddelande som "Skapa filer som skrivits till <sökvägen>" i utdatafönstret , där <sökvägen> är den fullständiga sökvägen till blink-programmets byggmapp, som vanligtvis slutar med "out\ARM-Debug" eller "out/ARM-Debug".
Efter en kort fördröjning bör du se en LED-blinkning.
Ange en brytpunkt någonstans i main.c och stega igenom programmet så att du kan utforska felsökningsfunktionerna i Visual Studio Code för Azure Sphere.
Skapa och köra högnivåprogrammet med Visual Studio
I den här självstudien används Azure Sphere Blink-mallen, som ingår i Azure Sphere-tillägget för Visual Studio. Blink-mallen blinkar en lysdiod så att du kan kontrollera att Azure Sphere-enheten och verktygen har installerats och konfigurerats korrekt.
Om du inte har använt Visual Studio tidigare kan du använda snabbstarten eller den guidade rundturen för att lära dig mer om hur du navigerar och använder den.
Öppna Visual Studio och välj Skapa ett nytt projekt. I sökrutan skriver du "azure sphere" för att hämta en lista över Azure Sphere-mallar. Välj Azure Sphere Blink i listan.
Ange ett namn och en plats för projektet och välj sedan Skapa.
Öppna CMakeLists.txt-filen och ändra inställningen TARGET_DIRECTORY för att ange den mapp som innehåller definitioner för maskinvaran som 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")
Flera maskinvarudefinitioner tillhandahålls med mallen. Om du till exempel använder en SEEED MT3620 Mini Dev Board anger du HardwareDefinitions/seeed_mt3620_mdb i stället.
I Visual Studio väljer du Visa>utdata för att visa fönstret Utdata.
Kontrollera att enheten är ansluten till datorn via USB. På menyn Ange startobjekt väljer du Azure Sphere App (HLCore) där Azure Sphere App är namnet på ditt aktuella högnivåprogram eller trycker på F5.
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 kabelansluten anslutning i stället för att levereras via molnet.
Dricks
Anteckna platsen för avbildningspaketet eftersom du behöver det när du skapar en distribution. Du bör se ett meddelande som "Utdatafilen är på: <sökvägen>" i utdata i Visa>utdata>Visa utdata från: Skapa, där <sökvägen> är den fullständiga sökvägen till blink-programmets byggmapp, som vanligtvis slutar med "out/ARM-Debug".
Som standard visar fönstret Utdata utdata från enhetsutdata. Om du vill se meddelanden från felsökningsprogrammet väljer du Felsöka från listrutan Visa utdata från: . Du kan också granska programmets demontering, registreringar eller minne via Windows-menyn Felsöka.>
När du kör programmet bör du se en LED-blinkning.
Hämta exempelprogrammet
Du kan ladda ned HelloWorld-programmet på följande sätt: :
- Peka webbläsaren till Microsoft Samples Browser.
- Skriv "Azure Sphere" i sökrutan.
- Välj Azure Sphere – Hello World i sökresultaten.
- Välj Ladda ned ZIP.
- Öppna den nedladdade filen och extrahera till en lokal katalog.
Skapa exemplet
Följ dessa steg för att skapa filerna build och .imagepackage för HelloWorld_HighLevelApp exempelprogrammet.
Uppdatera exemplet för att rikta in dig på maskinvaran om det behövs. Som standard är exemplen inriktade på maskinvara som följer MT3620-referenskortdesignen (RDB), till exempel MT3620 Development Kit från Seeed Studios. Ytterligare maskinvarudefinitioner för exempelprogrammen finns i katalogen HardwareDefinitions på lagringsplatsen Azure Sphere Samples. Maskinvarudefinitionsfilerna för Avnet MT3620 Starter Kit finns till exempel 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")
Öppna ett kommandoradsgränssnitt med hjälp av PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet. Gå till din projektversionskatalog.
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-Debug
build-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 högnivåappen Hello World:
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 blircmake --build out/ARM-Debug
build-kommandot .När du felsöker, särskilt när du har gjort ändringar i CMake-kommandona, tar du bort hela bygget och försöker igen.
Kör exemplet
Om enheten redan kör ett program tar du bort programmet:
azsphere device sideload delete
Ändra till katalogen som innehåller bygg- och .imagepackage-filerna som skapades tidigare.
Läs in avbildningspaketet på enheten genom att köra kommandot azsphere device sideload deploy och ange avbildningspaketet. Till exempel:
azsphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
Det här kommandot läser in avbildningspaketet och startar programmet. Du bör se en LED-blinkning.
Felsöka exemplet
Ändra till katalogen som innehåller bygg- och .imagepackage-filerna som skapades tidigare.
Hämta komponent-ID:t om du inte redan har det:
azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
Om programmet körs stoppar du det och startar sedan om det med alternativet
--debug-mode
:azsphere device app stop --component-id <ComponentId>
azsphere device app start --debug-mode --component-id <ComponentId>
Du bör se:
<ComponentId>
App state : debugging
GDB port : 2345
Output port : 2342
Core : High-level
Använd en terminalklient för att upprätta en Telnet- eller rå TCP-anslutning för att läsa utdataströmmen från processen. Ange 192.168.35.2 som IP-adress och 2342 som port.
Öppna ett kommandoradsgränssnitt med PowerShell eller en standardkommandoprompt i Windows eller kommandogränssnittet i Linux och skicka .out-appbinärfilen från din version som en parameter. Detta aktiverar fullständig källkodsfelsökning.
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
Kommentar
Azure Sphere SDK levereras med flera sysroots så att program kan rikta in sig på olika API-uppsättningar, enligt beskrivningen i Programkörningsversion, sysroots och Beta-API:er. Sysroots installeras i installationsmappen för Azure Sphere SDK under Sysroots.
Ange fjärrfelsökningsmålet till IP-adress 192.168.35.2 på port 2345:
target remote 192.168.35.2:2345
Kör 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 högnivåprogram som ska köras på din Azure Sphere-enhet. Du kanske vill ändra det nu. Maskinvarudefinitioner beskriver hur du redigerar en JSON-fil för maskinvarudefinition och återskapar den associerade huvudfilen.
Lär dig sedan hur du distribuerar ditt högnivåprogram från molnet.
Se även
Besök Azure Sphere-galleriet, en samling inspirerande, oanvända och återanvändbara Azure Sphere-skript, verktyg och funktioner.