Partilhar via


Comunique-se com um aplicativo de alto nível

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).

Aplicativos com capacidade de tempo real (RTApps) se comunicam com aplicativos de alto nível por meio de um buffer de anel que é mapeado para uma região compartilhada de memória.

Os exemplos IntercoreComms mostram como o RTApps pode se comunicar com aplicativos de alto nível. Use o exemplo IntercoreComms_RTApp_MT3620_BareMetal como ponto de partida para desenvolver seu próprio código de comunicação RTApp. Consulte Comunicar-se com um aplicativo com capacidade em tempo real para obter informações sobre o código necessário em um aplicativo de alto nível.

Importante

Para obter informações sobre endereços de registro e outros detalhes específicos de hardware, solicite o "MT3620 M4 Programmer's Guide" por e-mail Azure.Sphere@avnet.com.

Operação

Do ponto de vista do RTApp, a comunicação com uma aplicação de alto nível envolve as seguintes operações básicas:

  • Lendo informações de configuração da caixa de correio que compartilha com o núcleo de alto nível no MT3620
  • Leitura e gravação de dados na memória compartilhada

Inicializar tamanhos de buffer e ponteiros

O RTApp recebe informações sobre o buffer de anel por meio de três mensagens na caixa de correio que os núcleos de alto nível e em tempo real compartilham. Cada mensagem contém um comando e dados. As duas primeiras mensagens fornecem os endereços base dos buffers de leitura e gravação que os aplicativos usarão para se comunicar; A terceira mensagem indica que a transmissão de informações de instalação para os buffers foi concluída.

Valor do comando Dados
0xba5e0001 Descritor de buffer de saída (gravação) para o RTApp
0xba5e0002 Descritor de buffer de entrada (leitura) para o RTApp
0xba5e0003 Fim da configuração

O RTApp calcula o tamanho dos buffers de leitura e gravação e configura ponteiros para a posição inicial de cada buffer com base nos dados nos descritores de buffer.

Consulte o exemplo de IntercoreComms_RTApp_MT3620_BareMetal para obter detalhes adicionais sobre como usar a caixa de correio.

Ler e gravar nos buffers

Após a inicialização, o RTApp pode ler e gravar nos buffers. Como a comunicação é implementada com um buffer de anel, tanto as leituras quanto as gravações podem ser encapsuladas até o início do buffer.

As mensagens gravadas ou lidas a partir do buffer têm a seguinte estrutura:

Cabeçalho da mensagem Conteúdo da mensagem
ID do componente Reservado
16 Bytes 4 Bytes
Dados
0 - 1 KB
  • O primeiro campo do cabeçalho da mensagem (16 bytes) contém o ID do componente do aplicativo de alto nível.

    Se o RTApp estiver iniciando a comunicação com o aplicativo de alto nível, verifique se a ordem dos bytes em cada um dos 3 primeiros segmentos do ID do componente é little-endian (byte menos significativo primeiro). A ordem dos bytes nos dois segmentos restantes deve ser big-endian.

    Se o RTApp estiver respondendo a uma mensagem do aplicativo de alto nível, basta copiar o ID do componente na mensagem de origem para o cabeçalho da mensagem de resposta.

  • O segundo campo do cabeçalho da mensagem (4 bytes) está atualmente reservado e deve conter 0s.

  • O cabeçalho da mensagem está sempre alinhado em um limite de 16 bytes.

  • Atualmente, o conteúdo da mensagem pode ter no máximo 1 KB de tamanho.

Após cada operação de leitura ou gravação no buffer, o RTApp usa a caixa de correio compartilhada para notificar o aplicativo de alto nível de que recebeu ou transmitiu uma mensagem.

Configurações de manifesto do aplicativo

Os manifestos do aplicativo para o RTApp e o aplicativo de alto nível devem listar as IDs de componentes dos aplicativos com os quais eles se comunicam. Para definir essa configuração, adicione o AllowedApplicationConnections recurso ao manifesto do aplicativo e, em seguida, adicione cada ID de componente ao recurso. O manifesto do aplicativo Azure Sphere tem mais detalhes. Aqui está um trecho de um manifesto de aplicativo que configura um RTApp para se comunicar com outro aplicativo.

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

Candidaturas de parceiros

Quando você carrega um aplicativo no dispositivo Azure Sphere, as ferramentas de implantação do Azure Sphere excluem, por padrão, todos os aplicativos existentes. Para evitar que isso aconteça quando você desenvolve aplicativos que se comunicam entre si, você precisa marcar os aplicativos como parceiros. Quando você implanta um dos aplicativos, seus parceiros não serão excluídos. Consulte Marcar aplicativos como parceiros para obter detalhes.