Získání výstupu ladění zařízení Azure Sphere
Při vývoji řešení IoT často potřebujete přístup k ladění výstupu ze zařízení. I když toho můžete dosáhnout prostřednictvím ladění připojení k sadě Visual Studio/Code (ale můžete toho dosáhnout také z příkazového řádku), možná budete muset zobrazit výstup ladění pro zařízení, která nejsou připojená k sadě Visual Studio/Code. Na těchto zařízeních můžou být spuštěné dlouhodobé testy nebo dokonce nasazené do produkčního prostředí. Existuje několik možností, jak získat přístup k datům ladění:
- Získání výstupu ladění ze zařízení připojeného k vývojovému počítači
- Získání výstupu ladění pro zařízení, které není připojené k vývojovému počítači
- Protokolování do externího úložiště
- Protokolování do Azure
Získání výstupu ladění ze zařízení připojeného k vývojovému počítači
Problém: Jak získat výstup ladění při ladění pomocí sady Visual Studio nebo Visual Code?
Možnosti:
Aplikace na vysoké úrovni
Aplikace vysoké úrovně Azure Sphere může pomocí rozhraní API Log_Debug odesílat výstup ladění s formátováním stylu printf do připojeného počítače během ladění. Tento výstup lze zobrazit pomocí okna ladění sady Visual Studio , editoru Visual Studio Code nebo z příkazového řádku.
Můžete zvážit nastavení příznaků podrobností ladění ve vaší aplikaci a použití definic kompilace CMake k řízení toho, kolik výstupu ladění se zobrazí při spuštění aplikace. V souboru CMakeLists.txt můžete vytvořit definici času kompilace:
add_compile_definitions(DEBUG_FLAG)
V kódu aplikace vysoké úrovně pak můžete zvýšit nebo snížit množství výstupu ladění zobrazeného vaší aplikací pomocí
#ifdef
, například:
#ifdef DEBUG_FLAG
Log_Debug("My Message\n");
#endif
Aplikace podporující v reálném čase
Aplikace Azure Sphere podporující real-time (běžící na jednom z jader M4) může zapisovat ladicí nebo protokolovací informace do vyhrazeného objektu UART M4 jen pro přenos. To vyžaduje usb/sériový adaptér, jako je FTDI Friend, a emulátor terminálu.
Ukázka Hello World Azure Sphere ukazuje, jak tisknout do UART ladění M4.
K dispozici jsou také ukázkové aplikace z CodeThink a MediaTek:
Definice času kompilace příznaku ladění je také možné použít v aplikacích s podporou real-time (M4).
Použití komunikace mezi jádry k odesílání stavu z aplikace podporující v reálném čase do aplikace vysoké úrovně
Pokud vytváříte systém, který kombinuje aplikaci na vysoké úrovni a aplikaci podporující v reálném čase, můžete použít aplikaci vysoké úrovně k protokolování stavu systému pro obě aplikace. K tomu se dá použít komunikace mezi jádry – ukázka mezijádrový komunikace Azure Sphere implementuje jednoduché rozhraní pro předávání zpráv mezi aplikacemi na vysoké úrovni a aplikací podporujícími real-time.
Tento výukový modul Azure Sphere ukazuje, jak používat Azure Sphere a Azure RTOS v kombinaci s modelem zasílání zpráv mezi jádry k předávání vlastních zpráv mezi jádry.
Získání výstupu ladění pro zařízení, které není připojené k vývojovému počítači
Problém: Jak protokolovat výstup ladění, když vaše zařízení není připojené k vývojovému počítači?
Možnosti:
Odeslání výstupu ladění přes síť nebo objekt UART
Získání informací protokolu ladění, když je zařízení připojené k vývojovému počítači, je poměrně jednoduché. Můžete ale také chtít shromáždit informace o ladění nebo protokolu, když zařízení není připojené k počítači. Můžete mít například sadu zařízení, která používají dlouhodobé testy.
Pokud jsou vaše zařízení připojená k síti, můžete chtít odeslat výstup ladění přes síť do aplikace, která může shromažďovat a analyzovat informace. Tato aplikace Galerie Azure Sphere ukazuje, jak přepsat výchozí chování Log_Debug pro odesílání a příjem výstupu přes soket UDP.
Všimněte si, že mechanismus, který slouží k přepsání výchozího chování aplikace s vysokým využitím Log_Debug, lze také použít k odesílání informací protokolu ladění na jiná místa, například k výstupu dat na jednom z uzlů UART Azure Sphere. Tuto ukázku UART můžete použít jako odkaz na kombinaci s aplikací UDPDebugLog Gallery a protokolovat zprávy do objektu UART.
Odeslání výstupu ladění do Azure IoT Hub nebo Azure IoT Central
I když může být výstup ladění užitečný při diagnostice problémů tak, jak k nim dochází, může být také užitečné ukládat telemetrická data nebo informace protokolu ze zařízení pro následné zpracování.
Nastavením instance Azure IoT Hub nebo Azure IoT Central získáte koncový bod pro odesílání telemetrických dat zařízení, která se můžou používat jako součást obchodní logiky. Můžete také odesílat informace o stavu nebo protokolu zařízení, které je možné zpracovávat odděleně od telemetrie nebo obchodních dat.
Ukázka protokolování do Azure ukazuje, jak předávat zprávy protokolu jako IoT Hub telemetrii a ukládat je v clusteru Azure Data Explorer pro pokročilé dotazování.
Azure IoT Hub
Vaše Azure IoT Hub instance může být nakonfigurovaná tak, aby odesílala data do služby Azure Database pro účely úložiště nebo analýzy. Můžete také chtít filtrovat zprávy, což je možné dosáhnout prostřednictvím EventHubu a funkce Azure Functions.
Pro Azure IoT Hub můžete odesílat data do funkce Azure Functions, která pak může zprávy zpracovat. Článek o triggeru Azure IoT Hub pro Azure Functions vysvětluje, jak propojit funkci Azure s instancí Azure IoT Hub.
Azure IoT Central
Azure IoT Central zahrnuje možnost průběžného exportu dat do různých koncových bodů, mezi které patří:
- Azure Event Hubs
- fronta Azure Service Bus
- Azure Service Bus téma
- Azure Blob Storage
- Webhook
WebHook je koncový bod rozhraní REST API, který vytvoříte. Může se jednat o funkci Azure Functions.
Všimněte si, že můžete chtít filtrovat zprávy ve funkci Azure Functions na základě ID zařízení, které odesílá data. ID zařízení můžete získat pomocí následujícího kódu ve funkci Azure Functions:
public static async Task Run(EventData message, ILogger log)
{
var deviceId=message.SystemProperties["iothub-connection-device-id"];
// Code to filter the messages goes here...
}
Azure IoT Hub a Azure IoT Central podporují dvojčata zařízení, která zahrnují požadovaný stav (nastavený v aplikaci IoT Hub/Central) a nahlášený stav (stav ze zařízení). Pomocí Azure IoT Hub/centrálního dvojčete zařízení můžete nastavit požadovaný stav podrobností dat protokolu (zvýšit nebo snížit frekvenci protokolování nebo bohatost dat protokolování).
Ukázka Azure IoT ukazuje, jak zpracovávat změny dvojčete Desired State
zařízení.
Protokolování dat do úložiště
Azure Sphere podporuje až 64 kB proměnlivého úložiště pro aplikaci vysoké úrovně. Dá se použít k zachování nastavení, stavu aplikace nebo jiných dat. Vývojáři aplikací zodpovídají za serializaci/deserializaci dat do proměnlivého úložiště – Galerie Azure Sphere obsahuje projekt , který ukazuje, jak používat pár klíč/hodnota (slovník) k zápisu/čtení stavu do proměnlivého úložiště (až 64 kB v závislosti na konfiguraci manifestu aplikace).
Do nějaké formy externího úložiště můžete chtít zapsat více než 64 kB dat protokolu nebo stavu. To může být užitečné pro zařízení, která mají přerušované připojení nebo potřebují ukládat nebo načítat více než 64 kB dat.
Jednou z možností je přidat externí úložiště, například použít SPI Flash k ukládání dat – tento projekt používá SPI Flash k uložení aktualizace pro podřízené zařízení přes vzduch a může být upraven tak, aby podporoval telemetrická data protokolování nebo stavová data z aplikace Azure Sphere.