Inicjowanie i kończenie
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ą).
Podczas uruchamiania każda aplikacja usługi Azure Sphere powinna wykonać inicjację:
Zarejestruj procedurę obsługi SIGTERM dla żądań zakończenia. System operacyjny urządzenia Azure Sphere wysyła sygnał zakończenia SIGTERM, aby wskazać, że aplikacja musi zakończyć działanie, najczęściej w przypadku oczekiwania na aktualizację, ale także w odpowiedzi na żądanie zasilania urządzenia. W ramach kodu inicjowania aplikacja powinna zarejestrować program obsługi dla takich żądań. Na przykład:
#include <signal.h> ... // Register a SIGTERM handler for termination requests struct sigaction action; memset(&action, 0, sizeof(struct sigaction)); action.sa_handler = TerminationHandler; sigaction(SIGTERM, &action, NULL);
W procedurze obsługi kończenia działania aplikacja może wykonywać wszystkie wymagane zadania zamykania. Procedury obsługi zakończenia muszą być bezpieczne zasynchroniczne poSIX. W szczególności nie mogą zawierać wywołań metody
Log_Debug()
. Przykładowe programy zakończą działanie po błędzie, a także po otrzymaniu sygnału zakończenia. W związku z tym te programy po prostu ustawiają wartość logiczną w procedurze obsługi zakończenia, a następnie wykonują zadania oczyszczania i zamykania po zakończeniu pętli main.Zainicjuj uchwyty dla urządzeń peryferyjnych GPIO.
Jeśli aplikacja korzysta z usługi Azure IoT Hub, połącz się z klientem IoT i zarejestruj funkcje wywołania zwrotnego dla funkcji IoT, takich jak komunikaty z chmury do urządzenia, stan bliźniaczej reprezentacji urządzenia i wywołania metod bezpośrednich.
Po zakończeniu aplikacja powinna zamknąć urządzenia peryferyjne, zniszczyć uchwyty i zwolnić przydzieloną pamięć. Aplikacja ma tylko dwie sekundy do wyjścia po otrzymaniu sygnału SIGTERM; jeśli aplikacja nie została zakończona, system operacyjny usługi Azure Sphere wysyła sygnał SIGKILL, który natychmiast kończy działanie aplikacji. Należy unikać sygnału SIGKILL. Jeśli aplikacja rutynowo wykonuje akcje, które mogą potrwać dłużej niż dwie sekundy, rozważ dodanie pętli odroczonej aktualizacji do aplikacji. Aplikacje korzystające z funkcji Powerdown powinny wykonać niezbędne czyszczenie przed wywołaniem interfejsów API wyłączania zasilania.