Общие сведения о приложениях Azure SphereOverview of Azure Sphere applications

На устройствах Azure Sphere могут выполняться приложения двух типов:Azure Sphere devices can run two types of applications:

  • высокоуровневые приложения запускаются из контейнеров в ОС Azure Sphere;High-level applications run containerized on the Azure Sphere OS
  • приложения, поддерживающие режим реального времени (RTApp), работают на оборудовании без операционной системы или в операционной системе в реальном времени (RTOS) на ядрах реального времени.Real-time capable applications (RTApps) run on bare metal or with a real-time operating system (RTOS) on the real-time cores

Высокоуровневые приложения требуются для каждого устройства Azure Sphere. Приложения RTApp являются необязательными.A high-level application is required for every Azure Sphere device; RTApps are optional.

Высокоуровневые приложенияHigh-level applications

Каждое устройство Azure Sphere содержит высокоуровневое приложение, который работает в ОС Azure Sphere и использует библиотеки приложения.Every Azure Sphere device has a high-level application, which runs on the Azure Sphere OS and uses the application libraries. Высокоуровневое приложение может:A high-level application can:

  • настраивать и взаимодействовать с периферийными устройствами, такими как контакты универсального ввода-вывода (GPIO), универсальные асинхронные приемопередатчики (UART) и другие интерфейсы;Configure and interact with Azure Sphere peripherals, such as the general-purpose input/output (GPIO) pins, universal asynchronous receiver/transmitters (UARTs), and other interfaces

  • взаимодействовать с приложениями RTApp;Communicate with RTApps

  • взаимодействовать с веб-службами и облачными службами;Communicate with the internet and cloud-based services

  • выступать посредником отношений доверия с другими устройствами и службами с помощью проверки подлинности на основе сертификата;Broker trust relationships with other devices and services via certificate-based authentication

Высокоуровневое приложение выполняется в контейнере в пользовательском режиме Normal World, как описано в разделе Что такое Azure Sphere.A high-level application runs in a container in Normal World user mode, as described in What is Azure Sphere?. Контейнер приложения поддерживает ряд компонентов среды POSIX и набор библиотек приложений (Applibs), которые относятся к ОС Azure Sphere.The application container supports a subset of the POSIX environment and a set of application libraries (Applibs) that are specific to the Azure Sphere OS. Эти библиотеки и функции доступны для высокоуровневых приложений и предназначены исключительно для обеспечения безопасности платформы и возможности простого обновления.The libraries and functions that are available to high-level applications are restricted to ensure that the platform remains secure and can be easily updated. Приложения могут обращаться только к библиотекам и службам времени выполнения, предоставляемых корпорацией Майкрософт. Помимо прочих ограничений, невозможно использовать прямые операции ввода-вывода в файл или обращения к оболочке.Applications can access only the libraries and run-time services that Microsoft provides; neither direct file I/O nor shell access are available, among other constraints. В разделе Среда разработки описывается набор базовых API и представлены библиотеки приложений Azure Sphere, которые поддерживают функции конкретного устройства.The Development environment topic describes the base API set and introduces the Azure Sphere application libraries that support device-specific features.

Высокоуровневые приложения должны работать непрерывно и автоматически перезагружаться, если они остановятся или произошла ошибка.High-level applications are expected to run continuously and are automatically restarted if they stop or fail.

Раздел Общие сведения о разработке высокоуровневых приложений содержит дополнительные сведения о функциях.Overview of high-level application development provides more information about features.

Приложения, поддерживающие режим реального времениReal-time capable applications

Устройство Azure Sphere может также содержать одно или несколько приложений, поддерживающих режим реального времени, помимо высокоуровневого приложения.An Azure Sphere device may also have one or more real-time capable applications in addition to its high-level application. Приложение RTApp может:An RTApp can:

  • настраивать и взаимодействовать с периферийными устройствами, интегрированными в микроконтроллер Azure Sphere, в том числе с контактами GPIO и UART;Configure and interact with peripherals integrated into the Azure Sphere MCU, such as the GPIO pins and UARTs
  • взаимодействовать с высокоуровневыми приложениями.Communicate with high-level applications

