Megosztás:


C SDK és Embedded C SDK használati forgatókönyvek

A Microsoft Azure IoT-eszköz SDK-kat és köztes szoftvereket biztosít beágyazott és korlátozott eszközforgatókönyvekhez. Ez a cikk segít az eszközfejlesztőknek eldönteni, hogy melyiket használja az alkalmazáshoz.

Az alábbi ábra négy gyakori forgatókönyvet mutat be, amelyekben az ügyfelek egy C-alapú (C99) SDK használatával csatlakoztatják az eszközöket az Azure IoT-hez. A cikk további részleteket tartalmaz az egyes forgatókönyvekkel kapcsolatban.

Gyakori SDK-forgatókönyvek diagramja.

1. forgatókönyv – Azure IoT C SDK (Linuxhoz és Windowshoz)

2015-től kezdve Azure IoT C SDK volt az első azure SDK, amelyet az eszközök IoT-szolgáltatásokhoz való csatlakoztatására hoztak létre. Ez egy stabil platform, amely a következő képességeket biztosítja az eszközök Azure IoT-hez való csatlakoztatásához:

  • IoT Hub-szolgáltatások
  • Device Provisioning Service-ügyfelek
  • A Microsoft által létrehozott és karbantartott kommunikációs átvitel (MQTT, AMQP és HTTP) három lehetősége
  • Gyakori TLS-veremek több lehetősége (OpenSSL, Schannel és Bed TLS a célplatformnak megfelelően)
  • TCP-foglalatok (Win32, Berkeley vagy Mbed)

A kommunikációs átvitel, a TLS és a socket absztrakciója teljesítménybeli költséggel jár. Számos útvonalhoz malloc és memcpy hívás szükséges a különböző absztrakciós rétegek között. Ez a teljesítményköltség kicsi az asztali vagy Raspberry Pi-eszközökhöz képest. Egy valóban korlátozott eszközön azonban a költségek jelentős többletterhelést jelentenek a memória töredezettségének lehetőségével. A kommunikációs átviteli réteghez legalább 100 ezredmásodpercenként meg kell hívni egy doWork függvényt. Ezek a gyakori hívások megnehezítik az SDK optimalizálását az akkumulátoros eszközökhöz. A több absztrakciós réteg megléte szintén megnehezíti az ügyfelek számára az adott tár használatát vagy módosítását.

Az 1. forgatókönyv windowsos vagy linuxos eszközökön ajánlott, amelyek általában kevésbé érzékenyek a memóriahasználatra vagy az energiafogyasztásra. A Windows- és Linux-alapú eszközök azonban az Embedded C SDK-t is használhatják a 2. forgatókönyvben látható módon. A Windows- és Linux-alapú eszközök egyéb lehetőségei közé tartoznak a többi Azure IoT-eszköz SDK: Java SDK, .NET SDK, Node SDK és Python SDK.

2. szcenárió – Beágyazott C SDK (bare metal szcenáriókhoz és mikrovezérlőkhöz)

2020-ban a Microsoft kiadta a Azure SDK for Embedded C (más néven Embedded C SDK). Ez az SDK az ügyfelek visszajelzései alapján készült, és egyre nagyobb szükség van a korlátozott mikrovezérlő eszközöktámogatására. A korlátozott mikrovezérlők általában csökkentett memóriával és feldolgozási teljesítménnyel rendelkeznek.

Az Embedded C SDK a következő főbb jellemzőkkel rendelkezik:

  • Nincs dinamikus memóriafoglalás. Az ügyfeleknek olyan adatstruktúrát kell lefoglalniuk, ahol szeretnének, például a globális memóriában, egy halomban vagy egy veremben. Ezután át kell adniuk a lefoglalt struktúra címét az SDK-függvényekbe a különböző műveletek inicializálásához és végrehajtásához.
  • Csak MQTT. A csak MQTT-használat ideális korlátozott eszközökhöz, mivel hatékony, egyszerűsített hálózati protokoll. Jelenleg csak az MQTT 3.1.1-es verziója támogatott.
  • Hozd a saját hálózati protokoll halmazodat. A Beágyazott C SDK nem hajt végre I/O-műveleteket. Ezzel a módszerrel az ügyfelek kiválaszthatják azokat az MQTT-, TLS- és Socket-ügyfeleket, amelyek a legjobban illeszkednek a célplatformjukhoz.
  • A C SDK-hoz hasonló funkciókészlet. Az Embedded C SDK hasonló funkciókat biztosít, mint az Azure IoT C SDK, az alábbi kivételekkel, amelyeket az Embedded C SDK nem biztosít:
    • Feltöltés blobba
    • IoT Edge-modulként való futtatás lehetősége
    • AMQP-alapú funkciók, például a tartalomüzenetek kötegelése és az eszköz multiplexálása
  • Kisebb az összesített lenyomat. Az Embedded C SDK, mint egy, az IoT Hubhoz való csatlakozást bemutató példában látható, akár 74 KB ROM-ot és 8,26 KB RAM-ot is igénybe vehet.

