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
- Ansluta din Azure Sphere-enhet till datorn
- Installera Azure Sphere
- Installera GNU Arm Embedded-verktygslådan
- Konfigurera maskinvaran så att utdata från den dedikerade UART-grafiken visas, om du inte redan har gjort det
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.
Logga in på Azure Sphere om du inte redan har gjort det:
az login
Ö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.Ange följande kommando:
az sphere device enable-development --enable-rt-core-debugging --catalog <CatalogName> --resource-group <ResourceGroupName>
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.
Logga in på Azure om du inte redan har gjort det:
az login
Ö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.Ange följande kommando:
az sphere device enable-development --enable-rt-core-debugging
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:
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".
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.
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:
I Visual Studio väljer du Arkiv>CMake och navigerar till mappen som innehåller exemplet.
Om CMake-generering inte startar automatiskt markerar du filen CMakeLists.txt.
I Visual Studio ska Visa>utdata>visa utdata från: CMake-utdata visa meddelanden
CMake generation started.
ochCMake generation finished.
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 .
Tryck på F5 för att distribuera programmet.
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:
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.
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 variabelnf
är inställd på sant.volatile bool f = false; while (!f) { // empty. }
Tryck på F5 för att starta appen med felsökning och starta sedan körningen.
I felsökningsfönstret Lokala inställningar ändrar du värdet
f
för från noll till ett.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.
Öppna ett kommandoradsgränssnitt med PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet. Navigera till projektversionskatalogen.
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-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 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:
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 blircmake --build out/ARM-Debug
build-kommandot .Ta bort alla program som redan har distribuerats till enheten:
az sphere device sideload delete
Distribuera avbildningspaketet som Ninja skapade:
az sphere device sideload deploy --image-package <package-name>
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" }, ...
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
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: