Udostępnij za pośrednictwem


Debugowanie aplikacji z obsługą czasu rzeczywistego

Aplikacje RTApps są debugowane przy użyciu openocd, który jest zainstalowany z zestawem Azure Sphere SDK, oraz wersji GDB, która jest zainstalowana jako część osadzonego narzędzia ARM GNU.

Debugowanie rtapp z visual studio

  1. Upewnij się, że urządzenie jest podłączone do komputera za pomocą portu USB. W menu Ustaw element startowy wybierz pozycję Azure Sphere App (RT Core), gdzie aplikacja Azure Sphere to nazwa bieżącej aplikacji obsługującej w czasie rzeczywistym lub naciśnij klawisz F5.

    Przycisk Zdalny debuger GDB

  2. Jeśli zostanie wyświetlony monit o skonstruowanie projektu, wybierz pozycję Tak. Visual Studio kompiluje aplikację z obsługą czasu rzeczywistego, tworzy pakiet obrazów, pobiera go na tablicę i uruchamia w trybie debugowania. Ładowanie bezpośrednie oznacza, że aplikacja jest dostarczana bezpośrednio z komputera za pośrednictwem połączenia przewodowego, a nie dostarczana przez chmurę.

    Zwróć uwagę na identyfikator obrazu pakietu obrazów w wyniku wyświetlenia> pokazuwyjściowego>z: dane wyjściowe kompilacji Gdy wszystko będzie gotowe do utworzenia wdrożenia, musisz znać ścieżkę do pakietu obrazów.

  3. Domyślnie w oknie Dane wyjściowe są wyświetlane dane wyjściowe z danych wyjściowych urządzenia. Aby wyświetlić wiadomości z debugera, wybierz debugowanie z menu rozwijanego Pokaż dane wyjściowe z . Możesz również sprawdzić dezasemblowanie programu, rejestry lub pamięć za pomocą menu Debugowanie>systemu Windows .

Program Visual Studio konfiguruje połączenia między serwerem GDB i openOCD, dzięki czemu można używać standardowego interfejsu debugowania programu Visual Studio (F5, F6, F9 dla punktów przerwania i tak dalej) w aplikacji RTApp w taki sam sposób jak w aplikacji wysokiego poziomu.

Po zatrzymaniu w punkcie przerwania w kodzie źródłowym C można otworzyć okno Dezasembly pokazujące bieżący adres, mnemonic assembler dla bieżącego polecenia oraz informacje, takie jak rejestry lub wykonywane polecenie kodu źródłowego.

Aby otworzyć okno Dezasembly :

  1. Upewnij się, że plik źródła kodu C zawierający punkt przerwania jest otwarty w programie Visual Studio.
  2. Wybierz pozycję Debugowanie>demontażusystemu Windows> lub naciśnij klawisze Alt+8.

Debugowanie aplikacji RTApp za pomocą Visual Studio Code

Visual Studio Code jest debugowany przez naciśnięcie klawisza F5 lub uruchomienie polecenia debugowania z widoku debugowania na lewym pasku. W próbkach plik vscode/launch.json już istnieje, więc debugowanie rozpocznie się natychmiast. W nowej aplikacji debugowanie najpierw zapyta, czy jest to aplikacja HLApp, czy RTApp, i utworzy plik vscode/launch.json na podstawie odpowiedzi. Debugowanie zostanie włączone.

Po zatrzymaniu w punkcie przerwania w kodzie źródłowym C można otworzyć widok Dezasembly pokazujący bieżący adres, nieprzetworzone dane szesnastkowe, mnemonic assembler dla bieżącego polecenia oraz informacje, takie jak rejestry lub wykonywane polecenie kodu źródłowego.

Aby otworzyć widok Dezasembly:

  1. Upewnij się, że plik źródła kodu C zawierający punkt przerwania jest otwarty w edytorze Visual Studio Code.
  2. Kliknij prawym przyciskiem myszy w oknie edytora i wybierz pozycję Otwórz widok dezasembly lub wybierz polecenie Wyświetl>paletę> poleceńOtwórz widok dezasembly.

Debugowanie rtapp przy użyciu cli

  1. Uruchom aplikację do debugowania:

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

    To polecenie zwraca rdzeń, na którym działa aplikacja.

  2. Przejdź do folderu Openocd dla sysroot, za pomocą których aplikacja została utworzona. W tym przewodniku Szybki start sysroot to 5+Beta2004. Sysroots są instalowane w folderze instalacji Azure Sphere SDK. Na przykład w systemie Windows folder jest domyślnie instalowany w systemie C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd Linux i w systemie Linux pod adresem /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocd.

  3. Uruchom openocd , jak pokazano w poniższym przykładzie. W przykładzie założono, że aplikacja jest uruchomiona na rdzeniu 0. Jeśli aplikacja działa na rdzeniu 1, zamień elementy docelowe io0 na "cele 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"
    
  4. Otwórz interfejs wiersza polecenia przy użyciu programu PowerShell, wiersza polecenia systemu Windows lub powłoki poleceń systemu Linux.

  5. Przejdź do folderu zawierającego plik .out aplikacji i uruchom arm-none-eabi-gdb, który jest częścią arm GNU Embedded Toolchain:

    Wiersz polecenia systemu 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
    
  6. Serwer OpenOCD zapewnia interfejs serwera GDB w systemie :4444. Ustaw cel debugowania.

    target remote :4444

  7. Uruchom dowolne polecenia gdb, które wybierzesz.

Twórz za pomocą aplikacji partnerów

Po załadowaniu aplikacji na urządzenie Azure Sphere narzędzia wdrażania Azure Sphere domyślnie usuwają wszystkie istniejące aplikacje. Aby zapobiec temu, gdy tworzysz aplikacje, które komunikują się ze sobą, musisz oznaczyć aplikacje jako partnerów. Po wdrożeniu jednej z aplikacji jej partnerzy nie zostaną usunięci. Aby uzyskać szczegółowe informacje, zobacz Oznaczanie aplikacji jako partnerów .

Rozwiązywanie problemów

Jeśli wystąpią problemy, zobacz Rozwiązywanie problemów z aplikacjami obsługującymi czas rzeczywisty.