Ladění partnerských aplikací
Důležité
Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.
Ujistěte se, že je vaše zařízení připojené k počítači přes USB. V nabídce Nastavit spouštěcí položku vyberte aplikaci Azure Sphere (všechna jádra), ve které je aplikace Azure Sphere názvem projektu nejvyšší úrovně, nebo stiskněte klávesu F5.
Pokud se zobrazí výzva k sestavení projektu, vyberte Ano. Visual Studio zkompiluje partnerské aplikace, vytvoří balíčky imagí, načte je na panel a spustí je v režimu ladění. Zkušební načtení znamená, že aplikace se 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í balíčků výstupních imagí na vašem počítači. Až budete připraveni vytvořit nasazení, budete muset znát cesty k balíčkům imagí.
Ve výchozím nastavení se v okně Výstup zobrazí výstup z výstupu zařízení. Pokud chcete zobrazit zprávy z ladicího programu, vyberte Ladit z rozevírací nabídky Zobrazit výstup z: Pomocí nabídky Ladění>systému Windows můžete také zkontrolovat demontáž, registraci nebo paměť programu.
Pokud máte dvě aplikace RTApps, ujistěte se, že jsou obě uvedené jako partnerské aplikace v souboru launch.vs.json nejvyšší úrovně.
Pomocí ladicího programu sady Visual Studio nastavte zarážky, pozastavení, krokování, krokování, restartování nebo zastavení aplikace.
Během zastavení na zarážce ve zdrojovém kódu jazyka C můžete otevřít okno zpětného překladu, které zobrazuje aktuální adresu, assembler mnemonic pro aktuální příkaz, a informace, jako jsou registrace zahrnuté nebo spuštěný příkaz zdrojového kódu.
Otevření okna zpětného překladu:
- Ujistěte se, že je zdrojový soubor kódu jazyka C obsahující zarážku otevřený v sadě Visual Studio.
- Vyberte Ladění>zpětného překladu systému Windows>nebo stiskněte Alt+8.
Otevřete složku obsahující 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.
Klikněte pravým tlačítkem na některý ze dvou CMakeLists.txt souborů a vyberte Sestavit všechny projekty.
Klikněte na ikonu Spustit na panelu aktivit editoru Visual Studio Code.
V rozevírací nabídce, která se zobrazí v horní části okna na levé straně obrazovky, vyberte Spustit aplikace Azure Sphere (gdb)(pracovní prostor).
Stisknutím klávesy F5 sestavte a ladit projekt. Pokud projekt ještě nebyl sestaven nebo pokud se soubory změnily a znovu se vyžadují, Visual Studio Code projekt sestaví před spuštěním ladění.
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í. Aktualizace stavu se zobrazí v podokně Výstup .
Nejprve CMake určuje, jestli je potřeba sestavit aplikace. Pokud ano, fokus se přesune do okna výstupu, ve kterém se zobrazí výstup z CMake/Buildu.
V dalším kroku se v podokně výstupu zobrazí výstup azsphere, který nasadí balíček image do zařízení. Nakonec konzola ladění obdrží fokus a zobrazí výstup gdb.
Ladicí program editoru Visual Studio Code slouží k nastavení zarážek, pozastavení, krokování, krokování, restartování nebo zastavení aplikace.
Při zastavení na zarážce ve zdrojovém kódu jazyka C můžete otevřít zobrazení zpětného překladu, které zobrazuje aktuální adresu, nezpracovaná šestnáctková data, měmonic assembleru pro aktuální příkaz a informace, jako jsou například registrace, které se týkají, nebo příkaz zdrojového kódu, který se spouští.
Otevření zobrazení zpětného překladu:
- Ujistěte se, že je zdrojový soubor kódu jazyka C obsahující zarážku otevřený v editoru Visual Studio Code.
- V okně editoru klikněte pravým tlačítkem myši a vyberte Otevřít zobrazení zpětného překladu nebo vyberte >Zobrazit paletu>příkazů Otevřít zobrazení zpětného překladu.
Pokud je aplikace spuštěná v reálném čase, zastavte ji.
azsphere device app stop --component-id <component id>
Znovu spusťte aplikaci v reálném čase s laděním.
azsphere device app start --component-id <component id>
Tento příkaz vrátí jádro, na kterém je aplikace spuštěná.
<component id> App state : running Core : Real time 0
Přejděte do složky Openocd pro složku sysroot, pomocí které byla aplikace vytvořena. Složky sysroot se instalují do instalační složky sady Azure Sphere SDK. Například ve Windows je složka ve výchozím nastavení nainstalována v
C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd
linuxu a v systému Linux na adrese/opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux
.Spuštění
openocd
jako následující příklad ukazuje. V příkladu se předpokládá, že aplikace běží na jádru 0. Pokud aplikace běží na jádru 1, nahraďte "targets io0" za "targets io1".Otevřete rozhraní příkazového řádku pomocí PowerShellu, příkazového řádku Windows nebo příkazového prostředí Linuxu.
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í 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
Server OpenOCD poskytuje rozhraní serveru GDB na :4444. Nastavte cíl pro ladění.
target remote :4444
Teď můžete spouštět příkazy gdb. Přidejte zarážku na funkci HandleSendTimerDeferred:
break HandleSendTimerDeferred
Emulátor připojeného terminálu by měl zobrazit výstup z aplikace podporující v reálném čase.
Otevřete nový příkazový řádek Azure Sphere (Windows) nebo okno terminálu (Linux).
Přejděte do složky, která obsahuje soubor .imagepackage aplikace vysoké úrovně.
Pokud je aplikace spuštěná, zastavte ji a restartujte ji laděním:
azsphere device app stop --component-id <ComponentId>
azsphere device app start --debug-mode --component-id <ComponentId>
Otevřete emulátor terminálu a vytvořte připojení Telnet nebo TCP k 192.168.35.2 na portu 2342 a zobrazte výstup aplikace vysoké úrovně.
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 více kořeny sysroot, aby aplikace mohly cílit na různé sady rozhraní API, jak je popsáno ve verzi modulu runtime aplikace, sysroots a beta rozhraníCH API. Složky sysroot se instalují do instalační složky sady Azure Sphere SDK v části Sysroots.
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
Přidejte zarážku na funkci SendMessageToRTApp:
break SendMessageToRTApp
Pokračujte zadáním
c
, 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í aplikace v reálném čase.Zadejte
c
pokračování a sledujte výstup v připojené sériové relaci.
Mezi relacemi ladění můžete pracovat a přepínat mezi aplikací podporujícími v reálném čase a aplikací vysoké úrovně. Ve dvou výstupních oknech 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.