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
Komponenten-ID Reserviert
16 Bytes 4 Bytes
Daten
0 - 1 KB
  • 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 .