Comunicare con un'applicazione di alto livello

Le applicazioni in tempo reale (RTApps) comunicano con applicazioni di alto livello tramite un buffer circolare mappato a un'area di memoria condivisa.

Gli esempi IntercoreComms mostrano come le RTApp possono comunicare con applicazioni di alto livello. Usare l'esempio IntercoreComms_RTApp_MT3620_BareMetal come punto di partenza per lo sviluppo di un codice di comunicazione RTApp personalizzato. Per informazioni sul codice necessario in un'applicazione di alto livello, vedere Comunicare con un'applicazione in tempo reale .

Importante

Per informazioni sugli indirizzi di registro e altri dettagli specifici dell'hardware, richiedere la "Guida del programmatore MT3620 M4" inviando un messaggio di Azure.Sphere@avnet.composta elettronica.

Operazione

Dal punto di vista della RTApp, la comunicazione con un'applicazione di alto livello comporta le seguenti operazioni di base:

  • Lettura delle informazioni di configurazione della cassetta postale che condivide con il core di alto livello sull'MT3620
  • Lettura e scrittura di dati nella memoria condivisa

Inizializzare puntatori e dimensioni del buffer

L'RTApp riceve informazioni sul buffer dell'anello tramite tre messaggi nella cassetta postale condivisi dai core in tempo reale e di alto livello. Ogni messaggio contiene un comando e dati. I primi due messaggi forniscono gli indirizzi di base dei buffer di lettura e scrittura che le applicazioni utilizzeranno per comunicare; il terzo messaggio indica che la trasmissione delle informazioni di configurazione per i buffer è stata completata.

Valore comando Dati
0xba5e0001 Descrittore del buffer in uscita (scrittura) per l'RTApp
0xba5e0002 Descrittore del buffer in ingresso (lettura) per l'RTApp
0xba5e0003 Fine dell'installazione

L'RTApp calcola le dimensioni dei buffer di lettura e scrittura e imposta i puntatori alla posizione iniziale di ogni buffer in base ai dati nei descrittori del buffer.

Vedere l'esempio IntercoreComms_RTApp_MT3620_BareMetal per altri dettagli su come usare la cassetta postale.

Leggere e scrivere nei buffer

Dopo l'inizializzazione, l'RTApp può leggere e scrivere nei buffer. Poiché la comunicazione viene implementata con un buffer di anello, sia le letture che le scritture possono andare a capo fino all'inizio del buffer.

I messaggi scritti o letti dal buffer hanno la seguente struttura:

Intestazione del messaggio Contenuto del messaggio
ID componente Riservati
16 byte 4 byte
Dati
0 - 1 KB
  • Il primo campo dell'intestazione del messaggio (16 byte) contiene l'ID componente dell'app di alto livello.

    Se l'RTApp sta avviando la comunicazione con l'app di alto livello, assicurarsi che l'ordinamento dei byte in ognuno dei primi 3 segmenti dell'ID componente sia little-endian (prima byte meno significativo). L'ordinamento dei byte nei due segmenti rimanenti deve essere big-endian.

    Se l'RTApp risponde a un messaggio dall'app di alto livello, è sufficiente copiare l'ID componente nel messaggio di origine nell'intestazione del messaggio di risposta.

  • Il secondo campo dell'intestazione del messaggio (4 byte) è attualmente riservato e deve contenere 0s.

  • L'intestazione del messaggio è sempre allineata su un limite di 16 byte.

  • Attualmente, le dimensioni del contenuto dei messaggi possono essere al massimo di 1 KB.

Dopo ogni operazione di lettura o scrittura nel buffer, l'RTApp usa la cassetta postale condivisa per notificare all'app di alto livello che ha ricevuto o trasmesso un messaggio.

Impostazioni del manifesto dell'applicazione

I manifesti dell'applicazione sia per l'RTApp che per l'app di alto livello devono elencare gli ID componente delle applicazioni con cui comunicano. Per configurare questa impostazione, aggiungere la AllowedApplicationConnections funzionalità al manifesto dell'applicazione e quindi aggiungere ogni ID componente alla funzionalità. Il manifesto dell'applicazione Azure Sphere ha maggiori dettagli. Ecco un estratto di un manifesto dell'applicazione che configura un'RTApp per comunicare con un'altra applicazione.

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

Applicazioni partner

Quando si carica un'applicazione nel dispositivo Azure Sphere, gli strumenti di distribuzione di Azure Sphere eliminano per impostazione predefinita tutte le applicazioni esistenti. Per evitare che ciò si verifichi quando si sviluppano applicazioni che comunicano tra loro, è necessario contrassegnare le applicazioni come partner. Quando si distribuisce una delle applicazioni, i relativi partner non verranno eliminati. Per informazioni dettagliate, vedere Contrassegnare le applicazioni come partner .