Visão geral dos aplicativos do Azure SphereOverview of Azure Sphere applications

Dispositivos do Azure Sphere podem executar dois tipos de aplicativos:Azure Sphere devices can run two types of applications:

  • Aplicativos de alto nível executados em contêineres no sistema operacional do Azure SphereHigh-level applications run containerized on the Azure Sphere OS
  • Aplicativos com capacidade para tempo real (RTApps) são executados em bare-metal ou com um sistema operacional em tempo real (RTOS) nos núcleos em tempo realReal-time capable applications (RTApps) run on bare metal or with a real-time operating system (RTOS) on the real-time cores

Um aplicativo de alto nível é necessário para todos os dispositivos do Azure Sphere; RTApps são opcionais.A high-level application is required for every Azure Sphere device; RTApps are optional.

Aplicativos de alto nívelHigh-level applications

Todos os dispositivos Azure Sphere têm um aplicativo de alto nível, que é executado no sistema operacional do Azure Sphere e usa as bibliotecas de aplicativo.Every Azure Sphere device has a high-level application, which runs on the Azure Sphere OS and uses the application libraries. Um aplicativo de alto nível pode:A high-level application can:

  • Configurar e interagir com periféricos do Azure Sphere, como os pinos de GPIO (entrada/saída de uso geral), os UARTs (receptores/transmissores universais assíncronos) e outras interfacesConfigure and interact with Azure Sphere peripherals, such as the general-purpose input/output (GPIO) pins, universal asynchronous receiver/transmitters (UARTs), and other interfaces

  • Comunicar-se com RTAppsCommunicate with RTApps

  • Comunicar-se com os serviços baseados na Internet e na nuvemCommunicate with the internet and cloud-based services

  • Relacionamentos de confiança do agente com outros dispositivos e serviços por meio da autenticação baseada em certificadoBroker trust relationships with other devices and services via certificate-based authentication

Um aplicativo de alto nível é executado em um contêiner no modo de usuário do Mundo normal, conforme descrito em O que é o Azure Sphere?.A high-level application runs in a container in Normal World user mode, as described in What is Azure Sphere?. O contêiner de aplicativo dá suporte a um subconjunto do ambiente POSIX e um conjunto de bibliotecas de aplicativos (Applibs) que são específicos para o sistema operacional do 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. As bibliotecas e funções que estão disponíveis para aplicativos de alto nível são restritas para garantir que a plataforma permaneça segura e possa ser facilmente atualizada.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. Aplicativos podem acessar apenas as bibliotecas e os serviços de tempo de execução que a Microsoft fornece; nem E/S de arquivo direto, nem acesso shell estão disponíveis, entre outras restrições.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. O tópico Ambiente de desenvolvimento descreve o conjunto da base de dados de API e apresenta as bibliotecas de aplicativo do Azure Sphere que dão suporte a recursos específicos do dispositivo.The Development environment topic describes the base API set and introduces the Azure Sphere application libraries that support device-specific features.

Espera-se que aplicativos de alto nível sejam executados de modo contínuo e reiniciado automaticamente se eles pararem ou falharem.High-level applications are expected to run continuously and are automatically restarted if they stop or fail.

Criar um aplicativo de alto nível fornece mais informações sobre os recursos.Create a high-level application provides more information about features.

Aplicativos com capacidade para tempo realReal-time capable applications

Um dispositivo do Azure Sphere também pode ter um ou mais aplicativos com capacidade em tempo real, além de seus aplicativos de alto nível.An Azure Sphere device may also have one or more real-time capable applications in addition to its high-level application. Um RTApp pode:An RTApp can:

  • Configurar e interagir com os periféricos integrados com o Azure Sphere MCU, como os pinos de GPIO e UARTsConfigure and interact with peripherals integrated into the Azure Sphere MCU, such as the GPIO pins and UARTs
  • Comunicar-se com um aplicativo de alto nívelCommunicate with high-level applications

