Udostępnij za pośrednictwem


Rozwiązywanie problemów z aplikacjami zdolnymi do pracy w czasie rzeczywistym

Poniżej przedstawiono niektóre kroki rozwiązywania problemów, które mogą wystąpić podczas opracowywania aplikacji obsługujących czas rzeczywisty (RTApps).

Problemy z debugowaniem

Debugowanie może zakończyć się niepowodzeniem z następujących powodów:

  • Windows Update zastępuje sterownik USB dla rdzeni w czasie rzeczywistym ogólnym sterownikiem. Aby przywrócić funkcje debugowania dla rdzeni w czasie rzeczywistym, otwórz interfejs wiersza polecenia za pomocą programu PowerShell lub wiersza polecenia systemu Windows z uprawnieniami administratora i ponownie włącz debugowanie podstawowe w czasie rzeczywistym. Wymagany sterownik USB jest instalowany podczas uruchamiania:

    az sphere device enable-development --enable-rt-core-debugging
    
  • Plik ustawień debugowania zawiera błędy. W takiej sytuacji debuger może się nie uruchomić. Jeśli ustawienia debugera zostały edytowane, upewnij się, że składnia pliku jest poprawna.

  • Debuger mikroukład mógł już zostać uruchomiony w innym kontekście. Jeśli zostanie wyświetlony błąd, taki jak "Debuger Server: Error: couldn't bind gdb to socket on port 4444: Address already in use" (Serwer debugera: błąd: libusb_open() nie powiodło się w przypadku LIBUSB_ERROR_ACCESS), sprawdź, czy jest już uruchomiony proces openocd lub gdb.

    Jeśli używasz systemu Linux, polecenie sudo lsof -n -i :4444 | grep LISTEN powinno pokazać wszystkie procesy trzymające port 4444 otwarty. Zamiana 4444 na inne porty wymienione w komunikacie o błędzie powinna zawierać te same informacje dotyczące tego portu.

  • Być może brakuje Ci pakietu libncurses5 w systemie Ubuntu 20.04. Jeśli widzisz błąd, taki jak "błąd podczas ładowania bibliotek udostępnionych: libncurses.so.5: nie można otworzyć udostępnionego pliku obiektowego: Nie ma takiego pliku lub katalogu", zainstaluj pakiet w następujący sposób:

    sudo add-apt-repository universe
    sudo apt-get install libncurses5
    
  • Jeśli spróbujesz debugować aplikację wysokiego poziomu i dwie aplikacje RTApp jednocześnie za pomocą wielu wystąpień programu Visual Studio, drugie wystąpienie programu Visual Studio nie będzie w stanie nawiązać połączenia z debugerem. Aby obejść ten problem, debugowanie wszystkich aplikacji z jednego wystąpienia programu Visual Studio, zgodnie z opisem w artykule Debugowanie aplikacji partnerów.

Problemy z usługą CMake

Podczas korzystania z usługi CMake za pomocą aplikacji RTApp mogą wystąpić następujące problemy:

  • Przy pierwszym otwarciu projektu CMake w programie Visual Studio generowanie CMakeLists jest uruchamiane automatycznie i ustawia identyfikator składnika aplikacji. Jeśli następnie usuniesz identyfikator składnika — na przykład ze względu na to, że aplikacja znajduje się w repozytorium GitHub i przeprowadzono resetowanie sprzętowe — kompilacja nie powiedzie się. Aby rozwiązać ten problem, ponownie zregeneruj pamięć podręczną usługi CMake w programie Visual Studio.
  • Element uruchamiania CMakeLists.txt jest często regenerowany. Zadanie CMakeLists jest uruchamiane za każdym razem, gdy program Visual Studio regeneruje pamięć podręczną CMake. W związku z tym może być często uruchamiany.
  • Program Visual Studio zawiesza się podczas tworzenia aplikacji RTApp za pomocą usługi CMake. Aby uniknąć tego problemu, użyj aktualizacji 1 lub nowszej programu Visual Studio 2019.

Ogólnie rzecz biorąc, jeśli podczas pracy z usługą CMake wystąpią błędy, spróbuj ponownie wygenerować pamięć podręczną usługi CMake. Często rozwiązuje to problemy.