Udostępnij za pośrednictwem


Tworzenie aplikacji z obsługą czasu rzeczywistego

Za pomocą programu Visual Studio, Visual Studio Code lub wiersza polecenia (CLI) można tworzyć i debugować aplikacje obsługują czas rzeczywisty (RTApps) w podobny sposób jak aplikacje wysokiego poziomu.

Wymagania wstępne

Włączanie tworzenia i debugowania

Aby można było utworzyć przykładową aplikację na urządzeniu Azure Sphere lub opracować dla niej nowe aplikacje, musisz włączyć tworzenie i debugowanie. Domyślnie urządzenia Usługi Azure Sphere są "zablokowane"; oznacza to, że nie zezwalają na aplikacje w trakcie opracowywania, które mają być ładowane z komputera, i nie zezwalają na debugowanie aplikacji. Przygotowanie urządzenia do debugowania usuwa to ograniczenie i ładuje oprogramowanie wymagane do debugowania i odblokowuje możliwości urządzenia.

Aby debugować rdzenie w czasie rzeczywistym, użyj polecenia az sphere device enable-development . To polecenie konfiguruje urządzenie do akceptowania aplikacji z komputera do debugowania i przypisuje urządzenie do grupy urządzeń deweloperów, która nie zezwala na aktualizacje aplikacji w chmurze.This command configures the device to accept applications from a PC for debugging and assigns the device to the development device group, which does not allow cloud application updates. Podczas tworzenia i debugowania aplikacji należy pozostawić urządzenie w tej grupie, aby aktualizacje aplikacji w chmurze nie zastępować aplikacji w trakcie opracowywania.

W systemie Windows musisz dodać --enable-rt-core-debugging parametr, który ładuje serwery debugowania i wymagane sterowniki dla każdego typu rdzenia na urządzeniu.

  1. Jeśli jeszcze tego nie zrobiono, zaloguj się do usługi Azure Sphere:

    az login
    
  2. Otwórz interfejs wiersza polecenia przy użyciu programu PowerShell lub wiersza polecenia systemu Windows z uprawnieniami administratora. Parametr --enable-rt-core-debugging wymaga uprawnień administratora, ponieważ instaluje sterowniki USB dla debugera.

  3. Wprowadź następujące polecenie:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Zamknij okno po zakończeniu wykonywania polecenia, ponieważ uprawnienia administratora nie są już wymagane. Najlepszym rozwiązaniem jest zawsze użycie najniższego uprawnienia, które może wykonać zadanie.

Jeśli polecenie az sphere device enable-development nie powiedzie się, zobacz Rozwiązywanie problemów z usługą Azure Sphere , aby uzyskać pomoc.

Włączanie tworzenia i debugowania

Aby można było utworzyć przykładową aplikację na urządzeniu Azure Sphere lub opracować dla niej nowe aplikacje, musisz włączyć tworzenie i debugowanie. Domyślnie urządzenia Usługi Azure Sphere są "zablokowane"; oznacza to, że nie zezwalają na aplikacje w trakcie opracowywania, które mają być ładowane z komputera, i nie zezwalają na debugowanie aplikacji. Przygotowanie urządzenia do debugowania usuwa to ograniczenie i ładuje oprogramowanie wymagane do debugowania i odblokowuje możliwości urządzenia zgodnie z opisem w artykule Możliwości urządzenia i komunikacja.

Aby debugować rdzenie w czasie rzeczywistym, użyj polecenia az sphere device enable-development . To polecenie konfiguruje urządzenie do akceptowania aplikacji z komputera do debugowania i przypisuje urządzenie do grupy urządzeń deweloperów, która nie zezwala na aktualizacje aplikacji w chmurze.This command configures the device to accept applications from a PC for debugging and assigns the device to the development device group, which does not allow cloud application updates. Podczas tworzenia i debugowania aplikacji należy pozostawić urządzenie w tej grupie, aby aktualizacje aplikacji w chmurze nie zastępować aplikacji w trakcie opracowywania.

W systemie Windows musisz dodać --enable-rt-core-debugging parametr, który ładuje serwery debugowania i wymagane sterowniki dla każdego typu rdzenia na urządzeniu.

  1. Zaloguj się na platformie Azure, jeśli jeszcze tego nie zrobiono:

    az login
    
  2. Otwórz interfejs wiersza polecenia przy użyciu programu PowerShell, wiersza polecenia systemu Windows lub powłoki poleceń systemu Linux z uprawnieniami administratora. Parametr --enable-rt-core-debugging wymaga uprawnień administratora, ponieważ instaluje sterowniki USB dla debugera.

  3. Wprowadź następujące polecenie:

    az sphere device enable-development --enable-rt-core-debugging
    
  4. Zamknij okno po zakończeniu wykonywania polecenia, ponieważ uprawnienia administratora nie są już wymagane. Najlepszym rozwiązaniem jest zawsze użycie najniższego uprawnienia, które może wykonać zadanie.

