Partilhar via


Visão geral dos aplicativos do Azure Sphere

Importante

Esta é a documentação do Azure Sphere (Legado). O Azure Sphere (Legado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (Integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).

Os dispositivos do Azure Sphere podem executar dois tipos de aplicativos:

  • Os aplicativos de alto nível são executados em contêineres no sistema operacional Azure Sphere
  • Aplicações com capacidade em tempo real (RTApps) são executadas em bare metal ou com um sistema operacional em tempo real (RTOS) nos núcleos em tempo real

Um aplicativo de alto nível é necessário para cada dispositivo Azure Sphere; RTApps são opcionais.

Aplicações de alto nível

Cada dispositivo Azure Sphere tem um aplicativo de alto nível, que é executado no sistema operacional Azure Sphere e pode usar as bibliotecas de aplicativos. Uma aplicação de alto nível pode:

  • Configurar a interagir com periféricos do Azure Sphere, como os pinos de entrada/saída de utilização geral (GPIO), recetores/transmissores assíncronos universais (UART) e outras interfaces

  • Comunicar com RTApps

  • Comunicar com a Internet e serviços com base na cloud

  • Mediar relações de confiança com outros dispositivos e serviços através de uma autenticação baseada em certificados

Um aplicativo de alto nível é executado em um contêiner no modo de usuário Mundo Normal, conforme descrito em O que é o Azure Sphere?. O contêiner de aplicativo dá suporte a um subconjunto do ambiente POSIX e a um conjunto de bibliotecas de aplicativos (Applibs) que são específicas do sistema operacional Azure Sphere. 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. Os aplicativos podem acessar apenas as bibliotecas e os serviços de tempo de execução fornecidos pela Microsoft; nem E/S direta de arquivos nem acesso ao shell estão disponíveis, entre outras restrições. O ambiente de desenvolvimento descreve o conjunto de APIs base e apresenta as bibliotecas de aplicativos do Azure Sphere que oferecem suporte a recursos específicos do dispositivo.

Espera-se que os aplicativos de alto nível sejam executados continuamente e sejam reiniciados automaticamente se pararem ou falharem.

Criar um aplicativo de alto nível fornece mais informações sobre recursos.

Aplicações capazes de trabalhar em tempo real

Um dispositivo Azure Sphere também pode ter um ou mais aplicativos compatíveis em tempo real, além de seu aplicativo de alto nível. Um RTApp pode:

  • Configurar e interagir com periféricos integrados no Azure Sphere MCU, como os pinos GPIO e UARTs
  • Comunique-se com aplicativos de alto nível

O RTApps pode ser executado em bare metal ou com um sistema operacional em tempo real (RTOS). O repositório de exemplos do Azure Sphere no GitHub inclui um exemplo bare-metal do HelloWorld, bem como um exemplo que demonstra a comunicação entre núcleos entre RTApps de alto nível e 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.

Drivers adicionais e exemplos para RTApps que visam os núcleos M4 em tempo real no chip MT3620 estão disponíveis no GitHub dos parceiros do Azure Sphere, MediaTek e Codethink.

Cada RTApp é executado isolado em um núcleo de E/S específico e pode se comunicar apenas 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 Azure Sphere.

Criar um aplicativo capaz de tempo real fornece mais informações sobre os recursos e o processo de desenvolvimento do RTApps.

Funcionalidades comuns a todas as aplicações

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. Você pode desenvolver, compilar e depurar ambos os tipos de aplicativos usando Visual Studio ou Visual Studio Code, ou invocando CMake e Ninja usando a CLI.

Além disso, os seguintes elementos de segurança aplicam-se tanto aos RTApps de alto nível como aos RTApps:

Capacidades da aplicação

Independentemente de onde é executado, cada aplicativo do Azure Sphere deve especificar os serviços externos e as interfaces de que necessita, por exemplo, seus requisitos de E/S e de rede, para evitar qualquer uso não autorizado ou inesperado.

Os recursos do aplicativo são os recursos que um aplicativo exige. Os recursos do aplicativo incluem os periféricos que o aplicativo usa, os hosts de internet aos quais um aplicativo de alto nível se conecta e a permissão para alterar a configuração da rede, entre outros. Cada aplicativo deve ter um manifesto de aplicativo que identifique esses recursos.

Capacidades do dispositivo

Uma capacidade de dispositivo permite uma atividade específica do dispositivo. Os recursos do dispositivo são concedidos pelo Serviço de Segurança do Azure Sphere. Por padrão, os chips do Azure Sphere não têm recursos de dispositivo. Há dois tipos principais de recursos de dispositivo: o recurso de dispositivo appDevelopment e o recurso de dispositivo fieldServicing .

O recurso do dispositivo appDevelopment altera o tipo de assinatura em que o dispositivo confia. Por padrão, os dispositivos do Azure Sphere confiam em pacotes de imagem assinados em produção, mas não confiam em pacotes de imagem assinados por SDK. Como resultado, você não pode fazer sideload de um pacote de imagem assinado pelo SDK para um dispositivo do Azure Sphere que não tenha esse recurso. Quando o recurso appDevelopment está presente, no entanto, o dispositivo confia em pacotes de imagem assinados por SDK. Além disso, ele permite que você inicie, pare, depure ou remova um aplicativo do dispositivo. Em resumo, o recurso de desenvolvimento de aplicativos deve estar presente no dispositivo antes que você possa:

  • Sideload de um pacote de imagem que foi criado pelo Visual Studio ou pelo comando azsphere image-package.
  • Iniciar, parar, depurar ou remover um pacote de imagem do dispositivo Azure Sphere, independentemente de como o pacote de imagem está assinado.

O comando azsphere device enable-development cria e aplica o recurso appDevelopment e impede que o dispositivo receba atualizações de aplicativos na nuvem.

O recurso fieldServicing permite comunicações dispositivo-a-computador em dispositivos que estão no estado de fabricação DeviceComplete. Com esse recurso, você pode fazer sideload de imagens assinadas pela produção, mas não excluí-las. Você pode iniciar e parar aplicativos, mas não depurá-los. Você também pode executar tarefas de manutenção de rotina, como configurar o Wi-Fi. Destina-se a uma utilização a curto prazo durante uma sessão de manutenção, um período limitado durante o qual o acesso ao dispositivo é concedido por operação.

Requisitos de assinatura e implantação

Todos os pacotes de imagem implantados em um dispositivo do Azure Sphere devem ser assinados. O SDK do Azure Sphere e o comando azsphere image-package assinam pacotes de imagem para teste usando uma chave de assinatura do SDK. Os dispositivos do Azure Sphere confiam nessa chave somente se o recurso de dispositivo appDevelopment também estiver presente.

Os pacotes de imagem de assinatura de produção do Serviço de Segurança do Azure Sphere quando você os carrega na nuvem. Os pacotes de imagem assinados pela produção podem ser sideloaded ou carregados da nuvem.

Para impedir a instalação de software não autorizado, as aplicações podem ser carregadas num dispositivo Azure Sphere de apenas duas formas:

  • Sideloading, que pode ser usado tanto para desenvolvimento e teste de software quanto para manutenção de dispositivos em campo. O sideload para desenvolvimento e teste de software requer o recurso do dispositivo appDevelopment. O sideload para manutenção em campo requer a capacidade do dispositivo fieldServicing e pacotes de imagem assinados pela produção. Aplicativos de sideload do Visual Studio e do Visual Studio Code durante o desenvolvimento e a depuração; você também pode fazer sideload manualmente usando a CLI do Azure Sphere.

  • Atualização na nuvem, que só pode ser executada pelo Serviço de Segurança do Azure Sphere. Use a CLI do Azure Sphere para criar e gerenciar implantações na nuvem.

Candidaturas de parceiros

Os aplicativos que trabalham juntos podem ser considerados aplicativos de parceiros e, em seguida, podem ser sideloaded separadamente. Quando você faz sideload de um aplicativo que tem um parceiro, o aplicativo parceiro permanece no dispositivo Azure Sphere se já tiver sido implantado. Cada aplicativo declara uma lista de seus parceiros em sua configuração de projeto.

Para adicionar parceiros à configuração do projeto CMake, especifique o ID do componente do aplicativo parceiro no campo partnerComponents da seção configurations do launch.vs.json ou no arquivo .vscode/launch.json:

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

Aplicativos de alto nível e RTApps que se comunicam entre si devem ser identificados como parceiros. O Azure Sphere não dá suporte à comunicação entre pares de aplicativos de alto nível ou pares de RTApps.