Paso 6: Núcleo y Middleware - MCU ARM CORTEX M3
API de gráficos de alto nivel
Nuestro objetivo es implementar una tarjeta de gráficos mediante el FPGA de 3 SDMONexys. El microcontrolador STM32 será la ejecuta el sistema operativo y enviar los comandos a la FPGA. Los comandos son enviados a través de un autobús asegurando la comunicación de dos de las tarjetas usando el periférico de la FSMC. Para facilitar este proceso, hemos creado primitivas, estructuras y macros. Estas tres utilidades además de una documentación DOXYGEN ayudan al usuario a controlar fácilmente la tarjeta gráfica. Es la misma idea en cuanto a las bibliotecas STM.
Macros
La configuración de un sistema requiere un trabajo realmente duro de la investigación en los diferentes archivos de documentación y fuente disponibles. Por supuesto las funciones de los archivos de origen pueden ser modificadas directamente por el usuario, pero debemos evitar. Cualquier modificación puede causar una disfunción en cualquier programa anterior utilizando estos archivos de origen y escrito por otro usuario. Para evitar todos estos riesgos, hemos añadido en un archivo (macro) la información que necesitan modificación para que el programa funcione.
Hay dos categorías principales para las macros:
- Macros de configuración:
Estas macros dan al usuario la capacidad de modificar los periféricos diferentes para utilizar durante la comunicación. Haciendo esto, no hay que cambiar algo en el archivo de origen. Por ejemplo, esta macro puede configurar totalmente la duración de los ciclos de la FSMC.
- Definir las especificaciones técnicas de macros:
El principal objetivo de esta macro es indicar la especificación de nuestro sistema, como el tamaño de la pantalla, las direcciones iniciales de los planos y las direcciones de la FSMC. Estas garantías de macros una API que puede utilizan en cualquier lugar. Podemos cambiar por ejemplo una pantalla más grande solo modificando la constante correcta.
La documentación Doxygen incluye todas las explicaciones necesarias para poder utilizar las macros.
Estructuras
Con la misma idea que los controladores para el STM32, todas las estructuras creadas para esta API están diseñadas para facilitar el uso de los primitivos y el almacenamiento de datos. Es importante por ejemplo tener en cuenta en que dirección del RAM una imagen ha sido almacenada. De hecho, la dirección de una imagen puede posiblemente cambie en el FPGA después de una operación como la Bit Blit por ejemplo. Si la dirección original no se almacena en algún sitio, el usuario perderá la imagen.
- Estructura de la imagen:
Se utiliza para cada imagen creada. El usuario identifica su nombre, el tamaño y su dirección. Todo lo que tenemos que hacer después de esto es que esta estructura como un parámetro en un movimiento de tipo primitivo en orden para la operación sobre la imagen para tomar lugar. La actualización de estos parámetros se incluye en las operaciones.
- Estructura de color
Es muy útil para las funciones de uso de los colores. Esta estructura se aplica para evitar dar los 3 colores primarios y el nivel de transparencia alfa en cada uso.
- Estructura de pantalla plano
El GPU puede manejar hasta 4 planos. Por esta razón hemos creado 4 plano tipo estructura para cada uno de los planos de pantalla de 4. Declaramos la referencia en una variable global. No es necesario crear un nuevo plano de la pantalla en este FPGA, porque 4 es el número máximo permitido. Esta estructura contiene todos los datos necesarios para configurar una capa: anchura, longitud, dirección de la RAM, desplazamiento ovec X y sobre Y.
- Estructura ConfPlane
Esta es la estructura de la configuración de 4 capas. Existe sólo un tipo de esta estructura declarada en el programa, con una referencia como una variable global. Ayuda al usuario a elegir que la capa para activar, para activar la transparencia o no, para poner en marcha un procedimiento de prueba para la comunicación y activar la pantalla 4 planos o
Estas 4 estructuras no se crean para ser directamente modificados. Altamente se recomienda utilizar las funciones asociadas de cada estructura para inicializar o modificarlas. De hecho, los datos escritos en la estructura de estos son solo el reflejo de lo que está dentro de la tarjeta FPGA. Cambiar los parámetros en el STM es inútil. Por ejemplo, si queremos modificar manualmente el tamaño de una capa, no se cambió en la GPU porque el comando no se enviará. Las funciones asociadas también ayuda a establecer la comunicación entre ambos de las tarjetas.
Controladores
Esta capa se utiliza para configurar los diferentes periféricos utilizados para la comunicación entre las dos tarjetas. Por ejemplo, podemos utilizarlo para inicializar la FSMC La FSMC se inicializa de forma que el mismo comportamiento como se describe en la sección 2.b. También se inicializa una GPIO para desempeñar el papel de la señal de ocupado en la interfaz MCU.
También encontramos en esta capa las funciones originales utilizadas para leer y escribir en la dirección asociada de la clavija conectada a la FPGA. Los parámetros de estas funciones son la dirección del registro a modificar en la FPGA y los datos a escribir en ese registro.
Las funciones asociadas para estos controladores no están hechas para ser utilizado directamente. Ya se utilizan en la capa de servicio. Sin embargo, el usuario puede en algunos casos acceder a estas funciones para cambiar la configuración del software.
Funciones de servicio:
Las funciones de servicio son las principales funciones de nuestra tarjeta gráfica. En esta capa, podemos encontrar todas las funciones necesarias para la ejecución de las diferentes operaciones de la GPU.
Los detalles de estas funciones estarán disponibles en la sección de documentación doxygen. Sólo debemos aclarar que es posible colocar una capa excesiva para cumplir con operaciones más complejas mediante las funciones originales escritas en la capa de servicio. Por ejemplo es posible crear una función para poder manejar una animación. Esta función se utilizará la operación de movimiento para ello.
La API de audio nivel alta y sistema operativo de tiempo Real no se aplican todavía.