Jeśli polecenie az sphere device enable-development nie powiedzie się z następującym komunikatem o błędzie, zobacz Rozwiązywanie problemów z usługą Azure Sphere , aby uzyskać pomoc.

error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'az sphere device show-deployment-status'.

Stwórz aplikację RTApp przy użyciu Visual Studio Code

Aby utworzyć aplikację RTApp:

  1. W Visual Studio Code otwórz folder HelloWorld_RTApp_MT3620_BareMetal w klonie repo przykładów usługi Azure Sphere. Jeśli zostanie wyświetlony monit o wybranie zestawu, wybierz pozycję "Nie używaj zestawu".

  2. Naciśnij klawisz F5 , aby uruchomić debuger. Jeśli projekt nie został wcześniej utworzony lub wymagane są zmiany plików i ich odbudowanie, Visual Studio Code utworze projekt przed rozpoczęciem debugowania.

  3. Emulator podłączonego terminalu powinien wyświetlać dane wyjściowe aplikacji. Program wysyła następujące wyrazy w interwałach jednosekundowych:

    Tick

    Tock

    Uwaga

    Visual Studio Code zapewnia funkcję Intellisense, ale nie będzie automatycznie aktualizowana podczas modyfikowania CMakeLists.txt. Aby odświeżyć technologię Intellisense, należy uruchomić polecenie CMake: Delete Cache i Reconfigure . Widok obiektów docelowych CMake można znaleźć w widoku rozszerzenia CMake na lewym pasku.

Tworzenie aplikacji RTApp przy użyciu programu Visual Studio

Aby utworzyć aplikację RTApp:

  1. W programie Visual Studio wybierz pozycję Plik>CMake i przejdź do folderu zawierającego próbkę.

  2. Jeśli generowanie klucza CMake nie uruchamia się automatycznie, wybierz plik CMakeLists.txt.

  3. W programie> Visual Studio wyświetl danewyjściowe>pokazu z: dane wyjściowe CMake powinny zawierać komunikaty CMake generation started. iCMake generation finished.

  4. W menu CMake (jeśli jest dostępna) wybierz pozycję Konstruuj wszystko. Jeśli menu nie jest dostępne, otwórz Eksplorator rozwiązań, kliknij prawym przyciskiem myszy plik CMakeLists.txt i wybierz pozycję Konstruuj. Lokalizacja wyjściowa aplikacji Azure Sphere jest wyświetlana w oknie Dane wyjściowe .

  5. Naciśnij klawisz F5 , aby wdrożyć aplikację.

  6. Emulator podłączonego terminalu powinien wyświetlać dane wyjściowe aplikacji. Program wysyła następujące wyrazy w interwałach jednosekundowych:

    Tick

    Tock

    Uwaga

    • Program Visual Studio udostępnia funkcję Intellisense dla usługi Azure Sphere RTApps, zbierając dane z pamięci podręcznej CMake. Program Visual Studio aktualizuje pamięć podręczną za każdym razem, gdy zmienia się plik CMakeLists.txt lub CMakeSettings.json w usłudze RTApp.

    • Domyślnie w programie Visual Studio jest używany widok folderów. Jeśli wolisz logiczny widok projektu CMake, możesz zmienić go na widok Obiektów docelowych CMake. W Eksplorator rozwiązań wybierz ikonę przełącznika folderu:

      Przełączanie między widokami rozwiązania i folderu

      Z menu rozwijanego wybierz CMake Targets View.

    • Aplikacja może rozpocząć wykonywanie przed OpenOCD tworzy połączenie. W związku z tym punkty przerwania ustawione na początku kodu mogą zostać pominięte. Prostym obejściem tego problemu jest opóźnienie uruchamiania aplikacji do momentu nawiązania połączenia przez openOCD.

      1. Wstaw następujący kod na początku punktu wejścia aplikacji RTCoreMain. Spowoduje to, że aplikacja będzie wprowadzać i pozostać w while pętli, dopóki zmienna f nie zostanie ustawiona na wartość true.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Naciśnij klawisz F5, aby uruchomić aplikację z debugowaniem, a następnie włamać się do wykonania.

      3. W okienku Debugowanie miejscowi zmień wartość f z zero na jedną.

      4. Przeprowadź ten kod w normalny sposób.

Konstruuj aplikację RTApp przy użyciu interfejsu CLI

