Сценарии использования пакета SDK для C и внедренного пакета C SDK
Корпорация Майкрософт предоставляет пакеты SDK для устройств Интернета вещей Azure и ПО промежуточного слоя для внедренных и ограниченных сценариев устройств. В этой статье разработчики устройств решают, какой из них следует использовать для приложения.
На следующей схеме показаны четыре распространенных сценария, в которых клиенты подключают устройства к Azure IoT с помощью пакета SDK на основе C (C99). Остальная часть этой статьи содержит дополнительные сведения о каждом сценарии.
Сценарий 1. Пакет SDK Azure IoT C (для Linux и Windows)
Начиная с 2015 года пакет SDK Для Интернета вещей Azure был первым пакетом SDK Azure для подключения устройств к службам Интернета вещей. Это стабильная платформа, созданная для предоставления следующих возможностей для подключения устройств к Azure IoT:
- службы Центр Интернета вещей
- Клиенты службы подготовки устройств
- Три варианта транспорта связи (MQTT, AMQP и HTTP), которые создаются и поддерживаются корпорацией Майкрософт
- Несколько вариантов распространенных стеков TLS (OpenSSL, Schannel и Bed TLS в соответствии с целевой платформой)
- Сокеты TCP (Win32, Berkeley или Mbed)
Предоставление транспорта связи, абстракции TLS и сокета имеет затраты на производительность. Для многих путей требуются malloc
и memcpy
вызовы между различными уровнями абстракции. Эта стоимость производительности невелика по сравнению с настольным компьютером или устройством Raspberry Pi. Тем не менее на действительно ограниченном устройстве затраты становятся значительными затратами с возможностью фрагментации памяти. Уровень транспорта связи также требует doWork
вызова функции по крайней мере каждые 100 миллисекундах. Эти частые вызовы затрудняют оптимизацию пакета SDK для устройств с питанием от батареи. Существование нескольких уровней абстракции также затрудняет использование или изменение любой библиотеки клиентами.
Сценарий 1 рекомендуется использовать для устройств Windows или Linux, которые обычно менее чувствительны к использованию памяти или потреблению энергии. Однако устройства под управлением Windows и Linux также могут использовать внедренный пакет SDK для C, как показано в сценарии 2. Другие варианты устройств под управлением Windows и Linux включают другие пакеты SDK для устройств Интернета вещей Azure: пакет SDK для Java, пакет SDK для .NET, пакет SDK для узлов и пакет SDK для Python.
Сценарий 2— внедренный пакет SDK C (для сценариев и микро-контроллеров без операционной системы)
В 2020 году корпорация Майкрософт выпустила пакет SDK Azure для Embedded C (также известный как внедренный пакет SDK для C ). Этот пакет SDK был создан на основе отзывов клиентов и растущей необходимости поддерживать ограниченные устройства микро-контроллера. Как правило, ограниченные микро-контроллеры снижают объем памяти и мощность обработки.
Внедренный пакет SDK C имеет следующие ключевые характеристики:
- Не выделяется динамическая память. Клиенты должны выделять структуры данных, в которых они хотят, например в глобальной памяти, куче или стеке. Затем они должны передать адрес выделенной структуры в функции SDK для инициализации и выполнения различных операций.
- Только MQTT. Использование только MQTT идеально подходит для ограниченных устройств, так как это эффективный упрощенный сетевой протокол. В настоящее время поддерживается только MQTT версии 3.1.1.
- Создание собственного сетевого стека. Внедренный пакет SDK для C не выполняет операции ввода-вывода. Этот подход позволяет клиентам выбирать клиенты MQTT, TLS и Socket, которые лучше всего подходят для целевой платформы.
- Аналогичная функция, заданная как пакет SDK для C. Пакет SDK embedded C предоставляет аналогичные функции, как пакет SDK Для Azure IoT C, при этом следующие исключения не предоставляются в пакете SDK Embedded C:
- Отправка в большой двоичный объект
- Возможность запуска в качестве модуля IoT Edge
- Функции на основе AMQP, такие как пакетная обработка сообщений содержимого и мультиплексирование устройств
- Меньший общий объем. Внедренный пакет SDK C, как показано в примере, где показано, как подключиться к Центр Интернета вещей, может занять не более 74 КБ РОМ и 8,26 КБ ОЗУ.
Встроенный пакет SDK для C поддерживает микро контроллеры без операционной системы, микро-контроллеры с операционной системой в режиме реального времени (например, Eclipse ThreadX), Linux и Windows. Клиенты могут реализовать пользовательские слои платформы для использования пакета SDK на пользовательских устройствах. Пакет SDK также предоставляет некоторые уровни платформы, такие как Arduino и Swift. Корпорация Майкрософт призывает сообщество отправлять другие уровни платформы, чтобы увеличить поддерживаемые платформы. Wind River VxWorks является примером слоя платформы, отправленного сообществом.
Пакет SDK для Embedded C добавляет некоторые преимущества программирования из-за гибкости по сравнению с пакетом SDK для Azure IoT C. В частности, приложения, использующие ограниченные устройства, будут воспользоваться огромными экономией ресурсов и большим программным контролем. Для сравнения, если вы используете Eclipse ThreadX или FreeRTOS, вы можете иметь те же преимущества вместе с другими функциями для реализации ОСРВ.
Сценарий 3. Eclipse ThreadX с ПО промежуточного слоя Интернета вещей Azure (для проектов на основе Eclipse ThreadX)
Сценарий 3 включает использование Eclipse ThreadX и ПО промежуточного слоя Интернета вещей Azure. Eclipse ThreadX построен на основе встроенного пакета SDK для C и добавляет поддержку MQTT и TLS. ПО промежуточного слоя для Eclipse ThreadX предоставляет API для приложения, аналогичного собственным API Eclipse ThreadX. Этот подход упрощает использование API-интерфейсов и подключение устройств Eclipse ThreadX к Azure IoT. Eclipse ThreadX — это полностью интегрированная, эффективная, встроенная платформа в режиме реального времени, которая предоставляет все сетевые возможности и функции Интернета вещей, необходимые для вашего решения.
Доступны примеры для нескольких популярных комплектов разработчиков из ST, NXP, Renesas и Microchip. Эти примеры работают с Центр Интернета вещей Azure или Azure IoT Central и доступны в качестве проектов IAR Workbench или полупроводниковой интегрированной среды разработки на GitHub.
Так как он основан на встроенном пакете SDK для C, по промежуточному по промежуточному поверх Azure для Eclipse ThreadX не выделяется память. Клиенты должны выделять структуры данных ПАКЕТА SDK в глобальной памяти, куче или стеке. После того как клиенты выделяют структуру данных, они должны передать адрес структуры в функции ПАКЕТА SDK для инициализации и выполнения различных операций.
Сценарий 4. FreeRTOS с ПО промежуточного слоя FreeRTOS (для использования с проектами на основе FreeRTOS)
Сценарий 4 предоставляет встроенное ПО промежуточного слоя C в FreeRTOS. Встроенное ПО промежуточного слоя C построено на основе встроенного пакета SDK для C и добавляет поддержку MQTT через библиотеку coreMQTT открытый код. Это ПО промежуточного слоя для FreeRTOS работает на уровне MQTT. Он устанавливает подключение MQTT, подписывается и отменяет подписки из тем, а также отправляет и получает сообщения. Отключения обрабатываются клиентом через API по промежуточного слоя.
Клиенты управляют конфигурацией TLS/TCP и подключением к конечной точке. Такой подход обеспечивает гибкость между реализациями программного обеспечения или оборудования любого стека. Фоновые задачи не создаются ПО промежуточного слоя Интернета вещей Azure для FreeRTOS. Сообщения отправляются и получаются синхронно.
Базовая реализация предоставляется в этом репозитории GitHub. Доступны примеры для нескольких популярных комплектов разработчиков, включая NXP1060, STM32 и ESP32. Примеры работают с Центр Интернета вещей Azure, Azure IoT Central и службой подготовки устройств Azure и доступны в этом репозитории GitHub.
Так как он основан на пакете SDK для Azure Embedded C, ПО промежуточного слоя Azure IoT для FreeRTOS также не выделяет память. Клиенты должны выделять структуры данных ПАКЕТА SDK в глобальной памяти, куче или стеке. После того как клиенты выделяют структуру данных, они должны передать адрес выделенных структур в функции ПАКЕТА SDK для инициализации и выполнения различных операций.
Сценарии технического использования пакета SDK на основе C
На следующей схеме приведены технические параметры для каждого сценария использования пакета SDK, описанного в этой статье.
Сравнение пакета SDK на основе C по памяти и протоколам
В следующей таблице сравниваются четыре сценария разработки пакета SDK для устройств на основе использования памяти и протокола.
Память распределение |
Память употребление |
Протоколы поддержанный |
Рекомендуется для | |
---|---|---|---|---|
Azure IoT C SDK | В основном динамическая | Unrestricted. Может охватывать до 1 МБ или более ОЗУ. |
AMQP HTTP MQTT версии 3.1.1 |
Системы на основе микропроцессора Microsoft Windows Linux Apple OS X |
Пакет SDK Azure для Embedded C | Только статические | Ограничение по количеству выделяется приложение данных. |
MQTT версии 3.1.1 | Микро-контроллеры Реализации без операционной системы Реализации на основе ОСРВ |
По промежуточному слоя Azure IoT для Eclipse ThreadX | Только статические | С ограниченным доступом | MQTT версии 3.1.1 | Микро-контроллеры Реализации на основе ОСРВ |
ПО промежуточного слоя Интернета вещей Azure для FreeRTOS | Только статические | С ограниченным доступом | MQTT версии 3.1.1 | Микро-контроллеры Реализации на основе ОСРВ |
Функции Интернета вещей Azure, поддерживаемые каждым пакетом SDK
В следующей таблице сравниваются четыре сценария разработки пакета SDK для устройств на основе поддержки функций Интернета вещей Azure.
Azure IoT C SDK | Пакет SDK Azure для Внедренный C |
Azure IoT ПО промежуточного слоя для Eclipse ThreadX |
Azure IoT ПО промежуточного слоя для FreeRTOS |
|
---|---|---|---|---|
Проверка подлинности клиента SAS | Да | Да | Да | Да |
Проверка подлинности клиента x509 | Да | Да | Да | Да |
Подготовка устройств | Да | Да | Да | Да |
Телеметрия | Да | Да | Да | Да |
Сообщения из облака на устройство | Да | Да | Да | Да |
Прямые методы | Да | Да | Да | Да |
Двойник устройства | Да | Да | Да | Да |
IoT Plug-And-Play | Да | Да | Да | Да |
Пакетная обработка телеметрии (AMQP, HTTP) |
Да | No | No | No |
Отправка в BLOB-объект Azure | Да | No | No | No |
Автоматическая интеграция в Размещенные контейнеры IoT Edge |
Да | No | No | No |
Следующие шаги
Дополнительные сведения о разработке устройств и доступных пакетах SDK для Интернета вещей Azure см. в следующей таблице.