RTApps podem ser executados no hardware bare-metal ou com um sistema operacional em tempo real (RTOS).RTApps can run either on bare metal or with a real-time operating system (RTOS). O repositório de amostras do Azure Sphere no GitHub inclui uma amostra de HelloWorld bare-metal, bem como uma amostra que descreve a comunicação entre núcleos entre aplicativos de alto nível e RTApps.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. O repositório de exemplos do Azure no GitHub contém um exemplo que mostra como usar o Azure Sphere com o Azure RTOS.The Azure Samples repo on GitHub contains a sample that shows how to use Azure Sphere with Azure RTOS.

Outros drivers e exemplos para os RTApps que direcionam os núcleos M4 em tempo real no chip do MT3620 estão disponíveis no GitHub por meio dos parceiros do Azure Sphere MediaTek e 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.

Cada RTApp é executado em um determinado núcleo de E/S e pode se comunicar somente com um aplicativo de alto nível; ele não pode usar a Internet, os applibs do Azure Sphere ou outros recursos do sistema operacional do 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.

Criar um aplicativo com capacidade em tempo real fornece mais informações sobre os recursos e o processo de desenvolvimento do RTApps.Create a real-time capable application provides more information about the features and development process for RTApps.

Recursos comuns a todos os aplicativosFeatures common to all applications

Apesar das diferenças significativas entre aplicativos de alto nível e RTApps, todos os aplicativos do Azure Sphere têm algumas coisas em comum.Despite the significant differences between high-level apps and RTApps, all Azure Sphere applications have some things in common. Você pode desenvolver, compilar e depurar os dois tipos de aplicativos usando o Visual Studio ou o Visual Studio Code ou invocando o CMake e o Ninja usando a CLI.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.

Além disso, os recursos de segurança a seguir se aplicam a alto nível e RTApps:In addition, the following security features apply to both high-level and RTApps:

  • Funcionalidades do aplicativoApplication capabilities
  • Funcionalidades do dispositivoDevice capabilities
  • Requisitos de assinatura e implantaçãoSigning and deployment requirements

Funcionalidades do aplicativoApplication capabilities

Independentemente de onde ele for executado, cada aplicativo do Azure Sphere deve especificar os serviços e interfaces externos que eles exigem, por exemplo, seus requisitos de rede e E/S, para evitar qualquer uso não autorizado ou inesperado.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.

Funcionalidades de aplicativo são os recursos que um aplicativo exige.Application capabilities are the resources that an application requires. Recursos de aplicativos incluem os periféricos que o aplicativo usa, os hosts da Internet aos quais um aplicativo de alto nível se conecta e a permissão para alterar a configuração da rede, entre outros.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. Cada aplicativo deve ter um manifesto do aplicativo, que identifica esses recursos.Every application must have an application manifest, which identifies these resources.

Funcionalidades do dispositivoDevice capabilities

Uma capacidade de dispositivo permite uma atividade específica do dispositivo.A device capability enables a device-specific activity. Funcionalidades do dispositivo são concedidas pelo Serviço de Segurança do Azure Sphere e armazenadas na memória flash no chip do Azure Sphere.Device capabilities are granted by the Azure Sphere Security Service and are stored in flash memory on the Azure Sphere chip. Por padrão, chips do Azure Sphere não têm funcionalidades de dispositivo.By default, Azure Sphere chips have no device capabilities.

A funcionalidade do dispositivo appDevelopment altera o tipo de assinatura em que o dispositivo confia.The appDevelopment device capability changes the type of signing that the device trusts. Por padrão, dispositivos Azure Sphere confiam em pacotes de imagens assinados por produção, mas não confiam em pacotes de imagens assinados por SDK.By default, Azure Sphere devices trust production-signed image packages but do not trust SDK-signed image packages. Como resultado, você não pode carregar um pacote de imagem assinado por SDK a um dispositivo do Azure Sphere que tenha essa funcionalidade.As a result, you cannot sideload an SDK-signed image package to an Azure Sphere device that does not have this capability. Quando a funcionalidade appDevelopment estiver presente, no entanto, o dispositivo confiará em pacotes de imagens assinados por SDK.When the appDevelopment capability is present, however, the device trusts SDK-signed image packages. Além disso, ele permite que um usuário inicie, interrompa, depure ou remova um aplicativo do dispositivo.In addition, it enables you to start, stop, debug, or remove an application from the device. Em resumo, a funcionalidade de desenvolvimento de aplicativo deve estar presente no dispositivo para que você possa:In summary, the application development capability must be present on the device before you can:

  • Realize o sideload de um pacote de imagens criado pelo Visual Studio ou pelo comando azsphere image-package.Sideload an image package that was built by Visual Studio or the azsphere image-package command.
  • Iniciar, interromper, depurar ou remover um pacote de imagem do dispositivo Azure Sphere, independentemente de como o pacote de imagem está conectado.Start, stop, debug, or remove an image package from the Azure Sphere device, regardless of how the image package is signed.

