Tworzenie aplikacji partnerów

Najprostszym sposobem na utworzenie nowej pary aplikacji partnerskich jest utworzenie katalogu najwyższego poziomu zawierającego aplikacje obsługujące zarówno aplikacje wysokiego poziomu, jak i aplikacje z obsługą czasu rzeczywistego, a następnie utworzenie aplikacji z obsługą wysokiego poziomu i czasu rzeczywistego.

Tworzenie aplikacji wysokiego poziomu

Aby utworzyć aplikację wysokiego poziomu, zacznij od szablonu HLCore Blank z rozszerzenia Visual Studio Code Azure Sphere i dostosuj konfigurację do projektu, wykonując następujące czynności:

  1. Rozpocznij Visual Studio Code. Wybierz pozycję Wyświetl>paletę poleceń, a następnie wpisz Azure Sphere: Generate New Project (Wygeneruj nowy projekt).

    Pasek poleceń w kodzie programu Visual Studio

  2. Z menu Szablony wybierz pozycję HLCore Blank (Puste szablony).

    Menu podręczne z nazwami szablonów

  3. Visual Studio Code następnie zostanie wyświetlone okno Eksplorator plików. Przejdź do folderu, w którym chcesz umieścić pustą aplikację (lub wybierz pozycję Nowy folder i utwórz nowy katalog projektu partnerskiego najwyższego poziomu) i określ nazwę projektu, na przykład NewHLApp. Visual Studio Code tworzy folder NewHLApp w wybranej lokalizacji i generuje pliki kompilacji dla pustej aplikacji. Powinny być widoczne wiadomości z usługi CMake.

  4. Otwórz plik CMakeLists.txt i określ folder zawierający definicje używanego sprzętu. Domyślnie aplikacja HLCore Blank nie zawiera definicji sprzętu. Możesz znaleźć przykładowe definicje sprzętu w repozytorium Próbki azure Sphere lub utworzyć jedną z nich zgodnie z opisem w artykule Definicje sprzętu.

    Poniżej przedstawiono sposób dodawania przykładowych definicji sprzętu dla zestawu deweloperów Seeed Azure Sphere MT3620:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")

    Ten wiersz powinien zostać wstawiony przed rozpoczęciem azsphere_target_add_image_packageostatniego polecenia.

Możesz również utworzyć nową aplikację wysokiego poziomu na podstawie dowolnej z próbek platformy Azure Sphere wysokiego poziomu:

  1. Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji wysokiego poziomu i zmień jego nazwę dla projektu.

  2. W pliku CMakeLists.txt zmień nazwę projektu na nazwę nowego folderu. Na przykład:

    PROJECT(NewHLApp C)

Tworzenie aplikacji RTApp

Aby utworzyć nową aplikację w czasie rzeczywistym, zacznij od szablonu RTCore Blank z rozszerzenia Visual Studio Code Azure Sphere i dostosuj konfigurację do projektu, wykonując następujące czynności:

  1. Rozpocznij Visual Studio Code. Wybierz pozycję Wyświetl>paletę poleceń, a następnie wpisz Azure Sphere: Generate New Project (Wygeneruj nowy projekt).

    Pasek poleceń w kodzie programu Visual Studio

  2. Wybierz pozycję RTCore Blank (RtCore Blank) z menu Szablony.

    Menu podręczne z nazwami szablonów

  3. Visual Studio Code następnie zostanie wyświetlone okno Eksplorator plików. Przejdź do folderu zawierającego folder aplikacji wysokiego poziomu i określ nazwę projektu, na przykład NewRTApp. Visual Studio Code tworzy folder NewRTApp w wybranej lokalizacji i generuje pliki kompilacji dla pustej aplikacji. Powinny być widoczne wiadomości z usługi CMake.

Możesz również utworzyć nową aplikację z obsługą czasu rzeczywistego na podstawie dowolnych przykładów usługi Azure Sphere z obsługą czasu rzeczywistego:

  1. Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji wysokiego poziomu i zmień jego nazwę dla projektu.

  2. W pliku CMakeLists.txt zmień nazwę projektu na nazwę nowego folderu. Na przykład:

    PROJECT(NewRTApp C)