Приложения RTApp могут выполняться на оборудовании без операционной системы или в операционной системе реального времени (RTOS).RTApps can run either on bare metal or with a real-time operating system (RTOS). Репозиторий Azure Sphere на сайте GitHub содержит пример HelloWorld для платформы без ОС, а также пример, демонстрирующий обмен данными между разными ядрами для высокоуровневых приложений и приложений RTApp.The Azure Sphere samples repo on GitHub includes a bare-metal HelloWorld sample as well as a sample that demonstrates inter-core communication between high-level and RTApps. Репозиторий примеров Azure на сайте GitHub содержит пример, который демонстрирует, как использовать Azure Sphere с ОСРВ Azure.The Azure Samples repo on GitHub contains a sample that shows how to use Azure Sphere with Azure RTOS.

Дополнительные драйверы и примеры для RTApps с поддержкой ядер M4 реального времени на микросхеме MT3620, доступные на сайте GitHub, предоставили такие партнеры Azure Sphere, как MediaTek и Codethink.Additional drivers and samples for RTApps that target the M4 real-time cores on the MT3620 chip are available on GitHub from Azure Sphere partners MediaTek and Codethink.

Каждое приложение RTApp выполняется изолированно на определенном ядре ввода-вывода и может взаимодействовать только с высокоуровневым приложением. Оно не может использовать Интернет, библиотеки Applibs Azure Sphere или другие функции ОС Azure Sphere.Each RTApp runs isolated on a particular I/O core and can communicate only with a high-level application; it cannot use the internet, the Azure Sphere applibs, or other features of the Azure Sphere OS.

Раздел Общие сведения о разработке RTApp содержит дополнительные сведения о функциях и процессе разработки приложений RTApp.Overview of RTApp development provides more information about the features and development process for RTApps.

Функции, общие для всех приложенийFeatures common to all applications

Несмотря на значительные различия между высокоуровневыми приложениями и приложениями RTApp, все приложения Azure Sphere имеют кое-что общее.Despite the significant differences between high-level apps and RTApps, all Azure Sphere applications have some things in common. Вы можете разрабатывать и отлаживать приложения обоих типов, а также выполнять их сборку с помощью Visual Studio, Visual Studio Code или путем вызова CMake и Ninja в интерфейсе командной строки.You can develop, build, and debug both types of applications using Visual Studio or Visual Studio Code, or by invoking CMake and Ninja using the CLI.

Кроме того, для высокоуровневых приложений и приложений RTApp можно использовать приведенные ниже средства безопасности.In addition, the following security features apply to both high-level and RTApps:

  • Возможности приложенияApplication capabilities
  • Возможности устройстваDevice capabilities
  • Требования к подписыванию и развертываниюSigning and deployment requirements

Возможности приложенияApplication capabilities

Вне зависимости от того, где запущено приложение Azure Sphere, оно должно указывать внешние службы и интерфейсы, которые ему нужны, например, их требования к вводу-выводу и сети, чтобы предотвратить любое несанкционированное или непредвиденное использование.Regardless of where it runs, every Azure Sphere application must specify the external services and interfaces that it requires—for example, its I/O and network requirements—to prevent any unauthorized or unexpected use.

Возможности приложения — это ресурсы, которые требуются приложению.Application capabilities are the resources that an application requires. Помимо прочего возможности приложения включают в себя периферийные устройства, которые оно использует, узлы в Интернете, к которым подключается высокоуровневое приложение, и разрешения на изменение конфигурации сети.Application capabilities include the peripherals that the application uses, the internet hosts to which a high-level application connects, and permission to change the network configuration, among others. У любого приложения должен быть манифест приложения, который определяет эти ресурсы.Every application must have an application manifest, which identifies these resources.

Возможности устройстваDevice capabilities

Возможность устройства позволяет использовать действие конкретного устройства.A device capability enables a device-specific activity. Возможности устройства предоставляются службой безопасности Azure Sphere и хранятся во флэш-памяти микросхемы Azure Sphere.Device capabilities are granted by the Azure Sphere Security Service and are stored in flash memory on the Azure Sphere chip. По умолчанию в микросхемах Azure Sphere не записаны возможности устройств.By default, Azure Sphere chips have no device capabilities.

