Sdílet prostřednictvím


Ladění partnerských aplikací

  1. Ujistěte se, že je zařízení připojené k počítači přes USB. V nabídce Nastavit spouštěcí položku vyberte Aplikace Azure Sphere (všechna jádra), kde Azure Sphere App je název vašeho projektu nejvyšší úrovně, nebo stiskněte klávesu F5.

    Tlačítko vzdáleného Ladicího programu GDB

  2. Pokud se zobrazí výzva k sestavení projektu, vyberte Ano. Visual Studio zkompiluje partnerské aplikace, vytváří balíčky imagí, načítá je bokem na panel a spouští je v režimu ladění. Zkušební načtení znamená, že se aplikace doručují přímo z počítače přes kabelové připojení, nikoli prostřednictvím cloudu.

    Všimněte si cest v zobrazení>výstupu>Zobrazit výstup z: Výstup sestavení , který označuje umístění výstupních balíčků imagí na vašem počítači. Až budete připraveni vytvořit nasazení, budete muset znát cesty k balíčkům imagí.

  3. Ve výchozím nastavení se v okně Výstup zobrazuje výstup z výstupu zařízení. Pokud chcete zobrazit zprávy z ladicího programu, vyberte v rozevírací nabídce Zobrazit výstup z možnost Ladit. Můžete také zkontrolovat přebírání programu, registry nebo paměť prostřednictvím nabídky Ladit>windows .

Pokud máte dvě aplikace RTApps, ujistěte se, že obě aplikace jsou uvedené jako partnerské aplikace v souboru launch.vs.json nejvyšší úrovně.

Pomocí ladicího programu sady Visual Studio můžete nastavit zarážky, pozastavit, krokovat, krokovat, restartovat nebo zastavit aplikaci.

Zatímco se zastavíte u zarážky ve zdrojovém kódu jazyka C, můžete otevřít okno Demontáž, které zobrazuje aktuální adresu, mnemotechnický assembler pro aktuální příkaz a informace, jako jsou zapojené registry nebo spouštěný příkaz zdrojového kódu.

Otevření okna Demontáž :

  1. Ujistěte se, že zdrojový soubor kódu C obsahující zarážku je otevřený v sadě Visual Studio.
  2. Vyberte DebugWindows> Disassembly (Ladit>Windows Disassembly) nebo stiskněte Alt+8.
  1. Otevřete složku obsahující vaše partnerské aplikace. Visual Studio Code zjistí soubor pracovního prostoru a zeptá se, jestli chcete pracovní prostor otevřít. Výběrem možnosti Otevřít pracovní prostor otevřete aplikaci v reálném čase i aplikaci vysoké úrovně najednou.

  2. Klikněte pravým tlačítkem na některý ze dvou CMakeLists.txt souborů a vyberte Sestavit všechny projekty.

  3. Klikněte na ikonu Spustit na panelu aktivity editoru Visual Studio Code.

  4. V rozevírací nabídce, která se zobrazí v horní části okna na levé straně obrazovky, vyberte Spustit aplikace Azure Sphere (gdb)(pracovní prostor).

  5. Stisknutím klávesy F5 sestavte a ladit projekt. Pokud projekt ještě nebyl sestaven nebo pokud se změnily soubory a vyžaduje se opětovné sestavení, visual Studio Code projekt před zahájením ladění sestaví.

  6. Počkejte několik sekund, než Visual Studio Code sestaví aplikace, vytvoří balíčky imagí, nasadí je na panel a spustí je v režimu ladění. V podokně Výstup uvidíte aktualizace stavu.

    Nejprve CMake určí, jestli je potřeba aplikace sestavit. Pokud ano, fokus se přesune do okna výstupu, ve kterém se zobrazí výstup z CMake/Buildu.

    Dále se v podokně výstupu zobrazí výstup, který nasadí balíček image do zařízení. Nakonec konzola ladění obdrží fokus a zobrazí výstup gdb.

Pomocí ladicího programu editoru Visual Studio Code nastavte zarážky, pozastavení, krokování, krokování, restartování nebo zastavení aplikace.