Konfigurowanie obszaru roboczego do tworzenia aplikacji partnerów

Aby skutecznie łączyć się z aplikacją wysokiego poziomu i aplikacją z obsługą czasu rzeczywistego na potrzeby opracowywania, połącz dwie aplikacje w jeden wielopoziomowy obszar roboczy w następujący sposób:

  1. Otwórz wysokiego poziomu folder aplikacji w Visual Studio Code.

  2. Wybierz pozycję Plik>Dodaj folder do obszaru roboczego, a następnie wybierz odpowiedni folder aplikacji w czasie rzeczywistym.

  3. Wybierz pozycjęZapisz obszar roboczypliku> jako..., a następnie zapisz plik w folderze zawierającym zarówno aplikacje z obsługą w czasie rzeczywistym, jak i aplikacje wysokiego poziomu.

  4. Otwórz plik obszaru roboczego w edytorze tekstów i dodaj następujące informacje o uruchamianiu bezpośrednio za wierszem "settings" :

    "launch": {
        "configurations": [{
            "name": "Launch Azure Sphere Apps (All Cores)",
            "type": "azurespheredbg",
            "request": "launch",
            "args": [],
            "stopAtEntry": false,
            "environment": [],
            "externalConsole": true,
            "partnerComponents": [],
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }],
        "compounds": []
    }

Więcej informacji na temat wielokorektowych obszarów roboczych można znaleźć w dokumentacji Visual Studio Code.

Tworzenie aplikacji wysokiego poziomu

Aby utworzyć nową aplikację wysokiego poziomu, zacznij od szablonu HLCore Blank z rozszerzenia Visual Studio Azure Sphere i dostosuj konfigurację do projektu, wykonując następujące czynności:

  1. Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.

  2. Wpisz Azure Sphere tekst w polu wyszukiwania z etykietą Wyszukaj szablony. Wybierz pozycję Azure Sphere HLCore Blank z listy zwróconych, a następnie wybierz pozycję Dalej.

  3. Określ nazwę projektu (na przykład NewHLApp), lokalizację pliku projektu i nazwę rozwiązania (która może być taka sama jak nazwa projektu), a następnie wybierz pozycję Utwórz. Program Visual Studio utworzy folder NewHLpp w wybranej lokalizacji i wygeneruje pliki kompilacji dla pustej aplikacji. Powinny być widoczne wiadomości z usługi CMake.

  4. Otwórz plik CMakeLists.txt i określ folder zawierający definicje używanego sprzętu. Domyślnie pusta aplikacja HL nie zawiera definicji sprzętu. Możesz znaleźć przykładowe definicje sprzętu w repozytorium Próbki azure Sphere lub utworzyć jedną z nich zgodnie z opisem w artykule Definicje sprzętu.

    Poniżej przedstawiono sposób dodawania przykładowych definicji sprzętu dla zestawu deweloperów Seeed Azure Sphere MT3620:

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")

    Ten wiersz powinien zostać wstawiony przed rozpoczęciem azsphere_target_add_image_packageostatniego polecenia.

Możesz również utworzyć nową aplikację wysokiego poziomu na podstawie dowolnej z próbek platformy Azure Sphere wysokiego poziomu:

  1. Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji wysokiego poziomu i zmień jego nazwę dla projektu.

  2. W pliku CMakeLists.txt zmień nazwę projektu na nazwę nowego folderu. Na przykład:

    PROJECT(NewHLApp C)

Tworzenie aplikacji RTApp