Возможность устройства appDevelopment изменяет тип подписи, которой доверяет устройство.The appDevelopment device capability changes the type of signing that the device trusts. По умолчанию устройство Azure Sphere доверяет подписанным для рабочей среды пакетам образов, но не доверяет подписанным пакетом SDK пакетам образов.By default, Azure Sphere devices trust production-signed image packages but do not trust SDK-signed image packages. Таким образом невозможно загрузить неопубликованный подписанный пакетом SDK пакет образа на устройство Azure Sphere, которое не поддерживает эту возможность.As a result, you cannot sideload an SDK-signed image package to an Azure Sphere device that does not have this capability. Однако при наличии возможности appDevelopment устройство доверяет подписанным пакетом SDK пакетам образов.When the appDevelopment capability is present, however, the device trusts SDK-signed image packages. Кроме того, она позволяет запустить, остановить, отладить приложение или удалить его с устройства.In addition, it enables you to start, stop, debug, or remove an application from the device. Таким образом, возможность разработки приложений необходима на устройстве для выполнения следующих действий:In summary, the application development capability must be present on the device before you can:

  • Загрузка неопубликованного пакета образа, который был создан с помощью Visual Studio или команды azsphere image-package.Sideload an image package that was built by Visual Studio or the azsphere image-package command.
  • Запуск, остановка, отладка или удаление пакета образа с устройства Azure Sphere независимо от того, как он подписан.Start, stop, debug, or remove an image package from the Azure Sphere device, regardless of how the image package is signed.

Команда azsphere device enable-development создает и применяет возможность appDevelopment, а также предотвращает получение устройством обновлений приложений из облака.The azsphere device enable-development command creates and applies the appDevelopment capability and prevents the device from receiving cloud application updates.

Требования к подписыванию и развертываниюSigning and deployment requirements

Все пакеты образов, развернутые на устройстве Azure Sphere, должны быть подписаны.All image packages deployed to an Azure Sphere device must be signed. С помощью пакета SDK для Azure Sphere и команды azsphere image-package можно подписать пакеты образов для тестирования, используя ключ подписи пакета SDK.The Azure Sphere SDK and the azsphere image-package command sign image packages for testing by using an SDK signing key. Устройства Azure Sphere доверяют этому ключу только при наличии возможности устройства appDevelopment.Azure Sphere devices trust this key only if the appDevelopment device capability is also present.

Служба безопасности Azure Sphere подписывает пакеты образов для рабочей среды при их передаче в облако.The Azure Sphere Security Service production-signs image packages when you upload them to the cloud. Подписанные для рабочей среды пакеты образов могут быть загружены без публикации или загружены из облака.Production-signed image packages can be sideloaded or loaded from the cloud.

Чтобы предотвратить установку мошеннического программного обеспечения, приложения могут загружаться на устройство Azure Sphere только двумя способами.To prevent the installation of rogue software, applications can be loaded on an Azure Sphere device in only two ways:

  • Загрузка неопубликованных приложений для разработки и тестирования программного обеспечения.Sideloading for software development and testing. Для загрузки неопубликованных приложений требуется прямой доступ к устройству и возможность устройства, которая разрешает проверять подпись программного обеспечения.Sideloading requires direct access to the device and a device capabilty that allows test-signed software. Visual Studio загружает неопубликованные приложения во время разработки и отладки. Вы можете также загрузить неопубликованное приложение вручную с помощью команды azsphere в интерфейсе командной строки.Visual Studio sideloads applications during development and debugging; you can also sideload manually by using the azsphere command-line interface (CLI).

  • Обновление из облака, которое может выполнить только служба безопасности Azure Sphere.Cloud update, which can be performed only by the Azure Sphere Security Service. Используйте команду azsphere в интерфейсе командной строки для создания облачных развертываний и управления ими.Use the azsphere CLI to create and manage cloud deployments.

Партнерские приложенияPartner applications

Приложения, работающие вместе, можно считать партнерскими приложениями и загружать их без публикации отдельно.Applications that work together can be considered partner applications and then can be sideloaded separately. Когда вы загружаете неопубликованное приложение, у которого есть партнер, партнерское приложение остается на устройстве Azure Sphere, если оно уже было развернуто.When you sideload an application that has a partner, the partner application remains on the Azure Sphere device if it has already been deployed. Каждое приложение объявляет список своих партнеров в конфигурации проекта.Each application declares a list of its partners in its project configuration.

Чтобы добавить партнеров в конфигурацию проекта CMake, укажите идентификатор компонента партнерского приложения в поле partnerComponents раздела configurations в файле launch.vs.json или .vscode/launch.json.To add partners to the CMake project configuration, specify the component ID of the partner app in the partnerComponents field of the configurations section of the launch.vs.json or the .vscode/launch.json file:

"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]