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:
Rozpocznij Visual Studio Code. Wybierz pozycję Wyświetl>paletę poleceń, a następnie wpisz Azure Sphere: Generate New Project (Wygeneruj nowy projekt).
Z menu Szablony wybierz pozycję HLCore Blank (Puste szablony).
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.
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_package
ostatniego polecenia.
Możesz również utworzyć nową aplikację wysokiego poziomu na podstawie dowolnej z próbek platformy Azure Sphere wysokiego poziomu:
Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji wysokiego poziomu i zmień jego nazwę dla projektu.
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:
Rozpocznij Visual Studio Code. Wybierz pozycję Wyświetl>paletę poleceń, a następnie wpisz Azure Sphere: Generate New Project (Wygeneruj nowy projekt).
Wybierz pozycję RTCore Blank (RtCore Blank) z menu Szablony.
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:
Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji wysokiego poziomu i zmień jego nazwę dla projektu.
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:
Otwórz wysokiego poziomu folder aplikacji w Visual Studio Code.
Wybierz pozycję Plik>Dodaj folder do obszaru roboczego, a następnie wybierz odpowiedni folder aplikacji w czasie rzeczywistym.
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.
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:
Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.
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.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.
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_package
ostatniego polecenia.
Możesz również utworzyć nową aplikację wysokiego poziomu na podstawie dowolnej z próbek platformy Azure Sphere wysokiego poziomu:
Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji wysokiego poziomu i zmień jego nazwę dla projektu.
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:
Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.
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.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:
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.
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:
Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji wysokiego poziomu i zmień jego nazwę dla projektu.
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:
Sklonuj próbki ponownie , jeśli jeszcze tego nie zrobiono. Skopiuj folder HelloWorld_RTApp_MT3620_BareMetal i zmień jego nazwę dla projektu.
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
- 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:
- Korzystanie z urządzeń peryferyjnych w aplikacji wysokiego poziomu
- Nawiązywanie połączenia z usługami sieci Web
- Używanie wolfSSL do połączeń TLS
- Zarządzanie certyfikatami
- Opis użycia pamięci
- Odraczania aktualizacji urządzenia
- Zarządzanie czasem i korzystanie z zegara w czasie rzeczywistym
- Korzystanie z pamięci urządzenia
- Komunikowanie się za pomocą aplikacji obsługowej w czasie rzeczywistym
- Zarządzanie stanem zasilania
- Ustawianie profilów zasilania
- Przeprowadzanie odnajdowania usługi
- W plikuCMakeLists.txt:
- Określanie poprawki narzędzia Azure Sphere SDK
- Określanie docelowego zestawu interfejsu API
- Określanie sprzętu docelowego
- 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.
- Ustaw
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
- 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:
- 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.
- Ustaw
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" ]