Aby utworzyć nową aplikację z obsługą czasu rzeczywistego, zacznij od szablonu RTCore Blank z rozszerzenia Visual Studio Azure Sphere i dostosuj konfigurację do projektu, wykonując następujące czynności:

  1. Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.

  2. Wpisz Azure Sphere tekst w polu wyszukiwania z etykietą Wyszukaj szablony. Wybierz pozycję Azure Sphere RTCore Blank z listy zwróconych, a następnie wybierz pozycję Dalej.

  3. Określ nazwę projektu (na przykład NewRTApp), lokalizację pliku projektu i nazwę rozwiązania użytą dla aplikacji wysokiego poziomu, a następnie wybierz pozycję Utwórz. Program Visual Studio utworzy folder NewRTApp w wybranej lokalizacji i wygeneruje pliki kompilacji dla pustej aplikacji. Powinny być widoczne wiadomości z usługi CMake.

Możesz również utworzyć nową aplikację z obsługą czasu rzeczywistego na podstawie dowolnych przykładów usługi Azure Sphere z obsługą czasu rzeczywistego:

  1. Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji z obsługą czasu rzeczywistego i zmień jego nazwę dla projektu.

  2. W pliku CMakeLists.txt zmień nazwę projektu na nazwę nowego folderu. Na przykład:

    PROJECT(NewRTApp C)

Tworzenie pliku uruchamiania programu Visual Studio najwyższego poziomu

Aby jednocześnie pracować z aplikacjami partnerów, chcesz zezwolić programowi Visual Studio na debugowanie do wielu rdzeni. Można to włączyć, tworząc plik launch.vs.json w folderze najwyższego poziomu zawierającym dwa foldery aplikacji partnerów. Ten plik powinien mieć zawartość podobną do następującej:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "azurespheredbg",
      "name": "Azure Sphere Apps (All Cores)",
      "project": "PartnerAppsHL/CMakeLists.txt",
      "DebugBuildStepBuildAll": "true",
      "workingDirectory": "${workspaceRoot}",
      "applicationPath": "${debugInfo.target}",
      "imagePath": "${debugInfo.targetImage}",
      "targetCore": "AnyCore",
      "partnerComponents": [ "0cc81b35-08dd-4d65-b318-5fa73a4ff6b1", "a9d25f0a-807e-4cb9-80e8-80fee5a1bcb4" ]
    }
  ]
}

Wiersz "project" powinien zawierać ścieżkę względną do pliku CMakeLists.txt aplikacji wysokiego poziomu, a "partnerComponents" wiersz powinien zawierać identyfikatory składników dwóch aplikacji partnerskich.

Po utworzeniu pliku launch.vs.json najwyższego poziomu możesz otworzyć program Visual Studio w folderze najwyższego poziomu, a w menu Wybierz element startowy zobaczysz opcję Aplikacje Azure Sphere (Wszystkie rdzenie).

Tworzenie pliku CMakeWorkspaceSettings.json

Jeśli używasz programu Visual Studio 2022 w wersji 17.1 lub nowszej i masz projekt z wieloma korzeniami, takimi jak przykład IntercoreComms, musisz dodać plik CMakeWorkspaceSettings.json do folderu najwyższego poziomu projektu. Plik zawiera dwa wpisy, jeden określający, że jest włączona kompilacja CMake i jeden zawierający ścieżki do wielu katalogów głównych. Na przykład dla przykładu IntercoreComms plik CMakeWorkspaceSettings.json ma następującą zawartość:

