Comunicarse con una aplicación de alto nivel

Las aplicaciones compatibles en tiempo real (RTApps) se comunican con aplicaciones de alto nivel a través de un búfer de anillo que se asigna a una región compartida de la memoria.

Los ejemplos de IntercoreComms muestran cómo las RTApps pueden comunicarse con aplicaciones de alto nivel. Use la muestra de IntercoreComms_RTApp_MT3620_BareMetal como punto de partida para desarrollar su propio código de comunicación RTApp. Consulte Comunicarse con una aplicación compatible con tiempo real para obtener información sobre el código requerido en una aplicación de alto nivel.

Importante

Para obtener información sobre las direcciones de registro y otros detalles específicos del hardware, solicita la "Guía del programador de MT3620 M4" por correo electrónico Azure.Sphere@avnet.com.

Operación

Desde la perspectiva de la RTApp, la comunicación con una aplicación de alto nivel implica las siguientes operaciones básicas:

  • Lectura de la información de configuración del buzón que comparte con el núcleo de alto nivel en mt3620
  • Leer y escribir datos en la memoria compartida

Inicializar punteros y tamaños de búfer

La RTApp recibe información sobre el búfer de anillo a través de tres mensajes en el buzón que comparten los núcleos en tiempo real y de alto nivel. Cada mensaje contiene un comando y datos. Los dos primeros mensajes proporcionan las direcciones base de los búferes de lectura y escritura que las aplicaciones utilizarán para comunicarse; El tercer mensaje indica que se ha terminado la transmisión de la información de configuración para los búferes.

Valor del comando Datos
0xba5e0001 Descriptor de búfer de salida (escritura) para la RTApp
0xba5e0002 Descriptor de búfer de entrada (lectura) para la RTApp
0xba5e0003 Final de la configuración

La RTApp calcula el tamaño de los búferes de lectura y escritura y configura punteros a la posición inicial de cada búfer basándose en los datos de los descriptores de búfer.

Vea la IntercoreComms_RTApp_MT3620_BareMetal ejemplo para obtener más información sobre cómo usar el buzón de correo.

Leer y escribir en los búferes

Después de inicialización, el RTApp puede leer y escribir a los búferes. Dado que la comunicación se implementa con un búfer de anillo, tanto las lecturas como las escrituras pueden ajustarse al principio del búfer.

Los mensajes escritos en o leídos desde el búfer tienen la estructura siguiente:

Encabezado del mensaje Contenido del mensaje
Id. de componente Reservados
16 bytes 4 bytes
Datos
De 0 a 1 KB
  • El primer campo del encabezado del mensaje (16 bytes) contiene el id. de componente de la aplicación de alto nivel.

    Si la RTApp está iniciando la comunicación con la aplicación de alto nivel, asegúrese de que el orden de bytes en cada uno de los 3 primeros segmentos del id. del componente es poco endian (el byte menos significativo en primer lugar). El orden de los bytes en los dos segmentos restantes debe ser big-endian.

    Si la RTApp responde a un mensaje desde la aplicación de alto nivel, solo tiene que copiar el id. del componente en el mensaje de origen en el encabezado del mensaje de respuesta.

  • El segundo campo del encabezado del mensaje (4 bytes) está actualmente reservado y debe contener 0s.

  • El encabezado del mensaje siempre está alineado con un límite de 16 bytes.

  • Actualmente, el contenido del mensaje puede tener un tamaño máximo de 1 KB.

Después de cada operación de lectura o escritura en el búfer, la RTApp usa el buzón de correo compartido para notificar a la aplicación de alto nivel que ha recibido o transmitido un mensaje.

Configuración de manifiesto de la aplicación

La aplicación se manifiesta tanto para la RTApp como para la aplicación de alto nivel debe enumerar los id. de componente de las aplicaciones con las que se comunican. Para configurar esta configuración, agregue la AllowedApplicationConnections funcionalidad al manifiesto de la aplicación y, a continuación, agregue cada id. de componente a la funcionalidad. El manifiesto de la aplicación Azure Sphere tiene más detalles. Este es un extracto de un manifiesto de aplicación que configura una RTApp para comunicarse con otra aplicación.

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

Aplicaciones de partners

Al cargar una aplicación en el dispositivo Azure Sphere, las herramientas de implementación de Azure Sphere eliminan de forma predeterminada todas las aplicaciones existentes. Para evitar que esto ocurra cuando desarrolla aplicaciones que se comunican entre sí, debe marcar las aplicaciones como socios. Al implementar una de las aplicaciones, sus partners no se eliminarán. Consulte Marcar aplicaciones como partners para obtener más información.