Kommunizieren mit einer allgemeinen Anwendung
Echtzeitfähige Anwendungen (RTApps) kommunizieren mit allgemeinen Anwendungen über einen Ringpuffer, der einer freigegebenen Speicherregion zugeordnet ist.
Die IntercoreComms-Beispiele zeigen, wie RTApps mit allgemeinen Anwendungen kommunizieren können. Verwenden Sie das IntercoreComms_RTApp_MT3620_BareMetal Beispiel als Ausgangspunkt für die Entwicklung Ihres eigenen RTApp-Kommunikationscodes. Unter Kommunizieren mit einer Echtzeitanwendung finden Sie Informationen zum Code, der in einer allgemeinen Anwendung erforderlich ist.
Wichtig
Informationen zu Registrierungsadressen und anderen hardwarespezifischen Details erhalten Sie im "MT3620 M4 Programmer's Guide" per E-Mail Azure.Sphere@avnet.com.
Vorgang
Aus sicht der RTApp umfasst die Kommunikation mit einer allgemeinen Anwendung die folgenden grundlegenden Vorgänge:
- Lesen von Einrichtungsinformationen aus dem Postfach, das mit dem übergeordneten Kern auf dem MT3620 freigegeben wird
- Lesen und Schreiben von Daten in freigegebenen Speicher
Initialisieren von Puffergrößen und Zeigern
Die RTApp empfängt Informationen über den Ringpuffer über drei Nachrichten im Postfach, die von den Echtzeit- und allgemeinen Kernen gemeinsam verwendet werden. Jede Nachricht enthält einen Befehl und Daten. Die ersten beiden Nachrichten stellen die Basisadressen der Lese- und Schreibpuffer bereit, die die Anwendungen für die Kommunikation verwenden. Die dritte Meldung gibt an, dass die Übertragung der Setupinformationen für die Puffer abgeschlossen ist.
Befehlswert | Daten |
---|---|
0xba5e0001 | Pufferdeskriptor für ausgehenden Datenverkehr (Schreiben) für die RTApp |
0xba5e0002 | Pufferdeskriptor für eingehenden Datenverkehr (Lesen) für die RTApp |
0xba5e0003 | Ende des Setups |
Die RTApp berechnet die Größe der Lese- und Schreibpuffer und richtet basierend auf den Daten in den Pufferdeskriptoren Zeiger auf die Anfangsposition jedes Puffers ein.
Weitere Informationen zur Verwendung des Postfachs finden Sie im IntercoreComms_RTApp_MT3620_BareMetal Beispiel.
Lesen aus den Puffern und Schreiben in die Puffer
Nach der Initialisierung kann die RTApp aus den Puffern lesen und in diese schreiben. Da die Kommunikation mit einem Ringpuffer implementiert wird, können lese- und schreibvorgänge bis zum Anfang des Puffers umschließen.
Nachrichten, die in den Puffer geschrieben oder aus diesem gelesen werden, haben die folgende Struktur:
Nachrichtenheader | Nachrichteninhalt | ||||||
---|---|---|---|---|---|---|---|
|
|
Das erste Feld des Nachrichtenheaders (16 Bytes) enthält die Komponenten-ID der allgemeinen App.
Wenn die RTApp die Kommunikation mit der allgemeinen App initiiert, stellen Sie sicher, dass die Reihenfolge der Bytes in jedem der ersten 3 Segmente der Komponenten-ID little-endian ist (zuerst das byte mit der geringsten Bedeutung). Die Reihenfolge der Bytes in den verbleibenden beiden Segmenten muss big-endian sein.
Wenn die RTApp auf eine Nachricht der allgemeinen App antwortet, müssen Sie nur die Komponenten-ID in der Quellnachricht in den Header der Antwortnachricht kopieren.
Das zweite Feld des Nachrichtenheaders (4 Bytes) ist derzeit reserviert und muss 0s enthalten.
Der Nachrichtenheader wird immer an einer 16-Byte-Grenze ausgerichtet.
Derzeit kann der Nachrichteninhalt maximal 1 KB groß sein.
Nach jedem Lese- oder Schreibvorgang für den Puffer verwendet die RTApp das freigegebene Postfach, um die allgemeine App zu benachrichtigen, dass sie eine Nachricht empfangen oder übertragen hat.
Anwendungsmanifesteinstellungen
Die Anwendungsmanifeste für die RTApp und die allgemeine App müssen die Komponenten-IDs der Anwendungen auflisten, mit denen sie kommunizieren. Um diese Einstellung zu konfigurieren, fügen Sie die AllowedApplicationConnections
Funktion dem Anwendungsmanifest hinzu, und fügen Sie dann jede Komponenten-ID zur Funktion hinzu. Das Azure Sphere-Anwendungsmanifest enthält weitere Details. Hier ist ein Auszug aus einem Anwendungsmanifest, das eine RTApp für die Kommunikation mit einer anderen Anwendung konfiguriert.
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Partneranwendungen
Wenn Sie eine Anwendung auf das Azure Sphere-Gerät laden, löschen die Azure Sphere-Bereitstellungstools standardmäßig alle vorhandenen Anwendungen. Um dies zu verhindern, wenn Sie Anwendungen entwickeln, die miteinander kommunizieren, müssen Sie die Anwendungen als Partner markieren. Wenn Sie eine der Anwendungen bereitstellen, werden die zugehörigen Partner nicht gelöscht. Weitere Informationen finden Sie unter Markieren von Anwendungen als Partner .