Descrição geral das aplicações do Azure Sphere

Os dispositivos do Azure Sphere podem executar dois tipos de aplicações:

  • As aplicações de alto nível são executadas em contentores no SO do Azure Sphere
  • As aplicações com capacidade em tempo real (RTApps) são executadas em bare-metal ou com um sistema operativo em tempo real (RTOS) nos núcleos em tempo real

É necessária uma aplicação de alto nível para cada dispositivo do Azure Sphere; As RTApps são opcionais.

Aplicações de alto nível

Todos os dispositivos do Azure Sphere têm uma aplicação de alto nível, que é executada no SO do Azure Sphere e pode utilizar as bibliotecas de aplicações. Uma aplicação de alto nível pode:

  • Configurar e interagir com periféricos do Azure Sphere, como os pinos de entrada/saída (GPIO) para fins gerais, recetores/transmissores assíncronos universais (UARTs) e outras interfaces

  • Comunicar com o RTApps

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

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

Uma aplicação de alto nível é executada num contentor no modo de utilizador Mundo Normal, conforme descrito em O que é o Azure Sphere?. O contentor da aplicação suporta um subconjunto do ambiente POSIX e um conjunto de bibliotecas de aplicações (Applibs) que são específicas do SO do Azure Sphere. As bibliotecas e funções que estão disponíveis para aplicações de alto nível são restritas para garantir que a plataforma permanece segura e pode ser facilmente atualizada. As aplicações só podem aceder às bibliotecas e serviços de tempo de execução que a Microsoft fornece; nem a E/S de ficheiro direto nem o acesso à shell estão disponíveis, entre outras restrições. O ambiente de desenvolvimento descreve o conjunto de API base e apresenta as bibliotecas de aplicações do Azure Sphere que suportam funcionalidades específicas do dispositivo.

Espera-se que as aplicações de alto nível sejam executadas continuamente e sejam reiniciadas automaticamente se pararem ou falharem.

Criar uma aplicação de alto nível fornece mais informações sobre as funcionalidades.

Aplicações com capacidade em tempo real

Um dispositivo do Azure Sphere também pode ter uma ou mais aplicações em tempo real, além da sua aplicação de alto nível. Uma RTApp pode:

  • Configurar e interagir com periféricos integrados no MCU do Azure Sphere, como os pinos GPIO e UARTs
  • Comunicar com aplicações de alto nível

O RTApps pode ser executado em bare-metal ou com um sistema operativo em tempo real (RTOS). O repositório de exemplos do Azure Sphere no GitHub inclui um exemplo helloWorld bare-metal, bem como uma amostra que demonstra a comunicação entre núcleos entre o alto nível e o RTApps. O repositório de Exemplos do Azure no GitHub contém um exemplo que mostra como utilizar o Azure Sphere com o Azure RTOS.

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

Cada RTApp é executado isolado num núcleo de E/S específico e só pode comunicar com uma aplicação de alto nível; não pode utilizar a Internet, os applibs do Azure Sphere ou outras funcionalidades do SO do Azure Sphere.

Criar uma aplicação com capacidade em tempo real fornece mais informações sobre as funcionalidades e o processo de desenvolvimento do RTApps.

Funcionalidades comuns a todas as aplicações

Apesar das diferenças significativas entre aplicações de alto nível e RTApps, todas as aplicações do Azure Sphere têm algumas coisas em comum. Pode desenvolver, compilar e depurar ambos os tipos de aplicações com o Visual Studio ou o Visual Studio Code ou ao invocar CMake e Ninja com a CLI.

Além disso, as seguintes funcionalidades de segurança aplicam-se tanto ao rtApps de alto nível como ao RTApps:

Capacidades da aplicação

Independentemente do local onde é executada, todas as aplicações do Azure Sphere têm de especificar os serviços e interfaces externos necessários (por exemplo, os requisitos de E/S e de rede) para impedir qualquer utilização não autorizada ou inesperada.

As capacidades da aplicação são os recursos necessários para uma aplicação. As capacidades da aplicação incluem os periféricos que a aplicação utiliza, os anfitriões da Internet aos quais uma aplicação de alto nível se liga e a permissão para alterar a configuração de rede, entre outros. Cada aplicação tem de ter um manifesto de aplicação que identifique estes recursos.