O comando azsphere device enable-development cria e aplica a funcionalidade appDevelopment e impede que o dispositivo receba as atualizações do aplicativo pela nuvem.The azsphere device enable-development command creates and applies the appDevelopment capability and prevents the device from receiving cloud application updates.

Requisitos de assinatura e implantaçãoSigning and deployment requirements

Todos os pacotes de imagem implantados em um dispositivo do Azure Sphere devem ser assinados.All image packages deployed to an Azure Sphere device must be signed. O SDK do Azure Sphere e o comando azsphere image-package assinam pacotes de imagens para teste usando uma chave de assinatura do SDK.The Azure Sphere SDK and the azsphere image-package command sign image packages for testing by using an SDK signing key. Os dispositivos do Azure Sphere confiarão nessa chave apenas se a funcionalidade do dispositivo appDevelopment também estiver presente.Azure Sphere devices trust this key only if the appDevelopment device capability is also present.

A produção do Serviço de Segurança do Azure Sphere assina pacotes de imagem quando você faz upload deles para a nuvem.The Azure Sphere Security Service production-signs image packages when you upload them to the cloud. Pacotes de imagem de produção assinados podem ser carregados por sideload ou da nuvem.Production-signed image packages can be sideloaded or loaded from the cloud.

Para impedir a instalação de software invasor, os aplicativos podem ser carregados em um dispositivo Azure Sphere apenas de duas maneiras:To prevent the installation of rogue software, applications can be loaded on an Azure Sphere device in only two ways:

  • Sideload para teste e desenvolvimento de software.Sideloading for software development and testing. O sideload requer acesso direto ao dispositivo e a uma capacidade de dispositivo que permite que o software assinado para teste.Sideloading requires direct access to the device and a device capabilty that allows test-signed software. O Visual Studio faz sideload de aplicativos durante o desenvolvimento e a depuração; você também pode fazer sideload manualmente usando a interface de linha de comando (CLI) azsphere.Visual Studio sideloads applications during development and debugging; you can also sideload manually by using the azsphere command-line interface (CLI).

  • Atualização na nuvem, que pode ser executada apenas pelo Serviço de Segurança do Azure Sphere.Cloud update, which can be performed only by the Azure Sphere Security Service. Use a CLI azsphere para criar e gerenciar implantações na nuvem.Use the azsphere CLI to create and manage cloud deployments.

Aplicativos de parceirosPartner applications

Aplicativos que funcionam em conjunto podem ser considerados aplicativos de parceiros e, em seguida, podem ser submetidos a sideload separadamente.Applications that work together can be considered partner applications and then can be sideloaded separately. Quando você carregar um aplicativo que tenha um parceiro, aplicativo do parceiro permanece no dispositivo Azure Sphere se já tiver sido implantado.When you sideload an application that has a partner, the partner application remains on the Azure Sphere device if it has already been deployed. Cada aplicativo declara uma lista de seus parceiros em sua configuração de projeto.Each application declares a list of its partners in its project configuration.

Para adicionar parceiros à configuração do projeto CMake, especifique a ID do componente do aplicativo do parceiro no campo partnerComponents da seção configurações do arquivo launch.vs.json ou .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" ]

Aplicativos de alto nível e RTApps que se comunicam entre si devem ser identificados como parceiros.High-level apps and RTApps that communicate with each other must be identified as partners. Azure Sphere não oferece suporte à comunicação entre pares de aplicativos de alto nível ou pares de RTApps.Azure Sphere does not support communication between pairs of high-level apps or pairs of RTApps.