Az Embedded C SDK operációs rendszer nélküli mikrovezérlőket, valós idejű operációs rendszerrel rendelkező mikrovezérlőket (például Eclipse ThreadX), Linuxot és Windowst támogat. Az ügyfelek egyéni platformrétegeket implementálhatnak az SDK egyéni eszközökön való használatához. Az SDK olyan platformrétegeket is biztosít, mint a Arduino, valamint a Swift . A Microsoft arra ösztönzi a közösséget, hogy küldjön be más platformrétegeket a beépített támogatott platformok növelése érdekében. A Wind River VxWorks egy példa a közösség által benyújtott platformrétegre.

Az Embedded C SDK az Azure IoT C SDK-hoz képest rugalmassága miatt programozási előnyöket biztosít. A korlátozott eszközöket használó alkalmazások különösen nagy erőforrás-megtakarítást és nagyobb programozott vezérlést fognak használni. Ehhez képest, ha Eclipse ThreadX-et vagy FreeRTOS-t használ, ugyanezeket az előnyöket az RTOS-implementációkhoz tartozó egyéb funkciókkal együtt is élvezheti.

3. forgatókönyv – Eclipse ThreadX az Azure IoT köztes szoftverrel (Eclipse ThreadX-alapú projektekhez)

A 3. forgatókönyv az Eclipse ThreadX és a Azure IoT köztes szoftverhasználatát foglalja magában. Az Eclipse ThreadX az Embedded C SDK-ra épül, és MQTT- és TLS-támogatást ad hozzá. Az Eclipse ThreadX köztes szoftvere a natív Eclipse ThreadX API-khoz hasonló API-kat tesz elérhetővé az alkalmazás számára. Ez a megközelítés egyszerűbbé teszi a fejlesztők számára az API-k használatát és Eclipse ThreadX-alapú eszközeik Azure IoT-hez való csatlakoztatását. Az Eclipse ThreadX egy teljesen integrált, hatékony, valós idejű beágyazott platform, amely biztosítja a megoldáshoz szükséges hálózati és IoT-funkciókat.

Az ST, NXP, Renesas és Microchip népszerű fejlesztői készleteinek mintái elérhetők. Ezek a minták az Azure IoT Hub vagy az Azure IoT Central használatával működnek, és IAR Workbench- vagy félvezető IDE-projektekként érhetők el GitHub.

Mivel az Embedded C SDK-n alapul, az Eclipse ThreadX-hez készült Azure IoT middleware nem végez memóriakiosztást. Az ügyfeleknek az SDK-adatstruktúrákat a globális memóriában, egy halomban vagy veremben kell lefoglalniuk. Miután az ügyfelek kiosztanak egy adatstruktúrát, át kell adniuk a struktúra címét az SDK-függvényekbe a különböző műveletek inicializálásához és végrehajtásához.

4. forgatókönyv – FreeRTOS és FreeRTOS köztes szoftver (FreeRTOS-alapú projektekhez)

A 4. forgatókönyv a beágyazott C köztes szoftvereket a FreeRTOS-be hozza. A beágyazott C köztes szoftver az Embedded C SDK-ra épül, és MQTT-támogatást ad hozzá a nyílt forráskódú coreMQTT-kódtáron keresztül. Ez a FreeRTOS-hez készült köztes szoftver MQTT szinten működik. Létrehozza az MQTT-kapcsolatot, feliratkozik és leiratkozik a témakörökről, és üzeneteket küld és fogad. A leválasztást az ügyfél middleware API-kkal kezeli.

