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.
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.
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ěť příděl |
Paměť zvyk |
Protokoly podporovaný |
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.