Scénáře použití sady C SDK a vložené sady C SDK

Microsoft poskytuje sady SDK pro zařízení Azure IoT a middleware pro vložené a omezené scénáře zařízení. Tento článek pomáhá vývojářům zařízení rozhodnout, který z nich se má použít pro vaši aplikaci.

Následující diagram znázorňuje čtyři běžné scénáře, ve kterých zákazníci připojují zařízení k Azure IoT pomocí sady SDK založené na jazyce C (C99). Zbytek tohoto článku obsahuje další podrobnosti o jednotlivých scénářích.

Diagram běžných scénářů sady SDK

Scénář 1 – Azure IoT C SDK (pro Linux a Windows)

Od roku 2015 byla sada Azure IoT C SDK první sadou Azure SDK vytvořená pro připojení zařízení ke službám IoT. Jedná se o stabilní platformu, která byla vytvořena tak, aby poskytovala následující možnosti pro připojení zařízení k Azure IoT:

  • Služby IoT Hubu
  • Klienti služby Device Provisioning
  • Tři volby přenosu komunikace (MQTT, AMQP a HTTP), které vytváří a spravuje Microsoft
  • Několik možností běžných zásobníků TLS (OpenSSL, Schannel a Bed TLS podle cílové platformy)
  • Sokety TCP (Win32, Berkeley nebo Mbed)

Zajištění přenosu komunikace, abstrakce protokolu TLS a soketu má náklady na výkon. Mnoho cest vyžaduje malloc a memcpy volá mezi různými abstraktními vrstvami. Tyto náklady na výkon jsou v porovnání s desktopem nebo zařízením Raspberry Pi malé. Ale na skutečně omezeném zařízení se náklady stávají významnou režií s možností fragmentace paměti. Komunikační transportní vrstva také vyžaduje doWork , aby byla volána funkce alespoň každých 100 milisekund. Tato časté volání znesnadní optimalizaci sady SDK pro zařízení s bateriemi. Existence několika abstraktních vrstev také znesnadňuje zákazníkům používat nebo měnit libovolnou knihovnu.

Scénář 1 se doporučuje pro zařízení s Windows nebo Linuxem, která jsou obvykle méně citlivá na využití paměti nebo spotřebu energie. Zařízení se systémem Windows a Linux ale můžou také používat vloženou sadu C SDK, jak je znázorněno ve scénáři 2. Další možnosti pro zařízení s Windows a Linuxem zahrnují další sady SDK pro zařízení Azure IoT: Java SDK, .NET SDK, Node SDK a Python SDK.

Scénář 2 – Vložená sada C SDK (pro holé počítače a mikro-kontrolery)

V roce 2020 společnost Microsoft vydala sadu Azure SDK for Embedded C (označovanou také jako Vložená sada C SDK). Tato sada SDK byla založena na zpětné vazbě zákazníků a rostoucí potřebě podporovat zařízení s omezeným mikroprocesorem. Omezené mikro-kontrolery mají obvykle nižší paměť a výpočetní výkon.

Sada Embedded C SDK má následující klíčové vlastnosti:

  • Žádné přidělení dynamické paměti. Zákazníci musí přidělovat datové struktury tam, kde chtějí, například v globální paměti, haldě nebo zásobníku. Pak musí předat adresu přidělené struktury do funkcí sady SDK, aby inicializovali a prováděli různé operace.
  • Pouze MQTT. Použití pouze MQTT je ideální pro omezená zařízení, protože se jedná o efektivní, jednoduchý síťový protokol. V současné době se podporuje jenom MQTT v3.1.1.
  • Přineste si vlastní síťový zásobník. Vložená sada C SDK neprovádí žádné vstupně-výstupní operace. Tento přístup umožňuje zákazníkům vybrat klienty MQTT, TLS a Socket, kteří mají nejlepší možnosti přizpůsobení cílové platformě.
  • Podobná sada funkcí jako sada C SDK Vložená sada C SDK poskytuje podobné funkce jako sada Azure IoT C SDK s následujícími výjimkami, které vložená sada C SDK neposkytuje:
    • Nahrání do objektu blob
    • Schopnost spustit jako modul IoT Edge
    • Funkce založené na AMQP, jako je dávkování zpráv obsahu a multiplexování zařízení
  • Menší celková stopa. Vložená sada C SDK, jak je vidět v ukázce, která ukazuje, jak se připojit ke službě IoT Hub, může trvat až 74 kB paměti ROM a 8,26 kB paměti RAM.

Sada Embedded C SDK podporuje mikro-kontrolery bez operačního systému, mikro-kontrolery s operačním systémem v reálném čase (například Eclipse ThreadX), Linux a Windows. Zákazníci můžou implementovat vlastní vrstvy platformy pro použití sady SDK na vlastních zařízeních. Sada SDK také poskytuje některé vrstvy platformy, jako je Arduino a Swift. Microsoft vyzývá komunitu, aby odeslala další vrstvy platformy, aby zvýšily předvyšované podporované platformy. Wind River VxWorks je příkladem vrstvy platformy odeslané komunitou.

Vložená sada C SDK přináší některé výhody programování z důvodu flexibility v porovnání se sadou Azure IoT C SDK. Zejména aplikace, které používají omezená zařízení, budou těžit z obrovských úspor prostředků a větší programového řízení. Ve srovnání, pokud používáte Eclipse ThreadX nebo FreeRTOS, můžete mít stejné výhody spolu s dalšími funkcemi na implementaci RTOS.

Scénář 3 – Eclipse ThreadX s middlewarem Azure IoT (pro projekty založené na Eclipse ThreadX)

