Communiquer avec une application de haut niveau

Les applications en temps réel (RTApps) communiquent avec les applications de haut niveau via une mémoire tampon en anneau mappée à une région de mémoire partagée.

Les exemples IntercoreComms montrent comment les applications en temps réel peuvent communiquer avec des applications de haut niveau. Utilisez l’exemple IntercoreComms_RTApp_MT3620_BareMetal comme point de départ pour développer votre propre code de communication RTApp. Pour plus d’informations sur le code requis dans une application de haut niveau, consultez Communiquer avec une application en temps réel .

Important

Pour plus d’informations sur les adresses d’inscription et d’autres détails spécifiques au matériel, demandez le « Guide du programmeur MT3620 M4 » en envoyant un e-mail à Azure.Sphere@avnet.com.

Opération

Du point de vue de l’application RTApp, la communication avec une application de haut niveau implique les opérations de base suivantes :

  • Lecture des informations de configuration de la boîte aux lettres qu’il partage avec le cœur de haut niveau sur le MT3620
  • Lecture et écriture de données dans la mémoire partagée

Initialiser des pointeurs et des tailles de mémoire tampon

L’application rtapp reçoit des informations sur la mémoire tampon en anneau via trois messages dans la boîte aux lettres que les cœurs en temps réel et de haut niveau partagent. Chaque message contient une commande et des données. Les deux premiers messages fournissent les adresses de base des mémoires tampons de lecture et d’écriture que les applications utiliseront pour communiquer . Le troisième message indique que la transmission des informations d’installation pour les mémoires tampons est terminée.

Valeur de commande Données
0xba5e0001 Descripteur de mémoire tampon sortante (écriture) pour l’application en temps réel
0xba5e0002 Descripteur de mémoire tampon entrante (lecture) pour l’application en temps réel
0xba5e0003 Fin de l’installation

L’application rtapp calcule la taille des mémoires tampons de lecture et d’écriture et configure des pointeurs vers la position initiale de chaque mémoire tampon en fonction des données contenues dans les descripteurs de mémoire tampon.

Pour plus d’informations sur l’utilisation de la boîte aux lettres, consultez l’exemple de IntercoreComms_RTApp_MT3620_BareMetal.

Lire et écrire dans les mémoires tampons

Après l’initialisation, l’application en temps réel peut lire et écrire dans les mémoires tampons. Étant donné que la communication est implémentée avec une mémoire tampon en anneau, les lectures et les écritures peuvent encapsuler jusqu’au début de la mémoire tampon.

Les messages écrits ou lus à partir de la mémoire tampon ont la structure suivante :

En-tête de message Contenu du message
ID du composant Réservés au
16 octets 4 octets
Données
0 - 1 Ko
  • Le premier champ de l’en-tête de message (16 octets) contient l’ID de composant de l’application de haut niveau.

    Si l’application rtapp lance la communication avec l’application de haut niveau, assurez-vous que l’ordre des octets dans chacun des 3 premiers segments de l’ID de composant est little-endian (octet le moins significatif en premier). L’ordre des octets dans les deux segments restants doit être big-endian.

    Si l’application rtapp répond à un message de l’application de haut niveau, il vous suffit de copier l’ID du composant dans le message source dans l’en-tête du message de réponse.

  • Le deuxième champ de l’en-tête de message (4 octets) est actuellement réservé et doit contenir des 0.

  • L’en-tête de message est toujours aligné sur une limite de 16 octets.

  • Actuellement, le contenu du message peut avoir une taille maximale de 1 Ko.

Après chaque opération de lecture ou d’écriture dans la mémoire tampon, l’application en temps réel utilise la boîte aux lettres partagée pour informer l’application générale qu’elle a reçu ou transmis un message.

Paramètres du manifeste d’application

Les manifestes de l’application rtapp et de l’application de haut niveau doivent répertorier les ID de composant des applications avec lesquelles ils communiquent. Pour configurer ce paramètre, ajoutez la AllowedApplicationConnections fonctionnalité au manifeste de l’application, puis ajoutez chaque ID de composant à la fonctionnalité. Le manifeste d’application Azure Sphere contient plus de détails. Voici un extrait d’un manifeste d’application qui configure une application en temps réel pour communiquer avec une autre application.

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

Applications partenaires

Lorsque vous chargez une application sur l’appareil Azure Sphere, les outils de déploiement Azure Sphere suppriment par défaut toutes les applications existantes. Pour éviter que cela ne se produise lorsque vous développez des applications qui communiquent entre elles, vous devez marquer les applications comme des partenaires. Lorsque vous déployez l’une des applications, ses partenaires ne sont pas supprimés. Pour plus d’informations, consultez Marquer des applications en tant que partenaires .