Communiceren met een toepassing op hoog niveau
Realtime compatibele toepassingen (RTApps) communiceren met toepassingen op hoog niveau via een ringbuffer die is toegewezen aan een gedeelde regio van het geheugen.
De IntercoreComms-voorbeelden laten zien hoe RTApps kan communiceren met toepassingen op hoog niveau. Gebruik het IntercoreComms_RTApp_MT3620_BareMetal voorbeeld als uitgangspunt voor het ontwikkelen van uw eigen RTApp-communicatiecode. Zie Communiceren met een toepassing die in realtime kan worden gebruikt voor informatie over de code die is vereist in een toepassing op hoog niveau.
Belangrijk
Voor informatie over registratieadressen en andere hardwarespecifieke details kunt u de "MT3620 M4 Programmeerhandleiding" aanvragen door een e-mail te sturen Azure.Sphere@avnet.comnaar .
Bewerking
Vanuit het perspectief van de RTApp omvat communicatie met een toepassing op hoog niveau de volgende basisbewerkingen:
- Informatie over instellen lezen uit het postvak dat het deelt met de kern op hoog niveau op de MT3620
- Gegevens lezen en schrijven naar gedeeld geheugen
Buffergrootten en aanwijzers initialiseren
De RTApp ontvangt informatie over de ringbuffer via drie berichten in het postvak die de realtime kernen en kernen op hoog niveau delen. Elk bericht bevat een opdracht en gegevens. De eerste twee berichten bevatten de basisadressen van de lees- en schrijfbuffers die de toepassingen gebruiken om te communiceren; het derde bericht geeft aan dat de overdracht van installatiegegevens voor de buffers is voltooid.
Opdrachtwaarde | Gegevens |
---|---|
0xba5e0001 | Uitgaande (schrijf)bufferdescriptor voor de RTApp |
0xba5e0002 | Inkomende (lees)bufferdescriptor voor de RTApp |
0xba5e0003 | Einde van de installatie |
De RTApp berekent de grootte van de lees- en schrijfbuffers en stelt aanwijzers in op de beginpositie van elke buffer op basis van de gegevens in de bufferbeschrijvingen.
Zie het IntercoreComms_RTApp_MT3620_BareMetal voorbeeld voor meer informatie over het gebruik van het postvak.
Lezen uit en schrijven naar de buffers
Na de initialisatie kan de RTApp lezen van en schrijven naar de buffers. Omdat communicatie wordt geïmplementeerd met een ringbuffer, kunnen zowel lees- als schrijfbewerkingen worden teruglopen tot aan het begin van de buffer.
Berichten die zijn geschreven naar of gelezen vanuit de buffer, hebben de volgende structuur:
Berichtkop | Berichtinhoud | ||||||
---|---|---|---|---|---|---|---|
|
|
Het eerste veld van de berichtkop (16 bytes) bevat de onderdeel-id van de app op hoog niveau.
Als de RTApp communicatie met de app op hoog niveau initieert, moet u ervoor zorgen dat de volgorde van bytes in elk van de eerste drie segmenten van de onderdeel-id little-endian is (minst significante byte eerst). De volgorde van de bytes in de resterende twee segmenten moet big-endian zijn.
Als de RTApp reageert op een bericht van de app op hoog niveau, hoeft u alleen de onderdeel-id in het bronbericht te kopiëren naar de koptekst van het antwoordbericht.
Het tweede veld van de berichtkop (4 bytes) is momenteel gereserveerd en moet 0s bevatten.
De berichtkoptekst wordt altijd uitgelijnd op een grens van 16 bytes.
Op dit moment kan de berichtinhoud maximaal 1 kB groot zijn.
Na elke lees- of schrijfbewerking naar de buffer gebruikt de RTApp het gedeelde postvak om de app op hoog niveau te laten weten dat deze een bericht heeft ontvangen of verzonden.
Toepassingsmanifestinstellingen
De toepassingsmanifesten voor zowel de RTApp als de app op hoog niveau moeten de onderdeel-id's vermelden van de toepassingen waarmee ze communiceren. Als u deze instelling wilt configureren, voegt u de AllowedApplicationConnections
mogelijkheid toe aan het toepassingsmanifest en voegt u vervolgens elke onderdeel-id toe aan de mogelijkheid.
Het Azure Sphere-toepassingsmanifest bevat meer informatie. Hier volgt een fragment uit een toepassingsmanifest waarmee een RTApp wordt geconfigureerd om te communiceren met een andere toepassing.
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Partnertoepassingen
Wanneer u een toepassing op het Azure Sphere-apparaat laadt, worden met de Azure Sphere-implementatiehulpprogramma's standaard alle bestaande toepassingen verwijderd. Om dit te voorkomen wanneer u toepassingen ontwikkelt die met elkaar communiceren, moet u de toepassingen markeren als partners. Wanneer u een van de toepassingen implementeert, worden de bijbehorende partners niet verwijderd. Zie Toepassingen markeren als partners voor meer informatie.