{
  "enableCMake": true,
  "sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}

Ścieżki są określone względem folderu zawierającego plik CMakeWorkspaceSettings.json.

Tworzenie aplikacji wysokiego poziomu

Aby utworzyć nową aplikację wysokiego poziomu, rozpocznij od dowolnej z próbek platformy Azure Sphere wysokiego poziomu:

  1. Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji wysokiego poziomu i zmień jego nazwę dla projektu.

  2. W pliku CMakeLists.txt zmień nazwę projektu na nazwę nowego folderu. Na przykład:

    PROJECT(NewHLApp C)

Tworzenie aplikacji RTApp

Najprostszym sposobem utworzenia nowej aplikacji z obsługą czasu rzeczywistego jest rozpoczęcie od przykładu HelloWorld_RTApp_MT3620_BareMetal i dostosowanie konfiguracji do projektu, wykonując następujące czynności:

  1. Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj folder HelloWorld_RTApp_MT3620_BareMetal i zmień jego nazwę dla projektu.

  2. W pliku CMakeLists.txt zmień nazwę projektu na nazwę nowego folderu. Na przykład:

    PROJECT(NewRTApp C)

Podstawowa struktura plików aplikacji Azure Sphere

Niezależnie od sposobu tworzenia aplikacji wszystkie aplikacje Azure Sphere udostępniają następujące pliki podstawowe:

  • Kod źródłowy aplikacji w jednym lub kilku plikach. Obecnie jest obsługiwany tylko kod źródłowy języka C.
  • Pliki kompilacji CMake. CMakeLists.txt jest wymagane. CMake, wraz z narzędziem ninja lightweight build, jest używany do sterowania procesem tworzenia aplikacji Azure Sphere.
  • Plik manifestu aplikacji z opisem możliwości dostępnych dla aplikacji.

Aplikacje wysokiego poziomu zwykle mają co najmniej trzy inne pliki:

  • Plik applibs-versions.h określający poziomy wersji różnych interfejsów API Azure Sphere
  • Dwa pliki definicji sprzętu (wersja edytowalna w formacie JSON i język C obejmują wygenerowany z niego plik), które zapewniają wygodny sposób odwoływania się do składników sprzętu w kodzie. Dzięki spójnemu zestawowi plików definicji sprzętu możesz pisać kod źródłowy niezależny od sprzętu, a następnie tworzyć obrazy aplikacji dla określonego sprzętu, po prostu ponownie kierując odpowiedni plik definicji sprzętu w pliku CMakeLists.txt.

Aplikacje obsługujące w czasie rzeczywistym dodają co najmniej jeden inny plik: plik linker.ld, aby dokładnie określić, gdzie różne składniki aplikacji mają być ładowane w rdzeniu w czasie rzeczywistym.

Pisanie kodu aplikacji wysokiego poziomu

  1. Napisz kod aplikacji wysokiego poziomu, używając przykładów aplikacji wysokiego poziomu Azure Sphere jako przewodników. W poniższych tematach opisano konkretne scenariusze implementacji:
  2. W plikuCMakeLists.txt:
    • Określanie poprawki narzędzia Azure Sphere SDK
    • Określanie docelowego zestawu interfejsu API
    • Określanie sprzętu docelowego
  3. W pliku app_manifest.json:
    • Ustaw Name nazwę projektu.
    • Dodaj wszelkie funkcje specyficzne dla aplikacji wymagane przez kod, takie jak zasoby sprzętowe lub połączenia. Jeśli aplikacja wysokiego poziomu komunikuje się z RTApp, dodaj identyfikator składnika aplikacji wysokiego poziomu do AllowedApplicationConnections funkcji.
  1. Jeśli chcesz wdrożyć aplikację RTApp wraz z aplikacją partnerów wysokiego poziomu, dodaj identyfikator składnika partnera w polu partnerComponents sekcji konfiguracji pliku launch.vs.json (Visual Studio) lub vscode/launch.json (Visual Studio Code):

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Napisz kod RTApp

  1. Napisz kod RTApp, używając przykładów usługi Azure Sphere RTApp jako przewodników. W poniższych tematach opisano konkretne scenariusze implementacji:
  2. W pliku app_manifest.json:
    • Ustaw Name nazwę projektu,
    • Ustaw ApplicationType wartość "RealTimeCapable"
    • Dodaj wszelkie funkcje specyficzne dla aplikacji wymagane przez kod, takie jak zasoby sprzętowe lub połączenia. Jeśli aplikacja RTApp komunikuje się z aplikacją wysokiego poziomu, dodaj identyfikator składnika aplikacji wysokiego poziomu do AllowedApplicationConnections funkcji.
  1. Jeśli chcesz wdrożyć aplikację RTApp wraz z aplikacją partnerów wysokiego poziomu, dodaj identyfikator składnika partnera w polu partnerComponents sekcji konfiguracji pliku launch.vs.json (Visual Studio) lub vscode/launch.json (Visual Studio Code):

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Zobacz też