Capacidades do dispositivo

Uma capacidade de dispositivo permite uma atividade específica do dispositivo. As capacidades do dispositivo são concedidas pelo Serviço de Segurança do Azure Sphere. Por predefinição, os chips do Azure Sphere não têm capacidades de dispositivo. Existem dois tipos principais de capacidades do dispositivo: a capacidade de dispositivo appDevelopment e a capacidade de dispositivo fieldServicing .

A capacidade de dispositivo appDevelopment altera o tipo de assinatura em que o dispositivo confia. Por predefinição, os dispositivos do Azure Sphere confiam em pacotes de imagens assinados em produção, mas não confiam em pacotes de imagens assinados pelo SDK. Como resultado, não pode fazer sideload de um pacote de imagem assinado pelo SDK para um dispositivo do Azure Sphere que não tenha esta capacidade. No entanto, quando a capacidade appDevelopment está presente, o dispositivo confia nos pacotes de imagens assinados pelo SDK. Além disso, permite-lhe iniciar, parar, depurar ou remover uma aplicação do dispositivo. Em resumo, a capacidade de desenvolvimento de aplicações tem de estar presente no dispositivo antes de poder:

  • Faça sideload de um pacote de imagem criado pelo Visual Studio ou pelo comando azsphere image-package .
  • Inicie, pare, depure ou remova um pacote de imagem do dispositivo do Azure Sphere, independentemente da forma como o pacote de imagem é assinado.

O comando az sphere device enable-development cria e aplica a capacidade appDevelopment e impede que o dispositivo receba atualizações de aplicações na cloud.

A capacidade fieldServicing permite comunicações dispositivo a computador em dispositivos que estão no estado de fabrico DeviceComplete. Com esta capacidade, pode fazer sideload de imagens assinadas por produção, mas não eliminá-las. Pode iniciar e parar aplicações, mas não depurá-las. Também pode efetuar tarefas de manutenção de rotina, como configurar Wi-Fi. Destina-se a uma utilização a curto prazo durante uma sessão de manutenção, período limitado durante o qual o acesso ao dispositivo é concedido por operação.

Requisitos de assinatura e implementação

Todos os pacotes de imagens implementados num dispositivo do Azure Sphere têm de estar assinados. O SDK do Azure Sphere e os pacotes de imagem de sinal de comando do pacote de imagem do az sphere para teste com uma chave de assinatura do SDK. Os dispositivos do Azure Sphere só confiam nesta chave se a capacidade do dispositivo appDevelopment também estiver presente.

O Serviço de Segurança do Azure Sphere assina pacotes de imagens ao carregá-los para a cloud. Os pacotes de imagens assinados em produção podem ser sideloaded ou carregados a partir da cloud.

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

  • Sideloading, que pode ser utilizado para desenvolvimento e teste de software e para manutenção de campos de dispositivos. O sideload para desenvolvimento e teste de software requer a capacidade do dispositivo appDevelopment. O sideload para manutenção de campos requer a capacidade de dispositivo fieldServicing e os pacotes de imagens assinados em produção. Aplicações de sideload do Visual Studio e do Visual Studio Code durante o desenvolvimento e a depuração; também pode fazer sideload manualmente com a CLI do Azure.

  • Atualização da cloud, que só pode ser efetuada pelo Serviço de Segurança do Azure Sphere. Utilize a CLI do Azure para criar e gerir implementações na cloud.

Aplicações de parceiros

As aplicações que funcionam em conjunto podem ser consideradas aplicações parceiras e, em seguida, podem ser sideloadadas separadamente. Quando faz sideload de uma aplicação que tem um parceiro, a aplicação parceira permanece no dispositivo do Azure Sphere se já tiver sido implementada. Cada aplicação declara uma lista dos respetivos parceiros na configuração do projeto.

Para adicionar parceiros à configuração do projeto CMake, especifique o ID do componente da aplicação parceira no campo partnerComponents da secção de configurações do ficheiro launch.vs.json ou .vscode/launch.json:

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

As aplicações de alto nível e as RTApps que comunicam entre si têm de ser identificadas como parceiros. O Azure Sphere não suporta a comunicação entre pares de aplicações de alto nível ou pares de RTApps.