Omówienie aplikacji Azure Sphere
Urządzenia Azure Sphere mogą uruchamiać dwa typy aplikacji:
- Aplikacje wysokiego poziomu są uruchamiane kontenerycznie w systemie operacyjnym Azure Sphere
- Aplikacje obsługujące czas rzeczywisty (RTApps) działają na gołym metalu lub z systemem operacyjnym w czasie rzeczywistym (RTOS) na rdzeniach w czasie rzeczywistym
Aplikacja wysokiego poziomu jest wymagana dla każdego urządzenia Azure Sphere; Aplikacje RTApps są opcjonalne.
Aplikacje wysokiego poziomu
Każde urządzenie Azure Sphere ma aplikację wysokiego poziomu, która działa w systemie operacyjnym Azure Sphere i może korzystać z bibliotek aplikacji. Aplikacja wysokiego poziomu może:
Konfigurowanie i interakcja z urządzeniami peryferyjnymi Azure Sphere, takimi jak piny wejścia/wyjścia ogólnego przeznaczenia (GPIO), uniwersalne asynchroniczne odbiorniki/nadajniki (UARTs) i inne interfejsy
Komunikowanie się za pomocą aplikacji RTApps
Komunikowanie się z Internetem i usługami opartymi na chmurze
Relacje zaufania brokera z innymi urządzeniami i usługami za pośrednictwem uwierzytelniania opartego na certyfikatach
Aplikacja wysokiego poziomu działa w kontenerze w trybie użytkownika Normal World, zgodnie z opisem w temacie Co to jest Azure Sphere?. Kontener aplikacji obsługuje podzbiór środowiska POSIX i zestaw bibliotek aplikacji (Applibs) specyficznych dla systemu operacyjnego Azure Sphere. Biblioteki i funkcje dostępne dla aplikacji wysokiego poziomu są ograniczone w celu zapewnienia, że platforma pozostanie bezpieczna i będzie można ją łatwo zaktualizować. Aplikacje mogą uzyskiwać dostęp tylko do bibliotek i usług w czasie wykonywania udostępnianych przez firmę Microsoft. ani bezpośredni dostęp do plików we/wy, ani do powłoki nie są dostępne, a także inne ograniczenia. Środowisko deweloperów opisuje podstawowy zestaw interfejsów API i wprowadza biblioteki aplikacji Azure Sphere, które obsługują funkcje specyficzne dla urządzenia.
Aplikacje wysokiego poziomu powinny działać w sposób ciągły i są automatycznie uruchamiane ponownie w przypadku zatrzymania lub niepowodzenia.
Tworzenie aplikacji wysokiego poziomu zapewnia więcej informacji o funkcjach.
Aplikacje z obsługą czasu rzeczywistego
Oprócz aplikacji wysokiego poziomu urządzenie Azure Sphere może mieć również jedną lub więcej aplikacji z obsługą czasu rzeczywistego. Aplikacja RTApp może:
- Konfigurowanie i interakcja z urządzeniami peryferyjnymi zintegrowanymi z interfejsem MCU Azure Sphere, takimi jak piny GPIO i UARTs
- Komunikowanie się za pomocą aplikacji wysokiego poziomu
Aplikacje RTApps mogą działać na gołym metalu lub w systemie operacyjnym w czasie rzeczywistym (RTOS). Próbki azure sphere repo w GitHub zawiera gołe próbki HelloWorld , jak również próbkę, która pokazuje inter-core komunikacji między wysokim poziomie i RTApps. Powtórzenie próbek platformy Azure w witrynie GitHub zawiera próbkę, w której pokazano , jak używać usługi Azure Sphere z systemem Azure RTOS.
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 usługi Azure Sphere MediaTek i Codethink.
Każda aplikacja RTApp jest izolowana na określonym rdzeniu we/wy i może komunikować się tylko z aplikacją wysokiego poziomu; nie może korzystać z Internetu, aplikacji Azure Sphere ani innych funkcji systemu operacyjnego Azure Sphere.
Utwórz aplikację z obsługą czasu rzeczywistego , aby uzyskać więcej informacji o funkcjach i procesie opracowywania aplikacji RTApps.
Funkcje wspólne dla wszystkich aplikacji
Pomimo istotnych różnic między aplikacjami wysokiego poziomu a aplikacjami RTApps, wszystkie aplikacje Azure Sphere mają pewne wspólne cechy. Możesz tworzyć, tworzyć i debugować oba typy aplikacji przy użyciu programu Visual Studio lub Visual Studio Code albo wywoływać CMake i Ninja za pomocą interfejsu cli.
Ponadto następujące funkcje zabezpieczeń mają zastosowanie zarówno do aplikacji wysokiego poziomu, jak i aplikacji RTApps:
Funkcje aplikacji
Niezależnie od tego, gdzie jest uruchomiona, każda aplikacja Azure Sphere musi określić wymagane usługi i interfejsy zewnętrzne — na przykład wymagania dotyczące we/wy i sieci — aby zapobiec nieautoryzowanemu lub nieoczekiwanemu użyciu.
Funkcje aplikacji to zasoby wymagane przez aplikację. Funkcje aplikacji obejmują urządzenia peryferyjne używane przez aplikację, hosty internetowe, z którymi łączy się aplikacja wysokiego poziomu, oraz uprawnienia do zmiany konfiguracji sieci, między innymi. Każda aplikacja musi mieć manifest aplikacji identyfikujący te zasoby.
Funkcje urządzenia
Funkcja urządzenia umożliwia działanie specyficzne dla urządzenia. Funkcje urządzenia są przyznawane przez usługę zabezpieczeń Azure Sphere. Domyślnie mikroukłady Azure Sphere nie mają możliwości urządzenia. Istnieją dwa główne typy możliwości urządzenia: funkcja appDevelopment urządzenia i fieldServicing funkcji urządzenia.
Funkcja appDevelopment urządzenia zmienia typ podpisywania zaufanego urządzenia. Domyślnie urządzenia Azure Sphere ufają pakietom obrazów z podpisem produkcyjnym, ale nie ufają pakietom obrazów podpisanym przez zestaw SDK. W związku z tym nie można pobrać pakietu obrazów podpisanego zestawem SDK do urządzenia Azure Sphere, które nie ma tej możliwości. Gdy funkcja appDevelopment jest dostępna, urządzenie ufa jednak pakietom obrazów podpisanym przez zestaw SDK. Ponadto umożliwia uruchamianie, zatrzymywanie, debugowanie lub usuwanie aplikacji z urządzenia. Podsumowując, możliwość tworzenia aplikacji musi być dostępna na urządzeniu, aby można było:
- Ładowanie bezpośrednie pakietu obrazów utworzonego przez program Visual Studio lub polecenie pakietu obrazów azsphere .
- Uruchom, zatrzymaj, debuguj lub usuń pakiet obrazów z urządzenia Azure Sphere, niezależnie od sposobu podpisania pakietu obrazów.
Az sphere device enable-development command tworzy i stosuje funkcję appDevelopment i uniemożliwia urządzeniu otrzymywanie aktualizacji aplikacji w chmurze.
Funkcja fieldServicing zezwala na komunikację między urządzeniami na urządzeniach znajdujących się w stanie produkcji DeviceComplete. Dzięki tej funkcji możesz pobrać obrazy podpisane fabrycznie, ale nie usuwać ich. Możesz uruchamiać i zatrzymywać aplikacje, ale nie debugować ich. Możesz również wykonywać rutynowe zadania konserwacji, takie jak konfigurowanie sieci Wi-Fi. Jest on przeznaczony do krótkoterminowego użytkowania podczas sesji serwisowania, w ograniczonym okresie, w którym dostęp do urządzenia jest udzielany na zasadzie na operację.
Wymagania dotyczące podpisywania i wdrażania
Wszystkie pakiety obrazów wdrożone na urządzeniu Azure Sphere muszą być podpisane. ZestawY SDK Azure Sphere i az sphere image-package podpisu polecenia do testowania przy użyciu klucza podpisywania zestawu SDK. Urządzenia w usłudze Azure Sphere ufają temu kluczowi tylko wtedy, gdy istnieje również możliwość rozwoju aplikacji .
Produkcja usługi Azure Sphere Security Service podpisuje pakiety obrazów podczas przekazywania ich do chmury. Pakiety obrazów z podpisem produkcyjnym mogą być ładowane lub ładowane z chmury.
Aby zapobiec instalacji nieuczciwego oprogramowania, aplikacje mogą być ładowane na urządzeniu Azure Sphere tylko na dwa sposoby:
Ładowanie bezpośrednie, które może być używane zarówno do opracowywania i testowania oprogramowania, jak i do obsługi urządzeń w terenie. Ładowanie bezpośrednie do tworzenia i testowania oprogramowania wymaga możliwości urządzenia appDevelopment. Ładowanie bezpośrednie do obsługi pól wymaga możliwości urządzenia fieldServicing i pakietów obrazów z podpisem produkcyjnym. Podczas opracowywania i debugowania zarówno visual studio, jak i Visual Studio Code aplikacje ładu bezpośredniego; możesz także pobrać je ręcznie przy użyciu interfejsu platformy Azure CLI.
Aktualizacja w chmurze, która może być wykonywana tylko przez usługę zabezpieczeń Azure Sphere. Użyj platformy Azure CLI, aby tworzyć wdrożenia w chmurze i zarządzać nimi.
Aplikacje partnerów
Aplikacje współpracujące mogą być traktowane jako aplikacje partnerów , a następnie mogą być ładowane lokalnie oddzielnie. Po załadowaniu lokalnie aplikacji, która ma partnera, aplikacja partnera pozostaje na urządzeniu Azure Sphere, jeśli została już wdrożona. Każda aplikacja deklaruje listę swoich partnerów w konfiguracji projektu.
Aby dodać partnerów do konfiguracji projektu CMake, określ identyfikator składnika aplikacji partnera w polu partnerComponents sekcji konfiguracji pliku launch.vs.json lub pliku vscode/launch.json:
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Aplikacje wysokiego poziomu i aplikacje RTApps, które komunikują się ze sobą, muszą być identyfikowane jako partnerzy. Usługa Azure Sphere nie obsługuje komunikacji między parami aplikacji wysokiego poziomu ani parami aplikacji RTApps.