C SDK ve Embedded C SDK kullanım senaryoları
Microsoft, tümleşik ve kısıtlanmış cihaz senaryoları için Azure IoT cihaz SDK'ları ve ara yazılım sağlar. Bu makale, cihaz geliştiricilerinin uygulamanız için hangisini kullanacaklarına karar vermelerine yardımcı olur.
Aşağıdaki diyagramda müşterilerin C tabanlı (C99) SDK kullanarak cihazları Azure IoT'ye bağladığı dört yaygın senaryo gösterilmektedir. Bu makalenin geri kalanında her senaryo hakkında daha fazla ayrıntı sağlanır.
Senaryo 1 – Azure IoT C SDK'sı (Linux ve Windows için)
2015 yılından itibaren Azure IoT C SDK, cihazları IoT hizmetlerine bağlamak için oluşturulan ilk Azure SDK'ydı. Cihazları Azure IoT'ye bağlamak için aşağıdaki özellikleri sağlamak üzere oluşturulmuş kararlı bir platform:
- IoT Hub hizmetleri
- Cihaz Sağlama Hizmeti istemcileri
- Microsoft tarafından oluşturulan ve sürdürülen üç iletişim aktarımı seçeneği (MQTT, AMQP ve HTTP)
- Ortak TLS yığınlarının birden çok seçeneği (hedef platforma göre OpenSSL, Schannel ve Bed TLS)
- TCP yuvaları (Win32, Berkeley veya Mbed)
İletişim taşıma, TLS ve yuva soyutlaması sağlamanın performans maliyeti vardır. Birçok yol, çeşitli soyutlama katmanları arasında ve memcpy
çağrıları gerektirirmalloc
. Bu performans maliyeti, masaüstü veya Raspberry Pi cihazına kıyasla küçüktür. Ancak gerçekten kısıtlanmış bir cihazda maliyet, bellek parçalanma olasılığıyla birlikte önemli bir ek yük haline gelir. İletişim aktarım katmanı, bir işlevin en az 100 milisaniyede bir doWork
çağrılmış olmasını da gerektirir. Bu sık çağrılar, SDK'nın pille çalışan cihazlar için iyileştirilmesini zorlaştırır. Birden çok soyutlama katmanının varlığı, müşterilerin belirli bir kitaplığı kullanmasını veya herhangi bir kitaplığa değiştirmesini de zorlaştırır.
Senaryo 1, normalde bellek kullanımına veya güç tüketimine daha az duyarlı olan Windows veya Linux cihazları için önerilir. Ancak Windows ve Linux tabanlı cihazlar, Senaryo 2'de gösterildiği gibi Embedded C SDK'sını da kullanabilir. Windows ve Linux tabanlı cihazlar için diğer seçenekler arasında diğer Azure IoT cihaz SDK'ları bulunur: Java SDK, .NET SDK, Node SDK ve Python SDK.
Senaryo 2 – Katıştırılmış C SDK 'sı (Çıplak senaryolar ve mikro denetleyiciler için)
2020'de Microsoft, Embedded C için Azure SDK'yı (Embedded C SDK olarak da bilinir) yayımladı. Bu SDK, müşterilerin geri bildirimlerine dayalı olarak oluşturulmuş ve kısıtlı mikro denetleyici cihazları destekleme ihtiyacı giderek artmaktadır. Genellikle, kısıtlı mikro denetleyicilerde bellek ve işlem gücü azalır.
Embedded C SDK'sı aşağıdaki temel özelliklere sahiptir:
- Dinamik bellek ayırma yok. Müşteriler genel bellek, yığın veya yığın gibi istedikleri veri yapılarını ayırmalıdır. Ardından, çeşitli işlemleri başlatmak ve gerçekleştirmek için ayrılmış yapının adresini SDK işlevlerine geçirmeleri gerekir.
- Yalnızca MQTT. Yalnızca MQTT kullanımı, verimli ve basit bir ağ protokolü olduğundan kısıtlanmış cihazlar için idealdir. Şu anda yalnızca MQTT v3.1.1 desteklenmektedir.
- Kendi ağ yığınınızı getirin. Embedded C SDK'sı G/Ç işlemi gerçekleştirmez. Bu yaklaşım müşterilerin hedef platformlarına en uygun MQTT, TLS ve Socket istemcilerini seçmesine olanak tanır.
- C SDK'sı ile benzer özellik kümesi . Embedded C SDK'sı, Azure IoT C SDK'sı ile benzer özellikler sağlar ve Embedded C SDK'sının sağlamadığı özel durumlar şunlardır:
- Bloba yükleme
- IoT Edge modülü olarak çalışma özelliği
- İçerik iletisi toplu işlemi ve cihaz çoğullaması gibi AMQP tabanlı özellikler
- Daha küçük genel ayak izi. IoT Hub'a nasıl bağlanıldığını gösteren bir örnekte gösterildiği gibi Embedded C SDK'sı 74 KB ROM ve 8,26 KB RAM kadar sürebilir.
Embedded C SDK'sı, işletim sistemi olmayan mikro denetleyicileri, gerçek zamanlı işletim sistemine sahip mikro denetleyicileri (Eclipse ThreadX gibi), Linux ve Windows'ı destekler. Müşteriler, SDK'yi özel cihazlarda kullanmak için özel platform katmanları uygulayabilir. SDK ayrıca Arduino ve Swift gibi bazı platform katmanları da sağlar. Microsoft, kullanıma hazır desteklenen platformları artırmak için topluluğu diğer platform katmanlarını göndermeye teşvik eder. Wind River VxWorks , topluluk tarafından gönderilen bir platform katmanı örneğidir.
Embedded C SDK'sı, Azure IoT C SDK'sına kıyasla esnekliği nedeniyle bazı programlama avantajları ekler. Özellikle, kısıtlanmış cihazlar kullanan uygulamalar muazzam kaynak tasarruflarından ve daha fazla programlı denetimden yararlanacaktır. Buna karşılık, Eclipse ThreadX veya FreeRTOS kullanıyorsanız, RTOS uygulaması başına diğer özelliklerin yanı sıra bu avantajlara da sahip olabilirsiniz.
Senaryo 3 – Azure IoT ara yazılımı ile Eclipse ThreadX (Eclipse ThreadX tabanlı projeler için)
Senaryo 3, Eclipse ThreadX ve Azure IoT ara yazılımını kullanmayı içerir. Eclipse ThreadX, Embedded C SDK'sının üzerine kurulmuştur ve MQTT ve TLS Desteği ekler. Eclipse ThreadX ara yazılımı, uygulama için yerel Eclipse ThreadX API'lerine benzer API'leri kullanıma sunar. Bu yaklaşım, geliştiricilerin API'leri kullanmasını ve Eclipse ThreadX tabanlı cihazlarını Azure IoT'ye bağlamasını kolaylaştırır. Eclipse ThreadX, çözümünüz için ihtiyacınız olan tüm ağ ve IoT özelliklerini sağlayan, tamamen tümleşik, verimli, gerçek zamanlı tümleşik bir platformdur.
ST, NXP, Renesas ve Microchip gibi birçok popüler geliştirici seti için örnekler mevcuttur. Bu örnekler Azure IoT Hub veya Azure IoT Central ile çalışır ve GitHub'da IAR Workbench veya yarı iletken IDE projeleri olarak kullanılabilir.
Embedded C SDK'sını temel aldığından, Eclipse ThreadX için Azure IoT ara yazılımı bellek ayırma işlemi gerçekleştirmez. Müşterilerin SDK veri yapılarını genel bellekte, yığında veya yığında ayırması gerekir. Müşteriler bir veri yapısı ayırdıktan sonra, çeşitli işlemleri başlatmak ve gerçekleştirmek için yapının adresini SDK işlevlerine geçirmeleri gerekir.
Senaryo 4 – FreeRTOS ara yazılımı ile FreeRTOS (FreeRTOS tabanlı projelerle kullanım için)
Senaryo 4, katıştırılmış C ara yazılımını FreeRTOS'a getirir. Katıştırılmış C ara yazılımı, Embedded C SDK'sının üzerine kurulmuştur ve açık kaynak coreMQTT kitaplığı aracılığıyla MQTT desteği ekler. FreeRTOS için bu ara yazılım MQTT düzeyinde çalışır. MQTT bağlantısını kurar, konulara abone olur ve abonelikten çıkar ve ileti gönderip alır. Bağlantı kesilmeleri müşteri tarafından ara yazılım API'leri aracılığıyla işlenir.
Müşteriler TLS/TCP yapılandırmasını ve uç nokta bağlantısını denetler. Bu yaklaşım, her iki yığının yazılım veya donanım uygulamaları arasında esneklik sağlar. FreeRTOS için Azure IoT ara yazılımı tarafından hiçbir arka plan görevi oluşturulmaz. İletiler zaman uyumlu olarak gönderilir ve alınır.
Temel uygulama bu GitHub deposunda sağlanır. NXP1060, STM32 ve ESP32 gibi çeşitli popüler geliştirici setleri için örnekler mevcuttur. Örnekler Azure IoT Hub, Azure IoT Central ve Azure Cihaz Sağlama Hizmeti ile çalışır ve bu GitHub deposunda kullanılabilir.
Azure Embedded C SDK'sını temel aldığından, FreeRTOS için Azure IoT ara yazılımı da bellek ayırma işlemi gerçekleştirmez. Müşterilerin SDK veri yapılarını genel bellekte, yığında veya yığında ayırması gerekir. Müşteriler bir veri yapısı ayırdıktan sonra, çeşitli işlemleri başlatmak ve gerçekleştirmek için ayrılan yapıların adresini SDK işlevlerine geçirmeleri gerekir.
C tabanlı SDK teknik kullanım senaryoları
Aşağıdaki diyagramda, bu makalede açıklanan her SDK kullanım senaryosu için teknik seçenekler özetlenmiştir.
Bellek ve protokollere göre C tabanlı SDK karşılaştırması
Aşağıdaki tabloda bellek ve protokol kullanımına göre dört cihaz SDK'sı geliştirme senaryosu karşılaştırilmektedir.
Bellek ayırma |
Bellek Kullanım |
Protokol destekli |
Için önerilir | |
---|---|---|---|---|
Azure IoT C SDK'sı | Çoğunlukla Dinamik | Sınırsız. Yayılabilir RAM'de 1 MB veya daha fazla. |
AMQP HTTP MQTT v3.1.1 |
Mikro işlemci tabanlı sistemler Microsoft Windows Linux Apple OS X |
Embedded C için Azure SDK | Yalnızca statik | Miktarına göre kısıtlandı veri uygulaması ayırır. |
MQTT v3.1.1 | Mikro denetleyiciler Çıplak Uygulamalar RTOS tabanlı uygulamalar |
Eclipse ThreadX için Azure IoT Ara Yazılımı | Yalnızca statik | Kısıtlı | MQTT v3.1.1 | Mikro denetleyiciler RTOS tabanlı uygulamalar |
FreeRTOS için Azure IoT Ara Yazılımı | Yalnızca statik | Kısıtlı | MQTT v3.1.1 | Mikro denetleyiciler RTOS tabanlı uygulamalar |
Her SDK tarafından desteklenen Azure IoT Özellikleri
Aşağıdaki tabloda, Azure IoT özellikleri desteğine bağlı olarak dört cihaz SDK'sı geliştirme senaryosu karşılaştırilmektedir.
Azure IoT C SDK'sı | için Azure SDK Katıştırılmış C |
Azure IoT için ara yazılım Eclipse ThreadX |
Azure IoT için ara yazılım FreeRTOS |
|
---|---|---|---|---|
SAS İstemci kimlik doğrulaması | Yes | Evet | Evet | Yes |
x509 İstemci Kimlik Doğrulaması | Yes | Evet | Evet | Yes |
Cihaz Sağlama | Yes | Evet | Evet | Yes |
Telemetri | Yes | Evet | Evet | Yes |
Buluttan Cihaza İletiler | Yes | Evet | Evet | Yes |
Doğrudan Yöntemler | Yes | Evet | Evet | Yes |
Cihaz İkizi | Yes | Evet | Evet | Yes |
IoT Tak Çalıştır | Yes | Evet | Evet | Yes |
Telemetri toplu işlemi (AMQP, HTTP) |
Yes | Hayır | Hayır | Hayır |
Azure Blob'a yüklemeler | Yes | Hayır | Hayır | Hayır |
uygulamasında otomatik tümleştirme IoT Edge'de barındırılan kapsayıcılar |
Yes | Hayır | Hayır | Hayır |
Sonraki adımlar
Cihaz geliştirme ve Azure IoT için kullanılabilir SDK'lar hakkında daha fazla bilgi edinmek için aşağıdaki tabloya bakın.