W poniższych instrukcjach założono, że korzystasz z usługi CMake. Jeśli wolisz korzystać z wiersza polecenia bez używania funkcji CMake, możesz określić odpowiednie opcje kompilatora i linkera, patrząc na pliki AzureSphereToolchainBase.cmake i AzureSphereRTCoreToolchain.cmake, które są instalowane za pomocą zestawu SDK Azure Sphere.

  1. Otwórz interfejs wiersza polecenia przy użyciu programu PowerShell, wiersza polecenia systemu Windows lub powłoki poleceń systemu Linux. Przejdź do katalogu kompilacji projektu.

  2. W katalogu kompilacji projektu w wierszu polecenia uruchom program CMake z następującymi parametrami:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      Wstępnie ustawiona nazwa konfiguracji kompilacji zdefiniowana w CMakePresets.json.

    • --build <cmake-path>

      Katalog binarny zawierający pamięć podręczną CMake. Jeśli na przykład uruchomisz narzędzie CMake na przykładzie usługi Azure Sphere, polecenie kompilacji będzie miało wartość cmake --build out/ARM-Debug.

    • <source-path>

      Ścieżka katalogu zawierającego pliki źródłowe dla przykładowej aplikacji. W tym przykładzie repozytorium próbek azure Sphere zostało pobrane do katalogu o nazwie AzSphere.

      Parametry klucza CMake są oddzielone spacjami. Znak kontynuacji wiersza (^ dla wiersza polecenia systemu Windows, \dla wiersza polecenia systemu Linux lub ' dla programu PowerShell) może być używany w celu zwiększenia czytelności, ale nie jest wymagany.

    W poniższych przykładach pokazano polecenia CMake dla helloworld RTApp:

    Wiersz polecenia systemu Windows

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. Uruchom ninja, aby zbudować aplikację i utworzyć plik pakietu obrazów:

    ninja -C out/ARM-Debug
    

    Ninja umieszcza otrzymane pliki aplikacji i plików imagepackage w określonym katalogu.

    Możesz również wywołać ninja za pośrednictwem CMake za pomocą następującego polecenia:

    cmake --build out/<binary-dir>
    

    Ustaw <binary-dir> na katalog binarny, który zawiera pamięć podręczną CMake. Jeśli na przykład uruchomisz narzędzie CMake na przykładzie usługi Azure Sphere, polecenie kompilacji będzie miało wartość cmake --build out/ARM-Debug.

  4. Usuń wszystkie aplikacje, które są już wdrożone na urządzeniu:

    az sphere device sideload delete
    
  5. Wdróż pakiet obrazu utworzony przez ninja:

    az sphere device sideload deploy --image-package <package-name>
    
  6. Uzyskaj identyfikator składnika obrazu:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    Polecenie zwróci wszystkie metadane pakietu obrazów. Identyfikator składnika aplikacji jest wyświetlany w sekcji Tożsamość dla typu obrazu aplikacji. Na przykład:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    
  7. Określ, na którym rdzeniu działa aplikacja.

    Domyślnie aplikacja RTApp jest wdrażana w pierwszym dostępnym rdzeniu w czasie rzeczywistym na urządzeniu; nie można obecnie określić określonego rdzenia. Aby dowiedzieć się, na którym rdzeniu działa aplikacja, użyj polecenia az sphere device app , aby zatrzymać, a następnie ponownie uruchomić aplikację. Podaj identyfikator składnika aplikacji w poleceniach. Na przykład:

    az sphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    az sphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. Emulator podłączonego terminalu powinien wyświetlać dane wyjściowe aplikacji. Program wysyła następujące wyrazy w interwałach jednosekundowych:

    Tick

    Tock

Rejestrowanie danych wyjściowych z aplikacji RTApp

Każdy rdzeń w czasie rzeczywistym na MT3620 ma dedykowany obiekt UART przeznaczony do rejestrowania danych wyjściowych. Rdzenie w czasie rzeczywistym mogą również uzyskiwać dostęp do funkcji UARTs ISU. Baza danych RDB MT3620 udostępnia tylko pinezkę TX, której można użyć do wyświetlania danych wyjściowych dziennika z aplikacji. Inny sprzęt może narazić to inaczej lub wcale. Aby wyświetlić dane wyjściowe dziennika, skonfiguruj sprzęt tak, aby wyświetlał te dane wyjściowe zgodnie z opisem w przewodniku Szybki start. Dedykowany obiekt UART nie wymaga wymagania manifestu Uart aplikacji, jednak nie powinien być używany do celów innych niż rejestrowanie danych wyjściowych dla funkcji RTApp.

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.

Dodatkowe zasoby

Dodatkowe sterowniki i próbki dla aplikacji RTApps kierujących rdzenie M4 w czasie rzeczywistym na mikroukład MT3620 są dostępne w witrynie GitHub od partnerów platformy Azure Sphere: