Delen via


Communiceren met een toepassing op hoog niveau

Belangrijk

Dit is de Documentatie voor Azure Sphere (verouderd). Azure Sphere (verouderd) wordt op 27 september 2027 buiten gebruik gesteld en gebruikers moeten tegen deze tijd migreren naar Azure Sphere (geïntegreerd). Gebruik de versiekiezer boven de inhoudsweergave om de Documentatie van Azure Sphere (geïntegreerd) weer te geven.

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 registeradressen en andere hardwarespecifieke details vraagt u de "MT3620 M4 Programmeurhandleiding" aan door een e-mail te sturen Azure.Sphere@avnet.com.

Operation

Vanuit het perspectief van de RTApp omvat communicatie met een toepassing op hoog niveau de volgende basisbewerkingen:

  • Informatie over de set-up lezen uit het postvak dat wordt gedeeld met de kern op hoog niveau op 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 dat de kernen in realtime en 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 bufferdescriptor (schrijven) voor de RTApp
0xba5e0002 Inkomende bufferdescriptor (lezen) voor de RTApp
0xba5e0003 Einde van de installatie

De RTApp berekent de grootte van de lees- en schrijfbuffers en stelt aanwijzers in op de initiële positie van elke buffer op basis van de gegevens in de bufferdescriptors.

Zie het IntercoreComms_RTApp_MT3620_BareMetal voorbeeld voor meer informatie over het gebruik van het postvak.

Lezen van 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 rondlopen tot het begin van de buffer.

Berichten die vanuit de buffer zijn geschreven of gelezen, hebben de volgende structuur:

Berichtkop Berichtinhoud
Onderdeel-id Gereserveerd
16 bytes 4 bytes
Gegevens
0 - 1 KB
  • 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 start, 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 berichtkop wordt altijd uitgelijnd op een grens van 16 bytes.

  • Op dit moment kan berichtinhoud maximaal 1 kB groot zijn.

Nadat elke lees- of schrijfbewerking naar de buffer is uitgevoerd, gebruikt de RTApp het gedeelde postvak om de app op hoog niveau op de hoogte te stellen dat een bericht is 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 details. Hier volgt een fragment van 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 standaard alle bestaande toepassingen verwijderd door de Azure Sphere-implementatiehulpprogramma's. Als u dit wilt 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.