Tworzenie aplikacji partnerskich
Ważne
Jest to dokumentacja usługi Azure Sphere (starsza wersja). Usługa Azure Sphere (starsza wersja) zostanie wycofana 27 września 2027 r., a użytkownicy muszą przeprowadzić migrację do usługi Azure Sphere (zintegrowanej) do tej pory. Użyj selektora wersji znajdującego się powyżej spisu treści, aby wyświetlić dokumentację usługi Azure Sphere (zintegrowaną).
Najprostszym sposobem utworzenia nowej pary aplikacji partnerskich jest utworzenie katalogu najwyższego poziomu zawierającego zarówno aplikacje z obsługą wysokiego poziomu, jak i w czasie rzeczywistym, a następnie utworzenie aplikacji obsługujących wysoki i w czasie rzeczywistym.
Tworzenie aplikacji wysokiego poziomu
Aby utworzyć aplikację wysokiego poziomu, zacznij od szablonu HLCore Blank z rozszerzenia usługi Azure Sphere programu Visual Studio Code i dostosuj konfigurację do projektu, wykonując następujące kroki:
Uruchom program Visual Studio Code. Wybierz pozycję Wyświetl>paletę poleceń, a następnie wpisz Azure Sphere: Generuj nowy projekt.
Wybierz pozycję HLCore Blank z menu Szablony.
Następnie program Visual Studio Code wyświetla 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 partnera najwyższego poziomu) i określ nazwę projektu, na przykład NewHLApp. Program Visual Studio Code tworzy folder NewHLApp w wybranej lokalizacji i generuje pliki kompilacji dla pustej aplikacji. Powinny być wyświetlane komunikaty z narzędzia 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. Przykładowe definicje sprzętu można znaleźć w repozytorium Przykładów usługi Azure Sphere lub utworzyć je zgodnie z opisem w temacie Definicje sprzętu.
Poniżej przedstawiono sposób dodawania przykładowych definicji sprzętu dla zestawu Dewelopera Seeed Azure Sphere MT3620:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Ten wiersz należy wstawić przed ostatnim poleceniem rozpoczynającym się
azsphere_target_add_image_package
.
Możesz również utworzyć nową aplikację wysokiego poziomu na podstawie dowolnych przykładów wysokiego poziomu usługi Azure Sphere:
Sklonuj repozytorium przykładów, 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 usługi Azure Sphere programu Visual Studio Code i dostosuj konfigurację do projektu, wykonując następujące kroki:
Uruchom program Visual Studio Code. Wybierz pozycję Wyświetl>paletę poleceń, a następnie wpisz Azure Sphere: Generuj nowy projekt.
Wybierz pozycję RTCore Blank z menu Szablony.
Następnie program Visual Studio Code wyświetla okno Eksplorator plików. Przejdź do folderu zawierającego folder aplikacji wysokiego poziomu i określ nazwę projektu, na przykład NewRTApp. Program Visual Studio Code tworzy folder NewRTApp w wybranej lokalizacji i generuje pliki kompilacji dla pustej aplikacji. Powinny być wyświetlane komunikaty z narzędzia CMake.
Możesz również utworzyć nową aplikację z obsługą w czasie rzeczywistym na podstawie dowolnych przykładów usługi Azure Sphere obsługujących w czasie rzeczywistym:
Sklonuj repozytorium przykładów, 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 na potrzeby tworzenia aplikacji partnerskich
Aby efektywnie dołączyć aplikację wysokiego poziomu i aplikację obsługującą czas rzeczywisty do programowania, połącz dwie aplikacje w jeden wielowłaziowy obszar roboczy w następujący sposób:
Otwórz folder aplikacji wysokiego poziomu w programie Visual Studio Code.
Wybierz pozycję Plik>Dodaj folder do obszaru roboczego, a następnie wybierz folder aplikacji obsługujący czas rzeczywisty.
Wybierz pozycję Zapisz obszar>roboczy jako..., a następnie zapisz plik w folderze zawierającym zarówno aplikacje obsługujące w czasie rzeczywistym, jak i aplikacje wysokiego poziomu.
Otwórz plik obszaru roboczego w edytorze tekstów i dodaj następujące informacje dotyczące uruchamiania
"settings"
natychmiast po wierszu:
"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": []
}
Aby uzyskać więcej informacji na temat obszarów roboczych obejmujących wiele głównych obszarów roboczych, zobacz dokumentację programu Visual Studio Code.
Tworzenie aplikacji wysokiego poziomu
Aby utworzyć nową aplikację wysokiego poziomu, zacznij od szablonu HLCore Blank z rozszerzenia usługi Azure Sphere programu Visual Studio i dostosuj konfigurację do projektu, wykonując następujące kroki:
Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.
Wpisz
Azure Sphere
w polu wyszukiwania z etykietą Wyszukaj szablony. Wybierz pozycję Azure Sphere HLCore Blank z zwróconej listy, 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 tworzy folder NewHLpp w wybranej lokalizacji i generuje pliki kompilacji dla pustej aplikacji. Powinny być wyświetlane komunikaty z narzędzia CMake.
Otwórz plik CMakeLists.txt i określ folder zawierający definicje używanego sprzętu. Domyślnie aplikacja HL Blank nie zawiera definicji sprzętu. Przykładowe definicje sprzętu można znaleźć w repozytorium Przykładów usługi Azure Sphere lub utworzyć je zgodnie z opisem w temacie Definicje sprzętu.
Poniżej przedstawiono sposób dodawania przykładowych definicji sprzętu dla zestawu Dewelopera Seeed Azure Sphere MT3620:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Ten wiersz należy wstawić przed ostatnim poleceniem rozpoczynającym się
azsphere_target_add_image_package
.
Możesz również utworzyć nową aplikację wysokiego poziomu na podstawie dowolnych przykładów wysokiego poziomu usługi Azure Sphere:
Sklonuj repozytorium przykładów, 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 usługi Azure Sphere programu Visual Studio i dostosuj konfigurację do projektu, wykonując następujące kroki:
Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.
Wpisz
Azure Sphere
w polu wyszukiwania z etykietą Wyszukaj szablony. Wybierz pozycję Azure Sphere RTCore Blank z zwróconej listy, 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 tworzy folder NewRTApp w wybranej lokalizacji i generuje pliki kompilacji dla pustej aplikacji. Powinny być wyświetlane komunikaty z narzędzia CMake.
Możesz również utworzyć nową aplikację z obsługą w czasie rzeczywistym na podstawie dowolnych przykładów usługi Azure Sphere obsługujących w czasie rzeczywistym:
Sklonuj repozytorium przykładów, jeśli jeszcze tego nie zrobiono. Skopiuj jeden z folderów aplikacji obsługujących obsługę w czasie rzeczywistym 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 partnerskimi, chcesz zezwolić programowi Visual Studio na debugowanie w wielu rdzeniach. Można to włączyć, tworząc plik launch.vs.json w folderze najwyższego poziomu zawierającym dwa foldery aplikacji partnera. 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 tego pliku launch.vs.json najwyższego poziomu możesz otworzyć program Visual Studio w folderze najwyższego poziomu i zobaczysz opcję Aplikacje usługi Azure Sphere (wszystkie rdzenie) w menu Wybierz element startowy .
Tworzenie pliku CMakeWorkspaceSettings.json
Jeśli używasz programu Visual Studio 2022 w wersji 17.1 lub nowszej i masz projekt z wieloma katalogami głównymi, takimi jak przykład IntercoreComms, musisz dodać plik CMakeWorkspaceSettings.json do folderu najwyższego poziomu projektu. Plik zawiera dwa wpisy, jeden, aby określić, że kompilacja CMake jest włączona i jedna zawierająca ścieżki do wielu katalogów głównych. Na przykład w przykładzie IntercoreComms CMakeWorkspaceSettings.json ma następującą zawartość:
{
"enableCMake": true,
"sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}
Ścieżki są określane względem folderu zawierającego plik CMakeWorkspaceSettings.json.
Tworzenie aplikacji wysokiego poziomu
Aby utworzyć nową aplikację wysokiego poziomu, zacznij od dowolnego z przykładów usługi Azure Sphere wysokiego poziomu:
Sklonuj repozytorium przykładów, 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 obsługującej w czasie rzeczywistym jest rozpoczęcie od przykładu HelloWorld_RTApp_MT3620_BareMetal i dostosowanie konfiguracji do projektu, wykonując następujące kroki:
Sklonuj repozytorium przykładów, jeśli jeszcze tego nie zrobiono. Skopiuj folder HelloWorld_RTApp_MT3620_BareMetal i zmień jego nazwę na projekt.
W pliku CMakeLists.txt zmień nazwę projektu na nazwę nowego folderu. Na przykład:
PROJECT(NewRTApp C)
Podstawowa struktura plików aplikacji usługi Azure Sphere
Niezależnie od sposobu tworzenia aplikacji wszystkie aplikacje usługi Azure Sphere współdzielą następujące podstawowe pliki:
- Kod źródłowy aplikacji w co najmniej jednym pliku. Obecnie obsługiwany jest tylko kod źródłowy języka C.
- Pliki kompilacji narzędzia CMake. CMakeLists.txt jest wymagany. Narzędzie CMake wraz z lekkim narzędziem do kompilacji ninja służy do kontrolowania procesu kompilacji aplikacji usługi Azure Sphere.
- Plik manifestu aplikacji opisujący możliwości dostępne 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 usługi Azure Sphere
- Dwa pliki definicji sprzętu (edytowalna wersja w formacie JSON i plik dołączany w języku C) zapewniające wygodny sposób odwoływania się do składników sprzętowych w kodzie. Spójny zestaw plików definicji sprzętu umożliwia pisanie kodu źródłowego niezależnego od sprzętu, a następnie kompilowanie obrazów aplikacji dla określonego sprzętu przez ponowne określanie wartości docelowej odpowiedniego pliku 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 mają być ładowane różne składniki aplikacji na rdzeniu czasu rzeczywistego.
Pisanie kodu aplikacji wysokiego poziomu
- Napisz kod aplikacji wysokiego poziomu, korzystając z przykładów aplikacji wysokiego poziomu usługi Azure Sphere jako przewodników. W poniższych tematach opisano konkretne scenariusze implementacji:
- Używanie urządzeń peryferyjnych w aplikacji wysokiego poziomu
- Łączenie z usługami internetowymi
- Używanie wolfSSL dla połączeń TLS
- Zarządzanie certyfikatami
- Omówienie użycia pamięci
- Odroczenie aktualizacji urządzeń
- Zarządzanie czasem i używanie zegara w czasie rzeczywistym
- Korzystanie z magazynu urządzeń
- Komunikacja z aplikacją obsługą czasu rzeczywistego
- Zarządzanie stanem zasilania
- Ustawianie profilów zasilania
- Wykonywanie odnajdywania usług
- W pliku CMakeLists.txt:
- Określanie poprawki narzędzi zestawu SDK usługi Azure Sphere
- Określanie docelowego zestawu interfejsu API
- Określanie sprzętu docelowego
- W pliku app_manifest.json:
- Ustaw parametr
Name
na nazwę projektu. - Dodaj wszystkie funkcje specyficzne dla aplikacji, których wymaga kod, takie jak zasoby sprzętowe lub połączenia. Jeśli aplikacja wysokiego poziomu komunikuje się z aplikacją RTApp, dodaj identyfikator składnika aplikacji wysokiego poziomu do
AllowedApplicationConnections
możliwości.
- Ustaw parametr
Jeśli chcesz wdrożyć aplikację RTApp obok aplikacji partnera wysokiego poziomu, dodaj identyfikator składnika partnera do pola partnerComponents sekcji konfiguracji w pliku launch.vs.json (Visual Studio) lub .vscode/launch.json (Visual Studio Code):
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Pisanie kodu RTApp
- Napisz kod RTApp, korzystając z 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
jako nazwę projektu. - Ustaw element
ApplicationType
na wartość"RealTimeCapable"
- Dodaj wszystkie funkcje specyficzne dla aplikacji, których wymaga 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
możliwości.
- Ustaw
Jeśli chcesz wdrożyć aplikację RTApp obok aplikacji partnera wysokiego poziomu, dodaj identyfikator składnika partnera do pola partnerComponents sekcji konfiguracji w pliku launch.vs.json (Visual Studio) lub .vscode/launch.json (Visual Studio Code):
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]