Autor: José Luis Mantecón Crespo Librería gráfica de bajo nivel para el sistema operativo de tiempo real MaRTE OS Autor: José Luis Mantecón Crespo
Estructura del proyecto Introducción Librería gráfica SVGALIB Librería gráfica SVGALIB en MaRTE OS Librería de representación de imágenes XPM Conclusiones Líneas futuras Programas de demostración
Introducción Sistemas empotrados de tiempo real Uno o varios computadores, dispositivos hardware de entrada/entrada salida y software de propósito especial Se considera empotrado si es un componente integral de un sistema mayor, se usa para controlar, monitorizar o procesar la información de ese sistema y usa dispositivos hardware especiales. Fuerte interacción con el entorno cambia con el tiempo sistema controla o reacciona simultáneamente Software concurrente Funcionamiento correcto Resultados del cálculo Instante en el que se generan
Introducción Dispositivos de entrada/salida Dispositivos de vídeo Subsistemas electrónicos Adquisición de información por el computador (dispositivos de entrada) Muestra de resultados de un proceso realizado por el computador al usuario (dispositivos de salida) ratones, teclados, impresoras, monitores,… conversores A/D, fotodetectores, sensores de presión, paneles de control,-… Dispositivos de vídeo Dispositivo de salida Controlador gráfico, memoria de vídeo, interfaz controlador-computador, monitor, interfaz controlador-monitor Drivers de manejo.
Introducción MaRTE OS Minimal Real-Time Operating System for Embedded Applications Subconjunto mínimo de POSIX.13 Desarrollo de aplicaciones en Ada y C En crecimiento (se está añadiendo nueva funcionalidad) Disponible bajo la licencia GPL (GNU) Entorno MaRTE OS
Introducción Objetivos del proyecto Principal Concretos Aportación a MaRTE OS de librería gráfica integrada en un driver de entrada/salida Concretos Control de una tarjeta gráfica Librería de dibujo básica Librería de imágenes fijas Programas de demostración Análisis temporal
Librería gráfica SVGALIB Historia de las tarjetas gráficas en los PCs MDA(80x25) CGA EGA VGA SVGA(1024x768) XGA,SXGA,UXGA(1600x1200) Sistema de vídeo Encargado de mostrar textos y gráficos en la pantalla Tarjeta gráfica (A/D,RAM,controlador), monitor, interfaz monitor-tarjeta
Librería gráfica SVGALIB librería gráfica de bajo nivel para linux Código libre basada en librería VGALIB 1.2 de Tommy Frandsen Varios programadores Funciones básicas para manejo de tarjeta Svga Varias tarjetas soportadas Estructura de SVGALIB
Librería gráfica SVGALIB SVGALIB: Funciones Modificación registros de tarjeta Test de tarjetagráfica Inicialización de tarjeta gráfica Elección modo de vídeo Elección de la página de memoria Comprobación de los modos disponibles Dirección de inicio de la memoria de vídeo Valores modo de vídeo (anchura, altura, profundidad de píxels,…) Funciones de aceleración gráfica Función de direccionamiento lineal de la memoria de vídeo Soporte ratón, teclado y joystick Soporte segundo plano
Librería gráfica SVGALIB Tarjeta S3TRIO64 Procesador gráfico de 64 bits Memoria de 1 Mbyte Conversor A/Dl integrado de 135 Mhz Modos VGA a partir de 256 colores Modos SVGA 800x600x32 y 1024x768x16 Refresco vertical de pantalla hasta 85 Hz Compatibilidad con VESA Compatibilidad familia TRIO64 Filtrado vertical Conexión PCI Esquema de S3TRIO64
Librería SVGALIB en MaRTE OS Introducción Arquitectura de la librería SVGALIB de MaRTE OS Especificación de la librería SVGALIB de MaRTE OS Desarrollo de la librería SVGALIB en MaRTE OS Funciones de edición de imagen
Librería SVGALIB en MaRTE OS Consideraciones previas a la adaptación de código Disponibilidad de código fuente (GPL) No hay seguridad de funcionamiento Existen dependencias con sistema operativo previo No se dispone de información de acompañamiento (manuales, tutoriales, …) Continua evolución de la librería original
Librería SVGALIB en MaRTE OS Arquitectura SVGALIB de MaRTE OS Funciones de inicio (elección modo, DAC, tarjeta, …) Funciones básicas Dibujo (color, píxel, línea) Edición de imagen (scroll, copiado, pegado) Funciones primitivas (píxel, recta, rectángulo, elipse, circunferencia, polilínea, polígono,texto y figuras rellenas Arquitectura en MaRTE OS
Librería SVGALIB en MaRTE OS Adaptación de SVGALIB a MaRTE OS Eliminación de dependencias (carencia de sistema de archivos y acceso a la BIOS) Nuevos tipos de datos para aumentar nivel de abstracción (punto, ...) Cambios en las operaciones de I/O y acceso al bus PCI Creación de funciones de inicialización Acceso directo a memoria de vídeo Utilización de memoria intermedia Creación de primitivas de dibujo Creación de funciones de edición de imagen Modificación del driver de tarjeta S3 TRIO64 Creación del manual de uso Tabla de tiempos de ejecución
Librería de representación de imágenes XPM Formato XPM Estructura de la librería XPM 1.0 para MaRTE OS Desarrollo de la librería XPM para MaRTE OS 1.0
Librería de representación de imágenes XPM Formato XPM Formato basado en ASCII Estructura en forma de array de cadenas de caracteres en lenguaje C Posibilidad de incorporar la imagen directamente al código Utilizado en sistemas X-Windows Imagen en XPM
Librería de representación de imágenes XPM Desarrollo librería XPM 1.0 para MaRTE OS Función para dibujo de una imagen completa Función para dibujo de una parte de una imagen Manual de uso Tabla de tiempos de ejecución
Conclusiones Dotación de librería gráfica básica Control de tarjeta S3 TRIO64 Programas de demostración Manual de uso de nuestra librería Tiempos de respuesta acotados Librería para dibujo de imágenes fijas
Lineas futuras Adaptación de los drivers de más tarjetas Creación de un driver para el estándar VESA Necesidad de acceder a la BIOS del sistema desde el modo protegido Mejora de tiempos de ejecución de la librería Creación de interfaz para puertos AGP Adaptación de otros formatos de imagen (BitMaP, JPG) Visor de imagen de vídeo Entorno de ventanas y driver para ratón