Zatímco se zastavíte u zarážky ve zdrojovém kódu jazyka C, můžete otevřít zobrazení Demontáž, které zobrazuje aktuální adresu, nezpracovaná šestnáctková data, mnemotechnický assembler pro aktuální příkaz a informace, jako jsou zapojené registry nebo spouštěný příkaz zdrojového kódu.

Otevření zobrazení Demontáž:

  1. Ujistěte se, že zdrojový soubor kódu C obsahující zarážku je otevřený v editoru Visual Studio Code.
  2. Buď klikněte pravým tlačítkem v okně editoru a vyberte Otevřít zobrazení demontáže, nebo vyberte Zobrazit>paletu> příkazůOtevřít zobrazení demontáže.
  1. Zastavte aplikaci s podporou v reálném čase, pokud je spuštěná.

    az sphere device app stop --component-id <component id>
    
  2. Znovu spusťte aplikaci podporující v reálném čase pomocí ladění.

    az sphere device app start --component-id <component id>
    

    Tento příkaz vrátí jádro, na kterém aplikace běží.

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. Přejděte do složky Openocd pro složku sysroot, se kterou byla aplikace vytvořena. Sysroots se instalují do instalační složky sady Azure Sphere SDK. Například ve Windows je složka ve výchozím nastavení nainstalovaná v C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd a v Linuxu na adrese /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Spusťte openocd , jak ukazuje následující příklad. Příklad předpokládá, že aplikace běží na jádru 0. Pokud aplikace běží na jádru 1, nahraďte "targets io0" "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. Otevřete rozhraní příkazového řádku pomocí PowerShellu, příkazového řádku Windows nebo linuxového příkazového prostředí.

  6. Přejděte do složky, která obsahuje soubor .out aplikace podporující v reálném čase, a spusťte arm-none-eabi-gdb, který je součástí sady nástrojů GNU Arm Embedded Toolchain:

    Příkazový řádek 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. Server OpenOCD poskytuje rozhraní serveru GDB na serveru :4444. Nastavte cíl ladění.

    target remote :4444

  8. Teď můžete spouštět příkazy gdb. Přidejte zarážku do funkce HandleSendTimerDeferred:

    break HandleSendTimerDeferred

  9. Emulátor připojeného terminálu by měl zobrazit výstup z aplikace podporující v reálném čase.

  10. Otevřete nový příkazový řádek Azure Sphere (Windows) nebo okno terminálu (Linux).

  11. Přejděte do složky, která obsahuje soubor .imagepackage aplikace vysoké úrovně.

  12. Pokud je aplikace spuštěná, zastavte ji a restartujte ji s laděním:

    az sphere device app stop --component-id <ComponentId>
    
    az sphere device app start --debug-mode --component-id <ComponentId>
    
  13. Otevřete emulátor terminálu a navazte připojení Telnet nebo TCP k 192.168.35.2 na portu 2342, abyste zobrazili výstup aplikace vysoké úrovně.

  14. Spusťte gdb pomocí následujícího příkazu:

    Příkazový řádek 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
    

    Poznámka

    Sada Azure Sphere SDK se dodává s několika kořeny systému, aby aplikace mohly cílit na různé sady rozhraní API, jak je popsáno v tématu Verze modulu runtime aplikací, sysroots a beta rozhraní API. Sysroots se instalují do instalační složky sady Azure Sphere SDK v části Sysroots.

  15. Nastavte cíl vzdáleného ladění na IP adresu 192.168.35.2 na portu 2345:

    target remote 192.168.35.2:2345
    
  16. Přidejte zarážku do funkce SendMessageToRTApp:

    break SendMessageToRTApp
    
  17. Pokračujte zadáním c příkazu, sledujte výstup v terminálu Telnet/TCP a pak přepněte na příkazový řádek nebo okno terminálu obsahující relaci ladění aplikací v reálném čase.

  18. Pokračujte zadáním c příkazu a sledujte výstup v připojené sériové relaci.

Mezi ladicími relacemi můžete pracovat tam a zpět a přepínat mezi aplikací podporujícími v reálném čase a aplikací vysoké úrovně. Ve dvou oknech výstupu by se měl zobrazit výstup podobný následujícímu:

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

Pokud chcete ukončit každou ladicí relaci, zadejte q do příkazového řádku gdb příkaz .