Comunicare con un'applicazione di alto livello
Importante
Questa è la documentazione di Azure Sphere (legacy). Azure Sphere (legacy) viene ritirato il 27 settembre 2027 e gli utenti devono eseguire la migrazione ad Azure Sphere (integrato) entro questo periodo. Usare il selettore di versione posizionato sopra il sommario per visualizzare la documentazione di Azure Sphere (integrata).
Le applicazioni con operazioni in tempo reale (RTApp) comunicano con le applicazioni di alto livello tramite un buffer circolare associato a un'area di memoria condivisa.
Gli esempi IntercoreComms illustrano le modalità di comunicazione delle applicazioni RTApp con le applicazioni di alto livello. Usare l'esempio IntercoreComms_RTApp_MT3620_BareMetal come punto di partenza per sviluppare il codice per la comunicazione con le applicazioni RTApp. Per informazioni sui requisiti di codice per un'applicazione di alto livello, vedere Comunicare con un'applicazione con funzionalità in tempo reale.
Importante
Per informazioni sugli indirizzi di registrazione e altri dettagli specifici dell'hardware, richiedere la "Guida per programmatori MT3620 M4" inviando un messaggio di posta elettronica a Azure.Sphere@avnet.com.
Operazione
Dalla prospettiva dell'applicazione RTApp, la comunicazione con un'applicazione di alto livello comporta le operazioni di base seguenti:
- Lettura delle informazioni di configurazione dalla cassetta postale che condivide con il core di alto livello sul dispositivo MT3620
- Lettura e scrittura dei dati nella memoria condivisa
Inizializzazione di dimensioni del buffer e puntatori
L'applicazione RTApp riceve informazioni sul buffer circolare tramite tre messaggi nella cassetta postale condivisa dai core per operazioni in tempo reale e di alto livello. Ogni messaggio contiene un comando e dei dati. I primi due messaggi forniscono gli indirizzi di base dei buffer di lettura e scrittura usati dalle applicazioni per la comunicazione. Il terzo messaggio indica che la trasmissione di informazioni di configurazione per i buffer è terminata.
Valore del comando | Dati |
---|---|
0xba5e0001 | Descrittore del buffer in uscita (scrittura) per l'applicazione RTApp |
0xba5e0002 | Descrittore del buffer in ingresso (lettura) per l'applicazione RTApp |
0xba5e0003 | Fine della configurazione |
L'applicazione RTApp calcola le dimensioni dei buffer di lettura e scrittura e configura i puntatori alla posizione iniziale di ogni buffer, in base ai dati nei descrittori dei 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'applicazione RTApp può eseguire operazioni di lettura e scrittura nei buffer. Poiché la comunicazione viene implementata con un buffer circolare, le operazioni di lettura e scrittura possono tornare all'inizio del buffer.
I messaggi scritti o letti dal buffer hanno la struttura seguente:
Intestazione del messaggio | Contenuto del messaggio | ||||||
---|---|---|---|---|---|---|---|
|
|
Il primo campo dell'intestazione del messaggio (16 byte) contiene l'ID componente dell'app di alto livello.
Se l'applicazione RTApp avvia la comunicazione con l'app di alto livello, assicurarsi che l'ordine dei byte in ognuno dei primi 3 segmenti dell'ID componente sia little endian (byte meno significativo per primo). L'ordine dei byte nei due segmenti rimanenti deve essere big endian.
Se l'applicazione RTApp risponde a un messaggio dell'app di alto livello, è sufficiente copiare l'ID componente del messaggio di origine nell'intestazione del messaggio di risposta.
Il secondo campo dell'intestazione del messaggio (4 byte) è attualmente riservato e deve contenere zeri.
L'intestazione del messaggio è sempre allineata a limite di 16 byte.
Attualmente, il contenuto del messaggio può avere dimensioni massime di 1 KB.
Dopo ogni operazione di lettura o scrittura nel buffer, l'applicazione 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 per l'app di alto livello e l'applicazione RTApp devono elencare gli ID componente delle applicazioni con cui comunicano. Per configurare questa impostazione, aggiungere la funzionalità AllowedApplicationConnections
al manifesto dell'applicazione e quindi aggiungere ogni ID componente a tale funzionalità. Il manifesto dell'applicazione Azure Sphere include altri dettagli. Ecco un estratto del manifesto dell'applicazione che configura un'applicazione RTApp per la comunicazione con un'altra applicazione.
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Applicazioni partner
Quando si carica un'applicazione nel dispositivo Azure Sphere, per impostazione predefinita gli strumenti di distribuzione di Azure Sphere eliminano tutte le applicazioni esistenti. Per evitare che ciò accada quando si sviluppano applicazioni che comunicano tra loro, è necessario contrassegnare le applicazioni come partner. Quando si distribuisce una delle applicazioni, i partner non verranno eliminati. Per informazioni dettagliate, vedere Contrassegnare le applicazioni come partner.