Dela via


Felsöka partnerprogram

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

  1. Kontrollera att enheten är ansluten till datorn via USB. I menyn Ange startobjekt väljer du Azure Sphere App (Alla kärnor) där Azure Sphere App är namnet på ditt toppnivåprojekt eller trycker på F5.

    Knappen Fjärrfelsökare för GDB

  2. 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 kabelansluten anslutning i stället för att levereras via molnet.

    Observera sökvägarna i Visa>utdata Visa utdata>från: Skapa utdata, vilket anger platsen för utdataavbildningspaketen på datorn. När du är redo att skapa en distribution måste du känna till sökvägarna till avbildningspaketen.

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

Om du har två RTApps kontrollerar du att båda visas som partnerappar i launch.vs.json-filen på den översta nivån.

Använd Visual Studio-felsökningsprogrammet för att ange brytpunkter, pausa, stega över, gå in i, starta om eller stoppa programmet.

När den stoppas vid en brytpunkt i C-källkoden kan du öppna ett Disassembly-fönster som visar den aktuella adressen, assembler mnemonic för det aktuella kommandot och information som de register som ingår eller källkodskommandot som körs.

Så här öppnar du disassembly-fönstret:

  1. Kontrollera att C-kodkällan som innehåller brytpunkten är öppen i Visual Studio.
  2. Välj Felsöka>Windows>Disassembly eller tryck på Alt+8.
  1. Öppna mappen som innehåller dina partnerprogram. Visual Studio Code identifierar arbetsytefilen och frågar om du vill öppna arbetsytan. Välj Öppna arbetsyta för att öppna både realtidsprogrammet och högnivåprogrammet samtidigt.

  2. Högerklicka på någon av de två CMakeLists.txt filerna och välj Skapa alla projekt.

  3. Klicka på ikonen Kör i aktivitetsfältet i Visual Studio Code.

  4. Välj Starta Azure Sphere Apps (gdb)(arbetsyta) på den neddragna menyn längst upp i fönstret till vänster på skärmen.

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

  6. Vänta några sekunder tills Visual Studio Code har skapat programmen, skapa avbildningspaketen, distribuera dem till brädet 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 skapas. I så fall flyttas fokus till utdatafönstret, som visar utdata från CMake/Build.

    Därefter visar utdatafönstret utdata från azsphere när det distribuerar avbildningspaketet till enheten. Slutligen får felsökningskonsolen fokus och visar gdb-utdata.

Använd Visual Studio Code-felsökningsprogrammet för att ange brytpunkter, pausa, gå över, gå in i, starta om eller stoppa programmet.

När den stoppas vid en brytpunkt i C-källkoden kan du öppna en Disassembly-vy som visar den aktuella adressen, rådata, assembler mnemonic för det aktuella kommandot och information som de register som ingår eller det källkodskommando som körs.

Så här öppnar du vyn Disassembly:

  1. Kontrollera att C-kodkällan som innehåller brytpunkten är öppen i en Visual Studio Code-redigerare.
  2. Högerklicka antingen i redigeringsfönstret och välj Öppna Demontera vy eller välj Visa>kommandopaletten>Öppna demonteringsvy.
  1. Stoppa det realtidskompatibla programmet om det körs.

    azsphere device app stop --component-id <component id>
    
  2. Starta om det realtidskompatibla programmet med felsökning.

    azsphere device app start --component-id <component id>
    

    Det här kommandot returnerar den kärna som programmet körs på.

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. Gå till mappen Openocd för den sysroot som programmet skapades med. Sysroots installeras i installationsmappen för Azure Sphere SDK. I Windows är mappen till exempel installerad som standard på 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.

  4. Kör openocd som i följande exempel. Exemplet förutsätter att appen körs på core 0. Om appen körs på core 1 ersätter du "targets io0" med "targets io1".

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  5. Öppna ett kommandoradsgränssnitt med hjälp av PowerShell, Windows-kommandotolken eller Linux-kommandogränssnittet.

  6. Gå till mappen som innehåller den realtidskompatibla programmets .out-fil 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
    
  7. OpenOCD-servern tillhandahåller ett GDB-servergränssnitt på :4444. Ange målet för felsökning.

    target remote :4444

  8. Nu kan du köra gdb-kommandon. Lägg till en brytpunkt i funktionen HandleSendTimerDeferred:

    break HandleSendTimerDeferred

  9. Den anslutna terminalemulatorn bör visa utdata från det realtidskompatibla programmet.

  10. Öppna en ny Azure Sphere-kommandotolk (Windows) eller ett terminalfönster (Linux).

  11. Gå till mappen som innehåller filen .imagepackage för högnivåprogram.

  12. Om programmet körs stoppar du det och startar sedan om det med felsökning:

    azsphere device app stop --component-id <ComponentId>
    
    azsphere device app start --debug-mode --component-id <ComponentId>
    
  13. Öppna en terminalemulator och upprätta en Telnet- eller TCP-anslutning till 192.168.35.2 på port 2342 för att visa högnivåappens utdata.

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

    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.

  15. Ange fjärrfelsökningsmålet till IP-adress 192.168.35.2 på port 2345:

    target remote 192.168.35.2:2345
    
  16. Lägg till en brytpunkt i funktionen SendMessageToRTApp:

    break SendMessageToRTApp
    
  17. 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 realtidsprogram.

  18. Skriv c för att fortsätta och observera utdata i den anslutna seriesessionen.

Du kan arbeta fram och tillbaka mellan felsökningssessioner, växla mellan det realtidskompatibla 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 du q i gdb-prompten.