Dela via


Kommunicera med ett program på hög nivå

Real-time capable applications (RTApps) communicate with high-level applications through a ring buffer that is mapped to a shared region of memory.

IntercoreComms-exemplen visar hur RTApps kan kommunicera med program på hög nivå. Använd det IntercoreComms_RTApp_MT3620_BareMetal exemplet som utgångspunkt för att utveckla din egen RTApp-kommunikationskod. Mer information om vilken kod som krävs i ett program på hög nivå finns i Kommunicera med ett program som kan användas i realtid .

Viktigt

Om du vill ha information om registeradresser och annan maskinvaruspecifik information kan du begära "MT3620 M4 Programmer's Guide" genom att Azure.Sphere@avnet.comskicka ett e-postmeddelande till .

Drift

Från RTApps perspektiv omfattar kommunikation med en högnivåapplikation följande grundläggande åtgärder:

  • Läsa konfigurationsinformation från postlådan som den delar med kärnan på hög nivå på MT3620
  • Läsa och skriva data till delat minne

Initiera buffertstorlekar och pekare

RTAppen tar emot information om ringbufferten via tre meddelanden i postlådan som kärnor på realtid och hög nivå delar. Varje meddelande innehåller ett kommando och data. De två första meddelandena innehåller basadresserna för de läs- och skrivbuffertar som programmen ska använda för att kommunicera. Det tredje meddelandet anger att konfigurationsinformationen för buffertarna har slutförts.

Kommandovärde Data
0xba5e0001 Utgående buffertbeskrivning (skrivning) för RTApp
0xba5e0002 Inkommande (läst) buffertbeskrivning för RTApp
0xba5e0003 Slut på konfigurationen

RTApp beräknar storleken på läs- och skrivbuffertarna och ställer in pekare till den ursprungliga positionen för varje buffert baserat på data i buffertbeskrivningarna.

Mer information om hur du använder postlådan finns i IntercoreComms_RTApp_MT3620_BareMetal exempel.

Läsa från och skriva till buffertar

Efter initieringen kan RTApp läsa från och skriva till buffertar. Eftersom kommunikation implementeras med en ringbuffert kan både läsningar och skrivningar radbrytas runt till början av bufferten.

Meddelanden som skrivs till eller läses från bufferten har följande struktur:

Meddelandehuvud Meddelandeinnehåll
Komponent-ID Reserverade
16 byte 4 byte
Data
0 – 1 KB
  • Det första fältet i meddelandehuvudet (16 byte) innehåller komponent-ID:t för högnivåappen.

    Om RTApp initierar kommunikation med högnivåappen kontrollerar du att ordningen på byte i vart och ett av de tre första segmenten av komponent-ID:t är lite endianskt (minst signifikant byte först). Ordningen på bytes i de återstående två segmenten måste vara big-endian.

    Om RTApp-appen svarar på ett meddelande från högnivåappen behöver du bara kopiera komponent-ID:t i källmeddelandet till svarsmeddelandets rubrik.

  • Det andra fältet i meddelandehuvudet (4 byte) är för närvarande reserverat och måste innehålla 0:or.

  • Meddelanderubriken justeras alltid efter en gräns på 16 byte.

  • För närvarande kan meddelandets innehåll ha en storlek på högst 1 kB.

Efter varje läs- eller skrivåtgärd i bufferten använder RTApp den delade postlådan för att meddela högnivåappen att den har tagit emot eller överfört ett meddelande.

Inställningar för programmanifest

Programmanifesten för både RTApp och den högnivåappen måste visa komponent-ID:na för de program som de kommunicerar med. Om du vill konfigurera den AllowedApplicationConnections här inställningen lägger du till funktionen i programmanifestet och lägger sedan till varje komponent-ID i funktionen. Azure Sphere-programmanifestet innehåller mer information. Här är ett utdrag från ett programmanifest som konfigurerar en RTApp för att kommunicera med ett annat program.

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

Partnerprogram

När du läser in ett program på Azure Sphere-enheten tar Azure Sphere-distributionsverktygen som standard bort alla befintliga program. För att förhindra att detta händer när du utvecklar program som kommunicerar med varandra måste du markera programmen som partner. När du distribuerar ett av programmen tas dess partner inte bort. Mer information finns i Markera program som partner .