Scénář 3 zahrnuje použití Eclipse ThreadX a middlewaru Azure IoT. Eclipse ThreadX je postaven na vložené sadě C SDK a přidává podporu MQTT a TLS. Middleware pro Eclipse ThreadX zveřejňuje rozhraní API pro aplikaci, která se podobají nativním rozhraním API Eclipse ThreadX. Tento přístup usnadňuje vývojářům používání rozhraní API a připojení zařízení založených na Eclipse ThreadX k Azure IoT. Eclipse ThreadX je plně integrovaná, efektivní vložená platforma v reálném čase, která poskytuje všechny síťové funkce a funkce IoT, které potřebujete pro vaše řešení.

Ukázky pro několik oblíbených vývojářských sad od ST, NXP, Renesas a Microchip jsou k dispozici. Tyto ukázky fungují se službou Azure IoT Hub nebo Azure IoT Central a jsou k dispozici jako projekty IAR Workbench nebo polovodičových integrovaných vývojového prostředí (IDE) na GitHubu.

Vzhledem k tomu, že je založený na vložené sadě C SDK, middleware Azure IoT pro Eclipse ThreadX není přidělení paměti. Zákazníci musí přidělovat datové struktury sady SDK v globální paměti, haldě nebo zásobníku. Jakmile zákazníci přidělí datovou strukturu, musí předat adresu struktury do funkcí sady SDK, aby inicializovali a prováděli různé operace.

Scénář 4 – FreeRTOS s middlewarem FreeRTOS (pro použití s projekty založenými na FreeRTOS)

Scénář 4 přináší vložený middleware C do FreeRTOS. Vložený middleware jazyka C je založený na integrované sadě C SDK a přidává podporu MQTT prostřednictvím opensourcové knihovny CoreMQTT. Tento middleware pro FreeRTOS funguje na úrovni MQTT. Vytvoří připojení MQTT, přihlásí se k odběru a odhlásí odběry témat a odesílá a přijímá zprávy. Odpojení zpracovává zákazník prostřednictvím rozhraní API middlewaru.

Zákazníci řídí konfiguraci protokolu TLS/TCP a připojení ke koncovému bodu. Tento přístup umožňuje flexibilitu mezi implementacemi softwaru nebo hardwaru obou zásobníků. Middleware Azure IoT pro FreeRTOS nevytvořil žádné úlohy na pozadí. Zprávy se odesílají a přijímají synchronně.

Základní implementace je k dispozici v tomto úložišti GitHub. Ukázky pro několik oblíbených vývojářských sad jsou k dispozici, včetně NXP1060, STM32 a ESP32. Ukázky fungují se službou Azure IoT Hub, Azure IoT Central a službou Azure Device Provisioning a jsou k dispozici v tomto úložišti GitHub.

Vzhledem k tomu, že je založená na sadě Azure Embedded C SDK, middleware Azure IoT pro FreeRTOS také nepřiděluje paměť. Zákazníci musí přidělovat datové struktury sady SDK v globální paměti, haldě nebo zásobníku. Jakmile zákazníci přidělí datovou strukturu, musí předat adresu přidělených struktur do funkcí sady SDK, aby inicializovali a prováděli různé operace.

Scénáře technického využití sady SDK založené na jazyce C

Následující diagram shrnuje technické možnosti jednotlivých scénářů použití sady SDK popsaných v tomto článku.

Diagram s podrobnostmi pro vývojáře pro čtyři scénáře použití sady C SDK

Porovnání sady SDK založené na jazyce C podle paměti a protokolů

Následující tabulka porovnává čtyři scénáře vývoje sady SDK pro zařízení na základě využití paměti a protokolu.

  Paměti
Přidělení
Paměti
Použití
Protokoly
Podporovány
Doporučeno pro:
Azure IoT C SDK Většinou dynamická Neomezený. Může být rozloženo
na 1 MB nebo více v paměti RAM.
AMQP
HTTP
MQTT v3.1.1
Mikroprocesorové systémy
Microsoft Windows
Linux
Apple OS X
Azure SDK pro embedded jazyk C Pouze statická Omezeno množstvím
alokuje datová aplikace.
MQTT v3.1.1 Mikro-kontrolery
Holé implementace
Implementace založené na RTOSu
Middleware Azure IoT pro Eclipse ThreadX Pouze statická Omezeno MQTT v3.1.1 Mikro-kontrolery
Implementace založené na RTOSu
Middleware Azure IoT pro FreeRTOS Pouze statická Omezeno MQTT v3.1.1 Mikro-kontrolery
Implementace založené na RTOSu

Funkce Azure IoT podporované jednotlivými sadami SDK

Následující tabulka porovnává čtyři scénáře vývoje sady SDK pro zařízení na základě podpory funkcí Azure IoT.

  Azure IoT C SDK Azure SDK pro
Vložený jazyk C
Azure IoT
middleware pro
Eclipse ThreadX
Azure IoT
middleware pro
FreeRTOS
Ověřování klientů SAS Ano Ano Ano Yes
Ověřování klientů x509 Ano Ano Ano Yes
Device Provisioning Ano Ano Ano Yes
Telemetrie Ano Ano Ano Yes
Zprávy z cloudu na zařízení Ano Ano Ano Yes
Přímé metody Ano Ano Ano Yes
Dvojče zařízení Ano Ano Ano Yes
IoT Plug-And-Play Ano Ano Ano Yes
Dávkování telemetrie
(AMQP, HTTP)
Yes No No Ne
Nahrání do objektu blob Azure Yes No No Ne
Automatická integrace v
Hostované kontejnery IoT Edge
Yes No No Ne

Další kroky

Další informace o vývoji zařízení a dostupných sadách SDK pro Azure IoT najdete v následující tabulce.