Share via


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 az 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-szoftvercsatornák (Win32, Berkeley vagy Mbed)

A kommunikációs átvitel, a TLS és a szoftvercsatornák absztrakciója teljesítményköltséggel jár. Számos elérési út szükséges malloc és memcpy hívás 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étegnek legalább 100 ezredmásodpercenként kell meghívnia 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. forgatókönyv – Beágyazott C SDK (operációs rendszer nélküli forgatókönyvekhez és mikrovezérlőkhöz)

2020-ban a Microsoft kiadta az Azure SDK for Embedded C-t (más néven Embedded C SDK-t). 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ök tá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.
  • Hozzon egy saját hálózati vermet. 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.
  • Hasonló funkciókészlet , mint a C SDK. 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 teljes lábnyom. 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 az Arduino és 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 az Azure IoT köztes szoftver haszná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 a GitHubon.

Mivel az Embedded C SDK-n alapul, az Eclipse ThreadX-hez készült Azure IoT köztes szoftver nem memóriakiosztás. Az ügyfeleknek SDK-adatstruktúrát kell lefoglalni a globális memóriában, egy halomban vagy egy veremben. 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 a köztes szoftver 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ő megvalósítás ebben a GitHub-adattárban található. 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-hez készült Azure IoT köztes szoftver szintén nem memóriakiosztás. Az ügyfeleknek SDK-adatstruktúrát kell lefoglalni a 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 részleteivel.

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
Elosztása
Memória
Használat
Protokollok
Támogatott
Ajánlott a következőhöz:
Azure IoT C SDK Többnyire dinamikus Korlátlan. Átfoghatja a
1 MB-ra vagy többre a RAM-ban.
AMQP
HTTP
MQTT v3.1.1
Mikroprocesszor-alapú rendszerek
Microsoft Windows
Linux
Apple OS X
Azure SDK for Embedded C Csak statikus Korlátozva a
az adatalkalmazás le van foglalva.
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 hozzáférésű MQTT v3.1.1 Mikrovezérlők
RTOS-alapú implementációk
Azure IoT Middleware for FreeRTOS Csak statikus Korlátozott hozzáférésű 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 a következőhöz:
Eclipse ThreadX
Azure IoT
köztes szoftver a következőhöz:
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.