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.
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.
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.
Emlékezet elhelyezés |
Emlékezet 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.