Partilhar via


Comunicar com uma aplicação de alto nível

As aplicações com capacidade em tempo real (RTApps) comunicam com aplicações de alto nível através de uma memória intermédia de anel mapeada para uma região de memória partilhada.

Os exemplos do IntercoreComms mostram como o RTApps pode comunicar com aplicações de alto nível. Utilize o exemplo de IntercoreComms_RTApp_MT3620_BareMetal como ponto de partida para desenvolver o seu próprio código de comunicação RTApp. Veja Comunicar com uma aplicação com capacidade em tempo real para obter informações sobre o código necessário numa aplicação de alto nível.

Importante

Para obter informações sobre endereços de registo e outros detalhes específicos do hardware, peça o "Guia do Programador MT3620 M4" 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:

  • Ler informações de configuração da caixa de correio que partilha com o núcleo de alto nível no MT3620
  • Ler e escrever dados para memória partilhada

Inicializar tamanhos e ponteiros da memória intermédia

O RTApp recebe informações sobre a memória intermédia da cadência através de três mensagens na caixa de correio que os núcleos em tempo real e de alto nível partilham. Cada mensagem contém um comando e dados. As duas primeiras mensagens fornecem os endereços base das memórias intermédias de leitura e escrita que as aplicações utilizarão para comunicar; a terceira mensagem indica que a transmissão das informações de configuração das memórias intermédias foi concluída.

Valor do Comando Dados
0xba5e0001 Descritor de memória intermédia de saída (escrita) para o RTApp
0xba5e0002 Descritor de memória intermédia de entrada (leitura) para o RTApp
0xba5e0003 Fim da configuração

O RTApp calcula o tamanho das memórias intermédias de leitura e escrita e configura os ponteiros para a posição inicial de cada memória intermédia com base nos dados nos descritores da memória intermédia.

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

Ler e escrever nas memórias intermédias

Após a inicialização, o RTApp pode ler e escrever nas memórias intermédias. Uma vez que a comunicação é implementada com uma memória intermédia de anel, tanto as leituras como as escritas podem ser encapsuladas no início da memória intermédia.

As mensagens escritas ou lidas a partir da memória intermédia 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 da aplicação de alto nível.

    Se o RTApp estiver a iniciar a comunicação com a aplicação de alto nível, certifique-se de que a ordenação de bytes em cada um dos três primeiros segmentos do ID do componente é pouco endiano (byte menos significativo primeiro). A ordenação dos bytes nos dois segmentos restantes tem de ser big-endian.

    Se o RTApp estiver a responder a uma mensagem da aplicação 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 tem de conter 0s.

  • O cabeçalho da mensagem está sempre alinhado num 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 escrita na memória intermédia, o RTApp utiliza a caixa de correio partilhada para notificar a aplicação de alto nível de que recebeu ou transmitiu uma mensagem.

Definições do manifesto da aplicação

Os manifestos da aplicação para o RTApp e para a aplicação de alto nível têm de listar os IDs de componente das aplicações com as quais comunicam. Para configurar esta definição, adicione a AllowedApplicationConnections capacidade ao manifesto da aplicação e, em seguida, adicione cada ID de componente à capacidade. O manifesto da aplicação do Azure Sphere tem mais detalhes. Eis um excerto de um manifesto de aplicação que configura uma RTApp para comunicar com outra aplicação.

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

Aplicações de parceiros

Quando carrega uma aplicação para o dispositivo do Azure Sphere, as ferramentas de implementação do Azure Sphere eliminam todas as aplicações existentes por predefinição. Para impedir que isto aconteça quando desenvolve aplicações que comunicam entre si, tem de marcar as aplicações como parceiros. Quando implementa uma das aplicações, os respetivos parceiros não serão eliminados. Veja Marcar aplicações como parceiros para obter detalhes.