Sdílet prostřednictvím


Získání výstupu ladění zařízení Azure Sphere

Důležité

Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.

Při vývoji řešení IoT často potřebujete přístup k ladění výstupu ze zařízení. I když toho lze dosáhnout prostřednictvím ladění připojení k sadě Visual Studio/Code (ale dá se 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 nebo Code. Taková zařízení můžou spouštět dlouhodobé testy nebo dokonce nasazené do produkčního prostředí. Existuje několik možností, jak získat přístup k ladicím datům:

  • 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?

Volby:

  • Aplikace vysoké úrovně

    Aplikace vysoké úrovně Azure Sphere může použít rozhraní API Log_Debug k odesílání výstupu 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 nebo 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í množství výstupu ladění se zobrazí při spuštění aplikace. V souboru CMakeLists.txt můžete vytvořit definici doby 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í, #ifdefnapříklad:

    #ifdef DEBUG_FLAG
        Log_Debug("My Message\n");
    #endif
  • Aplikace podporující v reálném čase

    Aplikace podporující Azure Sphere v reálném čase (spuštěná na jednom z jader M4) může zapisovat informace o ladění a protokolu do vyhrazeného UART jen pro přenos M4. To vyžaduje usb/sériový adaptér, jako je FTDI Friend, a emulátor terminálu.

    Ukázka Hello World v Azure Sphere ukazuje, jak tisknout na ladění UART M4.

    K dispozici jsou také ukázkové aplikace od CodeThinku a MediaTek:

    Definice času kompilace příznaku ladění lze použít také v aplikacích podporujících v reálném čase (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 podporující vysokou úroveň a v reálném čase, můžete použít aplikaci vysoké úrovně k protokolování stavu systému pro obě aplikace. Pro tuto možnost je možné použít komunikaci mezi jádry – ukázka komunikace mezi jádry Azure Sphere implementuje jednoduché rozhraní pro předávání zpráv mezi aplikací podporující vysokou úroveň a v reálném čase.

    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ž zařízení není připojené k vývojovému počítači?

Volby:

  • Odeslání výstupu ladění přes síť nebo 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é. Pokud ale zařízení není připojené k počítači, můžete také chtít shromáždit informace o ladění nebo protokolu. Můžete mít například sadu zařízení s dlouhodobými 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 odesílat a přijímat tento výstup přes soket UDP.

    Všimněte si, že mechanismus použitý k přepsání výchozího chování aplikace s vysokou velikostí Log_Debug lze také použít k odeslání informací protokolu ladění na jiná místa, například k výstupu dat do jednoho z UART Azure Sphere. Tuto ukázku UART můžete použít jako odkaz na kombinování s aplikací Galerie UDPDebugLog k protokolování zpráv do UART.

  • Odeslání výstupu ladění do Azure IoT Hubu nebo Azure IoT Central

    I když může být ladění výstupu užitečné pro diagnostiku problémů, jak k nim dochází, může být také užitečné ukládat telemetrické a protokolové informace ze zařízení pro následné zpracování.

    Nastavení instance služby Azure IoT Hub nebo Azure IoT Central poskytuje 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 zařízení nebo protokolu, které se dají zpracovávat odděleně od telemetrických a obchodních dat.

    • Azure IoT Hub

      Vaše instance Azure IoT Hubu může být nakonfigurovaná tak, aby odesílala data do služby Azure Database for Storage/Analysis. Můžete také chtít filtrovat zprávy, které 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 zpracovávat zprávy. Článek o aktivaci služby Azure IoT Hub pro Službu Azure Functions vysvětluje, jak propojit funkci Azure s instancí Azure IoT Hubu.

    • 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 služby Azure Service Bus
      • Téma služby Azure Service Bus
      • 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, můžete ID zařízení 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 nebo Central) a hlášený stav (stav ze zařízení). Pomocí azure IoT Hubu nebo dvojčete zařízení Central můžete nastavit požadovaný stav podrobností dat protokolu (zvýšení nebo snížení frekvence protokolování nebo bohaté možnosti protokolování dat). 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ě, což se dá použít k zachování nastavení, stavu aplikace nebo jiných dat, za serializaci a deserializaci dat do proměnlivého úložiště – Galerie Azure Sphere obsahuje projekt , který ukazuje, jak pomocí páru klíč/hodnota (slovník) zapisovat a číst 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 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 zmožnostích služeb je přidat externí úložiště, třeba pomocí funkce SPI Flash k ukládání dat – tento projekt používá k uložení aktualizace přes vzduch pro podřízené zařízení a může být upraven tak, aby podporoval protokolování telemetrických a stavových dat z aplikace Azure Sphere.