Freigeben über


Kommunizieren mit einer allgemeinen Anwendung

Wichtig

Dies ist die Dokumentation zu Azure Sphere (Legacy). Azure Sphere (Legacy) wird am 27. September 2027 eingestellt, und Benutzer müssen bis zu diesem Zeitpunkt zu Azure Sphere (integriert) migrieren. Verwenden Sie die Versionsauswahl oberhalb des Inhaltsverzeichniss, um die Dokumentation zu Azure Sphere (Integriert) anzuzeigen.

Echtzeitfähige Anwendungen (RTApps) kommunizieren mit allgemeinen Anwendungen über einen Ringpuffer, der einer freigegebenen Region des Arbeitsspeichers zugeordnet ist.

In den IntercoreComms-Beispielen wird veranschaulicht, wie RTApps mit allgemeinen Anwendungen kommunizieren können. Verwenden Sie das Beispiel „IntercoreComms_RTApp_MT3620_BareMetal“ als Ausgangspunkt für die Entwicklung Ihres eigenen RTApp-Kommunikationscodes. Weitere Informationen zum in einer High-Level-Anwendung erforderlichen Code finden Sie unter Kommunizieren mit einer Echtzeitanwendung.

Wichtig

Um Informationen zu Registeradressen und anderen hardwarespezifischen Details zu erhalten, fordern Sie das "MT3620 M4 Programmer's Guide" per E-Mail an Azure.Sphere@avnet.com.

Vorgang

Aus Sicht der RTApp umfasst die Kommunikation mit einer allgemeinen Anwendung die folgenden grundlegenden Vorgänge:

  • Lesen von Setupinformationen aus dem Posteingang, der mit dem allgemeinen Kern auf dem MT3620 gemeinsam genutzt wird
  • Lesen und Schreiben von Daten in freigegebenen Arbeitsspeicher

Initialisieren von Puffergrößen und Zeigern

Die RTApp empfängt Informationen zum Ringpuffer über drei Nachrichten in dem Posteingang, der von den Echtzeitkernen und allgemeinen Kernen gemeinsam genutzt wird. Jede Nachricht enthält einen Befehl und Daten. Mit den ersten beiden Nachrichten werden die Basisadressen der Lese- und Schreibpuffer für die Anwendungskommunikation angegeben. Die dritte Nachricht gibt das Ende der Übertragung der Setupinformationen für die Puffer an.

Befehlswert Daten
0xba5e0001 Pufferdeskriptor für Ausgang für die RTApp (Schreiben)
0xba5e0002 Pufferdeskriptor für Eingang für die RTApp (Lesen)
0xba5e0003 Ende des Setups

Die RTApp berechnet die Größe der Lese- und Schreibpuffer und richtet basierend auf den Daten in den Pufferdeskriptoren Zeiger zur Anfangsposition jedes Puffers ein.

Das Beispiel „IntercoreComms_RTApp_MT3620_BareMetal“ enthält weitere Details zur Verwendung des Postfachs.

Lese- und Schreibvorgänge für Puffer

Nach der Initialisierung kann die RTApp aus Puffern lesen und in Puffer schreiben. Da die Kommunikation mit einem Ringpuffer implementiert wird, ist sowohl für Lese- als auch für Schreibvorgänge die Fortsetzung am Anfang des Puffers möglich.

Nachrichten, die in den Puffer geschrieben oder daraus gelesen werden, weisen die folgende Struktur auf:

Nachrichtenheader Nachrichteninhalt
Komponenten-ID Reserviert
16 Byte 4 Bytes
Daten
0–1 KB
  • Das erste Feld des Nachrichtenheaders (16 Bytes) enthält die Komponenten-ID der allgemeinen Anwendung.

    Wenn die RTApp die Kommunikation mit der allgemeinen Anwendung initiiert, sollten Sie sicherstellen, dass die Reihenfolge der Bytes in den ersten drei Segmenten der Komponenten-ID das Little-Endian-Format aufweist (das unwichtigste Byte zuerst). Die Reihenfolge der Bytes in den verbleibenden zwei Segmenten muss das Big-Endian-Format aufweisen.

    Wenn die RTApp auf eine Nachricht der allgemeinen Anwendung antwortet, müssen Sie lediglich die Komponenten-ID in der Quellmeldung in den Header der Antwortnachricht kopieren.

  • Das zweite Feld des Nachrichtenheaders (4 Bytes) ist derzeit reserviert und muss Nullen enthalten.

  • Der Nachrichtenheader ist immer auf eine 16-Byte-Grenze ausgerichtet.

  • Derzeit darf der Nachrichteninhalt höchstens 1 KB groß sein.

Nach jedem Lese- oder Schreibvorgang für den Puffer verwendet die RTApp das freigegebene Postfach, um die allgemeine App darüber zu benachrichtigen, dass eine Nachricht empfangen oder übertragen wurde.

Einstellungen für das Anwendungsmanifest

In den Anwendungsmanifesten für die RTApp und die allgemeine App müssen die Komponenten-IDs der Anwendungen aufgeführt werden, mit denen diese kommunizieren. Fügen Sie dem Anwendungsmanifest die Funktion AllowedApplicationConnections und der Funktion anschließend die einzelnen Komponenten-IDs hinzu, um diese Einstellung zu konfigurieren. Das Azure Sphere-Anwendungsmanifest enthält weitere Details. Hier ist ein Auszug aus einem Anwendungsmanifest angegeben, mit dem eine RTApp für die Kommunikation mit einer anderen Anwendung konfiguriert wird.

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

Partneranwendungen

Wenn Sie eine Anwendung auf das Azure Sphere-Gerät laden, werden standardmäßig alle vorhandenen Anwendungen von den Azure Sphere-Bereitstellungstools gelöscht. Um dies zu verhindern, wenn Sie Anwendungen entwickeln, die miteinander kommunizieren, müssen Sie die Anwendungen als Partner kennzeichnen. Wenn Sie eine der Anwendungen bereitstellen, werden die Partner nicht gelöscht. Ausführliche Informationen finden Sie unter Kennzeichnen von Anwendungen als Partner.