Обзор приложений Azure Sphere
На устройствах Azure Sphere могут выполняться два типа приложений:
- Высокоуровневые приложения выполняются в контейнере в ОС Azure Sphere
- Приложения с поддержкой реального времени (RTApp) выполняются на операционной системе без операционной системы (ОСРВ) в режиме реального времени на ядрах реального времени
Для каждого устройства Azure Sphere требуется высокоуровневое приложение. ПРИЛОЖЕНИЯ RTApp являются необязательными.
Высокоуровневые приложения
Каждое устройство Azure Sphere имеет высокоуровневое приложение, которое работает в ОС Azure Sphere и может использовать библиотеки приложений. Высокоуровневое приложение может:
Настройка периферийных устройств Azure Sphere и взаимодействие с ними, такими как контакты ввода-вывода общего назначения (GPIO), универсальные асинхронные приемники и передатчики (UART) и другие интерфейсы
Взаимодействие с RTApp
Взаимодействие с Интернетом и облачными службами
Брокер отношений доверия с другими устройствами и службами с помощью проверки подлинности на основе сертификатов
Высокоуровневое приложение выполняется в контейнере в пользовательском режиме "Обычный мир", как описано в разделе Что такое Azure Sphere?. Контейнер приложений поддерживает подмножество среды POSIX и набор библиотек приложений (Applibs), относящихся к ОС Azure Sphere. Библиотеки и функции, доступные для высокоуровневых приложений, ограничены, чтобы обеспечить безопасность платформы и ее легко обновить. Приложения могут получать доступ только к библиотекам и службам времени выполнения, предоставляемым корпорацией Майкрософт; среди прочих ограничений не доступны ни прямой файловый ввод-вывод, ни доступ к оболочке. В среде разработки описывается базовый набор API и представлены библиотеки приложений Azure Sphere, поддерживающие функции для конкретных устройств.
Ожидается, что высокоуровневые приложения будут работать непрерывно и автоматически перезапускаются в случае остановки или сбоя.
Создание высокоуровневого приложения содержит дополнительные сведения о функциях.
Приложения с поддержкой реального времени
Устройство Azure Sphere также может иметь одно или несколько приложений с поддержкой реального времени в дополнение к высокоуровневым приложениям. ПРИЛОЖЕНИЕ RTApp может:
- Настройка периферийных устройств, интегрированных в MCU Azure Sphere, таких как контакты GPIO и UART, и взаимодействие с ними
- Взаимодействие с высокоуровневыми приложениями
ПРИЛОЖЕНИЯ RTApp могут работать в операционной системе без операционной системы (ОСРВ) в режиме реального времени. Репозиторий примеров Azure Sphere на сайте GitHub включает пример HelloWorld без операционной системы, а также пример, демонстрирующий взаимодействие между ядрами между приложениями высокого уровня и RTApps. Репозиторий примеров Azure на сайте GitHub содержит пример, в котором показано, как использовать Azure Sphere с ОСРВ Azure.
Дополнительные драйверы и примеры для приложений RTApp, предназначенных для ядер M4 в реальном времени на микросхеме MT3620, доступны на сайте GitHub от партнеров Azure Sphere MediaTek и Codethink.
Каждое приложение RTApp выполняется изолированно на определенном ядре ввода-вывода и может взаимодействовать только с приложением высокого уровня; он не может использовать Интернет, azure Sphere applibs или другие функции ОС Azure Sphere.
Создание приложения, поддерживающего режим реального времени , содержит дополнительные сведения о функциях и процессе разработки приложений RTApp.
Функции, общие для всех приложений
Несмотря на значительные различия между приложениями высокого уровня и RTApps, все приложения Azure Sphere имеют некоторые общие особенности. Вы можете разрабатывать, создавать и отлаживать приложения обоих типов с помощью Visual Studio или Visual Studio Code либо путем вызова CMake и Ninja с помощью интерфейса командной строки.
Кроме того, к приложениям высокого уровня и RTApp применяются следующие функции безопасности:
Возможности приложений
Независимо от того, где оно выполняется, каждое приложение Azure Sphere должно указать необходимые внешние службы и интерфейсы, например требования к вводу-выводу и сети, чтобы предотвратить несанкционированное или непредвиденное использование.
Возможности приложения — это ресурсы, необходимые приложению. К возможностям приложения относятся периферийные устройства, которые использует приложение, узлы Интернета, к которым подключается высокоуровневое приложение, и разрешение на изменение конфигурации сети. Каждое приложение должно иметь манифест приложения , который идентифицирует эти ресурсы.
Возможности устройства
Возможность устройства позволяет выполнять действия, относящиеся к конкретному устройству. Возможности устройств предоставляются службой безопасности Azure Sphere. По умолчанию чипы Azure Sphere не имеют возможностей устройства. Существует два main типа возможностей устройств: устройство appDevelopment и устройство fieldServicing.
Возможность устройства appDevelopment изменяет тип подписи, которому доверяет устройство. По умолчанию устройства Azure Sphere доверяют пакетам образов, подписанным в рабочей среде, но не доверяют пакетам образов, подписанным пакетом SDK. В результате вы не сможете загрузить неопубликованный пакет образа с подписью пакета SDK на устройство Azure Sphere, которое не имеет этой возможности. Однако при наличии возможности appDevelopment устройство доверяет пакетам образов, подписанным пакетом SDK. Кроме того, это позволяет запускать, останавливать, отлаживать или удалять приложение с устройства. Таким образом, возможность разработки приложений должна присутствовать на устройстве, прежде чем вы сможете:
- Загрузите неопубликованный пакет образа, созданный Visual Studio, или команду azsphere image-package .
- Запуск, остановка, отладка или удаление пакета образа с устройства Azure Sphere независимо от того, как он подписан.
Команда az sphere device enable-development создает и применяет возможность appDevelopment и предотвращает получение устройством обновлений облачных приложений.
Возможность fieldServicing разрешает обмен данными между устройствами, которые находятся в производственном состоянии DeviceComplete. С помощью этой возможности можно загружать неопубликованные образы, подписанные в рабочей среде, но не удалять их. Вы можете запускать и останавливать приложения, но не отлаживать их. Вы также можете выполнять рутинные задачи обслуживания, такие как настройка Wi-Fi. Он предназначен для краткосрочного использования во время сеанса обслуживания, ограниченного периода, в течение которого доступ к устройству предоставляется на основе каждой операции.
Требования к подписи и развертыванию
Все пакеты образов, развернутые на устройстве Azure Sphere, должны быть подписаны. Пакет SDK Для Azure Sphere и команда az sphere image-package подписывают пакеты образов для тестирования с помощью ключа подписывания пакета SDK. Устройства Azure Sphere доверяют этому ключу только при наличии возможности устройства appDevelopment .
При отправке пакетов изображений в облако служба безопасности Azure Sphere подписывает пакеты изображений. Пакеты образов, подписанные в рабочей среде, можно загрузить неопубликованным или загрузить из облака.
Чтобы предотвратить установку несанкционированного программного обеспечения, приложения можно загрузить на устройство Azure Sphere только двумя способами:
Загрузка неопубликованных приложений, которая может использоваться как для разработки и тестирования программного обеспечения, так и для обслуживания устройств на местах. Для загрузки неопубликованных приложений для разработки и тестирования программного обеспечения требуется возможность устройства appDevelopment. Для загрузки неопубликованных приложений для обслуживания полей требуется возможность устройства fieldServicing и пакеты образов, подписанные рабочей средой. Visual Studio и Visual Studio Code неопубликованные приложения во время разработки и отладки. Кроме того, можно загрузить неопубликованные приложения вручную с помощью Azure CLI.
Обновление в облаке, которое может выполняться только службой безопасности Azure Sphere. Используйте Azure CLI для создания облачных развертываний и управления ими.
Партнерские приложения
Приложения, которые работают вместе, можно считать партнерскими приложениями , а затем загружать неопубликованные приложения отдельно. При загрузке неопубликованного приложения с партнером партнерское приложение остается на устройстве Azure Sphere, если оно уже развернуто. Каждое приложение объявляет список своих партнеров в конфигурации проекта.
Чтобы добавить партнеров в конфигурацию проекта CMake, укажите идентификатор компонента партнерского приложения в поле partnerComponents раздела конфигураций файла launch.vs.json или файла .vscode/launch.json:
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Высокоуровневые приложения и RTApp, которые взаимодействуют друг с другом, должны быть определены как партнеры. Azure Sphere не поддерживает обмен данными между парами высокоуровневых приложений или парами RTApp.