Compartir a través de


Comunicación con una aplicación de alto nivel

Importante

Esta es la documentación de Azure Sphere (heredado). Azure Sphere (heredado) se retira el 27 de septiembre de 2027 y los usuarios deben migrar a Azure Sphere (integrado) en este momento. Use el selector de versiones situado encima de la TOC para ver la documentación de Azure Sphere (integrado).

Las aplicaciones con respuesta en tiempo real (RTApp) se comunican con las aplicaciones de alto nivel a través de un búfer en anillo que está asignado a una región de memoria compartida.

Los ejemplos de IntercoreComms muestran cómo las aplicaciones RTApp pueden comunicarse con aplicaciones de alto nivel. Use el ejemplo de IntercoreComms_RTApp_MT3620_BareMetal como punto de partida para desarrollar su propio código de comunicación de RTApp. Consulte Comunicación con una aplicación con respuesta en tiempo real para obtener información sobre el código necesario en una aplicación de alto nivel.

Importante

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

Operación

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

  • Leer la información de configuración del buzón que comparte con el núcleo de alto nivel en el 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 en anillo a través de tres mensajes en el buzón que comparten los núcleos de alto nivel y en tiempo real. Cada mensaje contiene un comando y los datos. Los dos primeros mensajes proporcionan las direcciones base de los búferes de lectura y escritura que usarán las aplicaciones para comunicarse; el tercer mensaje indica que la transmisión de la información de configuración de los búferes ha terminado.

Valor del comando Data
0xba5e0001 Descriptor del búfer de salida (escritura) para la aplicación con respuesta en tiempo real
0xba5e0002 Descriptor del búfer de entrada (lectura) para la aplicación con respuesta en tiempo real
0xba5e0003 Fin de la configuración

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

Consulte el ejemplo IntercoreComms_RTApp_MT3620_BareMetal para obtener más información sobre cómo usar el buzón.

Lectura de los búferes y escritura en estos

Tras la inicialización, la RTApp puede leer la información de los búferes y escribir en estos. Dado que la comunicación se implementa con un búfer en anillo, las lecturas y escrituras pueden encapsularse en torno al principio del búfer.

Los mensajes que se escriben en el búfer o se leen en él tienen la siguiente estructura:

Encabezado del mensaje Contenido del mensaje
Id. de componente Reservado
16 bytes 4 Bytes
Data
0 - 1 KB
  • El primer campo del encabezado del mensaje (16 bytes) contiene el identificador 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 los bytes en cada uno de los tres primeros segmentos del identificador de componente está en formato little-endian (primero el byte menos significativo). El orden de los bytes en los dos segmentos restantes debe ser big-endian.

    Si la RTApp responde a un mensaje de la aplicación de alto nivel, solo tiene que copiar el identificador de componente del 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 en 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 utiliza el buzón compartido para notificar a la aplicación de alto nivel que se ha recibido o transmitido un mensaje.

Configuración del manifiesto de aplicación

Los manifiestos de aplicación para la aplicación de alto nivel y la RTApp deben enumerar los identificadores de los componentes de las aplicaciones con las que se comunican. Para configurar estas opciones, agregue la funcionalidad AllowedApplicationConnections al manifiesto de aplicación y, a continuación, agregue cada identificador de componente a la funcionalidad. El manifiesto de aplicación de Azure Sphere tiene más detalles. Este es un extracto de un manifiesto de aplicación que configura una RTApp para que se comunique con otras aplicaciones.

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

Aplicaciones asociadas

Cuando se carga una aplicación en el dispositivo de Azure Sphere, las herramientas de implementación de Azure Sphere eliminan de forma predeterminada todas las aplicaciones existentes. Para evitar que esto suceda al desarrollar aplicaciones que se comunican entre sí, debe marcar las aplicaciones como asociados. Al implementar una de las aplicaciones, sus asociados no se eliminarán. Consulte Marcado de aplicaciones como asociadas para más información.