Az ügyfelek szabályozzák a TLS-/TCP-konfigurációt és a végponthoz való csatlakozást. Ez a megközelítés rugalmasságot tesz lehetővé a két verem szoftveres vagy hardveres implementációi között. A FreeRTOS-hez készült Azure IoT köztes szoftver nem hoz létre háttérfeladatokat. Az üzeneteket a rendszer szinkron módon küldi el és fogadja.

Az alapvető implementációt ebben a GitHub-adattárban. Számos népszerű fejlesztői készlethez érhetők el minták, köztük a NXP1060, az STM32 és az ESP32. A minták az Azure IoT Hub, az Azure IoT Central és az Azure Device Provisioning Service használatával működnek, és ebben a GitHub-adattárbanérhetők el.

Mivel az Azure Embedded C SDK-n alapul, a FreeRTOS-hoz készült Azure IoT köztes réteg szintén nem végez memóriakiosztást. Az ügyfeleknek SDK-adatstruktúrákat kell lefoglalniuk globális memóriában, egy halomban vagy egy veremben. Miután az ügyfelek kiosztanak egy adatstruktúrát, át kell adniuk a lefoglalt struktúrák címét az SDK-függvényeknek a különböző műveletek inicializálásához és végrehajtásához.

C-alapú SDK műszaki használati forgatókönyvek

Az alábbi ábra a cikkben ismertetett összes SDK-használati forgatókönyv technikai lehetőségeit foglalja össze.

diagram a négy C SDK-használati forgatókönyv fejlesztői adataival.

C-alapú SDK-összehasonlítása memória és protokollok szerint

Az alábbi táblázat a memória- és protokollhasználaton alapuló négy eszköz SDK-fejlesztési forgatókönyvet hasonlítja össze.

  memória
kiosztás
memória
használat
protokollok
támogatott
Ajánlott a következőhöz:
Azure IoT C SDK Többnyire dinamikus Korlátlan. Átfoghat
A RAM 1 MB vagy annál több lehet.
AMQP (Advanced Message Queuing Protocol)
HTTP
MQTT v3.1.1
Mikroprocesszor-alapú rendszerek
Microsoft Windows
Linux
Apple OS X
Azure SDK for Embedded C Csak statikus Mennyiség által korlátozva
az adatalkalmazás erőforrásokat oszt ki.
MQTT v3.1.1 Mikrovezérlők
Operációs rendszer nélküli implementációk
RTOS-alapú implementációk
Azure IoT Middleware for Eclipse ThreadX Csak statikus Korlátozott MQTT v3.1.1 Mikrovezérlők
RTOS-alapú implementációk
Azure IoT Middleware for FreeRTOS Csak statikus Korlátozott MQTT v3.1.1 Mikrovezérlők
RTOS-alapú implementációk

Az egyes SDK-k által támogatott Azure IoT-funkciók

Az alábbi táblázat az Azure IoT-funkciók támogatásán alapuló négy eszköz SDK-fejlesztési forgatókönyvet hasonlítja össze.

  Azure IoT C SDK Azure SDK for
Beágyazott C
Azure IoT
köztes szoftver
Eclipse ThreadX
Azure IoT
köztes szoftver
FreeRTOS
SAS-ügyfélhitelesítés Igen Igen Igen Igen
x509-ügyfélhitelesítés Igen Igen Igen Igen
Eszközkiépítés Igen Igen Igen Igen
Telemetria Igen Igen Igen Igen
Felhőből eszközre irányuló üzenetek Igen Igen Igen Igen
Közvetlen metódusok Igen Igen Igen Igen
Ikereszköz Igen Igen Igen Igen
IoT Plug-And-Play Igen Igen Igen Igen
Telemetriai kötegelés
(AMQP, HTTP)
Igen Nem Nem Nem
Feltöltések az Azure Blobba Igen Nem Nem Nem
Automatikus integráció a következőben:
IoT Edge által üzemeltetett tárolók
Igen Nem Nem Nem

Következő lépések

Az eszközfejlesztéssel és az Azure IoT-hez elérhető SDK-kkal kapcsolatos további információkért tekintse meg az alábbi táblázatot.