Comunicar-se com um aplicativo de alto nível
Importante
Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) 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 em 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 RTApps podem se comunicar com aplicativos de alto nível. Use o exemplo de IntercoreComms_RTApp_MT3620_BareMetal como ponto de partida para desenvolver seu próprio código de comunicação RTApp. Confira Comunicar-se com um aplicativo com funcionalidade de 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 "Guia do Programador MT3620 M4" enviando um e-mail para Azure.Sphere@avnet.com.
Operação
Da perspectiva do RTApp, a comunicação com um aplicativo de alto nível envolve as seguintes operações básicas:
- Ler as informações de configuração da caixa de correio que ele compartilha com o núcleo de alto nível no MT3620
- Ler e gravar dados em memória compartilhada
Inicializar ponteiros e tamanhos de buffer
O RTApp recebe informações sobre o buffer de anéis por meio de três mensagens na caixa de correio que compartilham os núcleos em tempo real e de alto nível. Cada mensagem contém um comando e os dados. As duas primeiras mensagens fornecem os endereços base dos buffers de leitura e gravação que o aplicativo usará para se comunicar; a terceira mensagem indica que a transmissão de informações de configuraçã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 instalação |
O RTApp calcula o tamanho dos buffers de leitura e gravação e define ponteiros para a posição inicial de cada buffer com base nos dados de descritores de buffer.
Veja o exemplo IntercoreComms_RTApp_MT3620_BareMetal para obter mais detalhes sobre como usar a caixa de correio.
Ler e gravar nos buffers
Após a inicialização, o RTApp pode ler e gravar os buffers. Como a comunicação é implementada com um buffer de anel, leituras e gravações podem ser encapsuladas para o início do buffer.
As mensagens gravadas ou lidas no buffer têm a seguinte estrutura:
Cabeçalho da mensagem | Conteúdo da mensagem | ||||||
---|---|---|---|---|---|---|---|
|
|
O primeiro campo do cabeçalho da mensagem (16 bytes) contém a 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 ordenação dos bytes em cada um dos três primeiros segmentos da ID do componente é little-endian (byte menos significativo primeiro). A ordenação dos bytes nos dois segmentos restantes deve ser big-endian.
Se o RTApp estiver respondendo a uma mensagem do aplicativo de alto nível, você só precisará copiar a 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á reservado no momento e deve conter 0s.
O cabeçalho da mensagem sempre está alinhado com um limite de 16 bytes.
No momento, o conteúdo da mensagem pode ter no máximo 1 KB de tamanho.
Depois de cada operação de leitura ou gravação para o buffer, o RTApp usa a caixa de correio compartilhada para notificar o aplicativo de alto nível que a mensagem foi recebida ou transmitida.
Configurações do manifesto do aplicativo
Os manifestos do aplicativo para o aplicativo de alto nível e o RTApp devem listar as IDs de componente de aplicativos com o qual eles se comunicam. Para definir essas configurações, adicione a funcionalidade AllowedApplicationConnections
ao manifesto do aplicativo e, em seguida, adicione cada UART à funcionalidade. O manifesto do aplicativo do Azure Sphere tem mais detalhes. Aqui está um trecho de um manifesto de aplicativo que configura um RTApp para se comunicar com um outro aplicativo.
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Aplicativos de parceiros
Quando você carrega um aplicativo no dispositivo do Azure Sphere, as ferramentas de implantação do Azure Sphere excluem todos os aplicativos existentes por padrão. Para evitar que isso aconteça quando você desenvolve aplicativos que se comunicam entre si, é necessário 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.