Felsöka partnerprogram
Kontrollera att enheten är ansluten till datorn via USB. På menyn Ange startobjekt väljer du Azure Sphere App (Alla kärnor) där Azure Sphere-appen är namnet på ditt toppnivåprojekt eller trycker på F5.
Om du uppmanas att skapa projektet väljer du Ja. Visual Studio kompilerar partnerprogrammen, skapar avbildningspaket, läser in dem separat på tavlan och startar dem i felsökningsläge. Separat inläsning innebär att programmen levereras direkt från datorn via en fast anslutning i stället för att levereras via molnet.
Observera sökvägarna i Visa>utdata>Visa utdata från: Build-utdata , som anger platsen för paketen för utdatabilden på datorn. När du är redo att skapa en distribution måste du känna till sökvägarna till avbildningspaketen.
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 .
Om du har två RTApps kontrollerar du att båda visas som partnerappar i launch.vs.json-filen på översta nivån.
Använd Visual Studio-felsökaren för att ange brytpunkter, pausa, stega över, stega in, starta om eller stoppa programmet.
När den stoppas vid en brytpunkt i C-källkoden kan du öppna ett demonteringsfönster som visar den aktuella adressen, assembler-mnemonic för det aktuella kommandot och information som de berörda registerna eller källkodskommandot som körs.
Så här öppnar du fönstret Demontera :
- Kontrollera att C-kodkällfilen som innehåller brytpunkten är öppen i Visual Studio.
- Välj Debug>Windows>Disassembly eller tryck på Alt+8.
Öppna mappen som innehåller dina partnerprogram. Visual Studio Code identifierar arbetsytans fil och frågar om du vill öppna arbetsytan. Välj Öppna arbetsyta om du vill öppna både realtidsprogrammet och programmet på hög nivå samtidigt.
Högerklicka på någon av de två CMakeLists.txt-filerna och välj Skapa alla projekt.
Klicka på ikonen Kör i Visual Studio Code Activity Bar.
På den nedrullningsbara menyn som visas högst upp i fönstret till vänster på skärmen väljer du Starta Azure Sphere-appar (gdb)(arbetsyta).
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.
Vänta i några sekunder på att Visual Studio-koden ska skapa programmen, skapa avbildningspaketen, distribuera dem till tavlan och starta dem i felsökningsläge. Statusuppdateringar visas i fönstret Utdata längs vägen.
Först avgör CMake om programmen 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.
Använd Visual Studio Code-felsökaren för att ange brytpunkter, pausa, stega över, stega in, starta om eller stoppa programmet.
När den stoppas vid en brytpunkt i C-källkoden kan du öppna en demonterad vy som visar den aktuella adressen, rådata för hex, assembler-mnemonic för det aktuella kommandot och information som de aktuella registren eller källkodskommandot som körs.
Så här öppnar du vyn Demontera:
- Kontrollera att C-kodkällfilen som innehåller brytpunkten är öppen i en Visual Studio-kodredigerare.
- Högerklicka i redigeringsfönstret och välj Öppna demonteringsvy eller välj Visa>kommandopaletten>Öppna demonteringsvy.
Stoppa det realtidsdugliga programmet om det körs.
az sphere device app stop --component-id <component id>
Starta om det realtidsdugliga programmet med felsökning.
az sphere device app start --component-id <component id>
Det här kommandot returnerar kärnan som programmet körs på.
<component id> App state : running Core : Real time 0
Navigera till openocd-mappen för den sysroot som programmet skapades med. Sysroots installeras i Azure Sphere SDK-installationsmappen. I Windows är mappen till exempel installerad som standard i
C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd
och på Linux, på/opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux
.Kör
openocd
som i följande exempel. I exemplet förutsätts att appen körs på core 0. Om appen körs på core 1 ersätter du "targets io0" med "targets io1".Öppna ett kommandoradsgränssnitt med PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet.
Gå till mappen som innehåller den realtidsstödande .out-filen för programmet och starta
arm-none-eabi-gdb
, som är en del av GNU Arm Embedded Toolchain:Kommandotolken i Windows
"C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
Windows PowerShell
& "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
OpenOCD-servern har ett GDB-servergränssnitt på :4444. Ange målet för felsökning.
target remote :4444
Nu kan du köra gdb-kommandon. Lägga till en brytpunkt i funktionen HandleSendTimerDeferred:
break HandleSendTimerDeferred
Den anslutna terminalemulatorn ska visa utdata från ett program som kan användas i realtid.
Öppna ett nytt Azure Sphere-kommandotolk (Windows) eller ett nytt terminalfönster (Linux).
Navigera till mappen som innehåller den avancerade programfilen .imagepackage.
Om programmet körs stoppar du det och startar sedan om det med felsökning:
az sphere device app stop --component-id <ComponentId>
az sphere device app start --debug-mode --component-id <ComponentId>
Öppna en terminalemulator och upprätta en Telnet- eller TCP-anslutning till 192.168.35.2 vid port 2342 för att visa den högnivåappens utdata.
Starta gdb med följande kommando:
Kommandotolken i Windows
"C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
Windows PowerShell
& "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_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.
Ställ in fjärrfelsökningsmålet på IP-adress 192.168.35.2 på port 2345:
target remote 192.168.35.2:2345
Lägga till en brytpunkt i funktionen SendMessageToRTApp:
break SendMessageToRTApp
Skriv
c
för att fortsätta, observera utdata i Telnet/TCP-terminalen och växla sedan till kommandotolken eller terminalfönstret som innehåller felsökningssessionen för realtidsappen.Skriv
c
för att fortsätta och observera resultatet i den anslutna seriesessionen.
Du kan arbeta fram och tillbaka mellan felsökningssessioner, växla mellan det realtidsstödjande programmet och högnivåprogrammet. Du bör se utdata som liknar följande i de två utdatafönstren:
Starting debugger....
Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
Listening on port 2345
Remote debugging from host 192.168.35.1, port 56522
High-level intercore comms application
Sends data to, and receives data from a real-time capable application.
Sending: hl-app-to-rt-app-00
Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00
Om du vill avsluta varje felsökningssession skriver q
du i gdb-kommandotolken.