• No se han encontrado resultados

4. COMPONENTES DE UN SISTEMA EMBEBIDO

4.6. INTERFACES GRÁFICAS DE USUARIO GUI Y NAVEGADORES WEB

Cuando instalamos Linux en un computador de escritorio, es normal querer instalar unos pocos componentes estándares para soporte gráfico. Por ejemplo, nos gustaría usar el sistema X Window (XFree86) como servidor de gráficos (con los drivers Linux asociados para controlar el hardware),

GNOME o KDE con el entorno de ventanas, y uno de los navegadores más completos tales como Netscape, Opera o Mozilla.

Pero el stack gráfico típico de Linux para PCs de escritorio no está bien adaptado para aplicaciones

Linux embebidas. Los dispositivos embebidos frecuentemente tienen altas restricciones de recursos y no poseen suficiente espacio para el almacenamiento ni en memoria como para soportar un software gráfico para escritorio. Por ejemplo, los dispositivos embebidos pueden fácilmente tener de 2 a 16 MB de disco flash y de 4 a 32 MB de memoria RAM. Pero los componentes gráficos típicos de

escritorio son demasiado grandes.

Sistema X Window: 5 MB RAM, 16 MB en disco

GNOME: 14 MB RAM, 95 MB en disco

KDE: 11 MB RAM, 96 MB en disco

Mozilla: 12 MB RAM, 26 MB en disco

Para satisfacer las demandas del mercado Linux embebido que emerge rápidamente, se han lanzado muchos proyectos para el soporte de gráficos. Estos proyectos han sido pensados para una amplia gama de aplicaciones, entre las cuales podemos mencionar: PDAs, teléfonos celulares,

instrumentos médicos, automatización industrial y displays en las aerolíneas comerciales.

A continuación mostraremos una guía de referencia de proyectos que desarrollan interfaces gráficas de usuario. Para mayor información consulte [58].

Dillo: Es un navegador web multiplataforma caracterizado por ser muy pequeño (menos de 300 KB)

y rápido, escrito completamente en C y construido con base en las librerías GTK+. Su alta eficiencia y mínima dependencia de librerías hace que este sea bastante adecuado para aplicaciones embebidas. Dillo puede ser equipado con un servidor web embebido para eliminar completamente la necesidad de un administrador de ventanas en un dispositivo embebido.

DirectFB: Es una pequeña librería que provee a los desarrolladores con aceleración gráfica de

hardware, manejo y abstracción de dispositivos de entrada, sistema de ventanas integrado con soporte para ventanas translúcidas y visualización de múltiples capas en la parte superior del dispositivo framebuffer de Linux. Esta es una capa completa de abstracción de hardware con

funciones en software para cada operación gráfica que no sea soportada por el hardware subyacente.

Proyecto The Familiar: Este es un proyecto Linux para PDAs, el cual es un vástago de las

actividades en handhelds.org, ha recolectado todos los componentes clave de una plataforma de cómputo PDA basada en Linux. La distribución The Familiar incluye actualmente un administrador de ventanas basado en “cajas negras”, aplicaciones PIM basadas en Fltk+ de Agenda Computing, una implementación de Python embebido, utilidades para configuración de sistema y backup, cliente y

servidor OpenSSH, y un kernel ARM basado en Debian.

FBUI: FBUI es una GUI muy pequeña que reside dentro del kernel Linux. Los conceptos claves de

FBUI es que primero es pequeño; segundo es austero; tercero es sólo otro driver; y cuarto que los drivers pertenecen al kernel, no al espacio de usuario.

Proyecto GGI: El proyecto General Graphics Interface está dedicado al desarrollo de sistemas API

multimedia de plataforma cruzada caracterizados por ser rápidos, estable y de código abierto. Diseñado para sistemas embebidos, GGI es rápido, limpio, abstracto, dinámicamente modular y altamente optimizable.

computadores palmtop/handheld que ejecutan el sistema operativo GNU/Linux. GPE usa el sistema

X Window, y el kit de herramientas GTK+.

GtkFB: Comenzando con la versión 2.0, GTK+ soportará renderizar directamente en el framebuffer

de Linux en vez de usar el sistema X Window. Esto es bueno para sistemas embebidos y dispositivos con recursos limitados, debido a que se elimina la sobrecarga de un X Server. Mientras

todavía toma ventaja de la potencia de GTK+ y la gran cantidad de programas existentes.

Soporte PDA en handhelds.org: handhelds.org está dirigida a quienes quieren crear la

implementación de una PDA Linux personalizada. En este año, Compaq creó el programa Open Handheld, una iniciativa diseñada para estimular la innovación e investigación en dispositivos

portátiles que resultó del proyecto de la pocket Itsy. Para soportar esta iniciativa, Compaq creó a

handhelds.org para ser un vendedor neutral dedicado al desarrollo de código abierto para portátiles. La PDA iPAQ de Compaq es usada como plataforma base de todas estas actividades y, consecuentemente, una iPAQ Linux está disponible como software de código abierto disponible gratuitamente.

Matchbox: Un administrador de ventanas pequeño y aplicaciones asociadas, diseñado

específicamente para dispositivos habilitados con X11 y que poseen recursos limitados tales como computadores portátiles, PDAs, y dispositivos de consumo donde el tamaño del display, el

almacenamiento, el ancho de banda de CPU, y los mecanismos de entrada están limitados. Matchbox incluye un administrador de ventanas, un panel, un escritorio, una librería de utilidades compartidas, y varias aplicaciones de panel pequeño.

Microwindows: Es un proyecto de código abierto que brinda la características de modernos entornos

de ventaneado gráfico para dispositivos y plataformas pequeñas. Las aplicaciones Microwindows pueden ser construidas y probadas en el escritorio Linux, al igual que en el dispositivo.

MiniGUI: Es un proyecto GPL de código abierto para crear una librería que soporta sistemas de

ventanas pequeños para sistemas embebidos y dispositivos, el cual ofrece las funciones equivalentes para administrar ventanas de la API Win32.

NxZilla o NanoZilla: Es un conjunto de librerías que permite usar Mozilla con el servidor NanoX

OpenGL ES: Es un estándar de gráficos embebido liviano y gratuito que provee perfiles API gráficos

para un amplio rango de sistemas embebidos y dispositivos, incluyendo dispositivos portátiles inalámbricos, displays para automóviles y aviones, y dispositivos multimedia tales como TVs

digitales, decodificadores, y consolas de juego.

OpenGUI: Es una librería de ventanas y gráficos basado en C/C++ de alto nivel construida bajo un

kernel gráfico en ensamblador de bajo nivel para x86. Se encuentra bajo la licencia LGPL. OpenGUI provee primitivas de dibujo 2D y una API de ventanas controlada por eventos para un fácil desarrollo de aplicaciones.

PicoGUI: Es una GUI cliente/servidor pequeña y portable diseñada para trabajar en muchos tipos de

hardware incluyendo computadores portátiles. Como el sistema X Window, este tiene una arquitectura cliente/servidor flexible. Y a diferencia de X Window, las fuentes, mapas de bits, controles, y cualquier cosa que la aplicación necesite son construidos directamente en el servidor. Esto sacrifica un pequeño decrecimiento en la flexibilidad por un incremento en velocidad y una gran disminución en tamaño.

Qt/Embedded: Provee un stack gráfico completo, desde el hardware a un kit de herramientas GUI

completo. Aunque la API es idéntica a los productos populares Qt/X11 y Qt/Windows, Qt/Embedded no está basado en X11 y además esta tiene requerimientos de memoria sustancialmente reducidos. Las demandas de memoria pueden ser ajustados a un rango entre 800 KB y 3 MB en ROM. Qt/Embedded está disponible como software de código abierto, bajo la licencia GPL, o puede ser licenciado en otros términos desde su creador, Trolltech.

Capa DirectMedia Simple o SDL: Es una librería/API de código abierto para el desarrollo multimedia

de plataforma cruzada diseñada para proveer rápido acceso al framebuffer de gráficos y dispositivo

de audio. SDL es actualmente aplicado a varias implementaciones de Linux Embebido tales como Microwindows.

Tiny-X: Es una pequeña implementación del servidor X Window para sistemas embebidos. Este fue

desarrollado por Keith Packard del equipo Core de XFree86, auspiciado por SuSE. El objetivo fue crear algo que pudiera trabajar bien en un espacio de memoria pequeño y que fuera robusto en situaciones de falta de memoria. Típicamente los servidores X basados en Tiny-X pueden ocupar menos de 1 MB en CPUs x86.

ViewML: Es un navegador web, libre y de código abierto, dirigido específicamente a la plataforma

Linux embebido. Actualmente ViewML junto con su interfaz requiere 2.1 MB de RAM, con una imagen en disco de sólo 760 KB.

WMLBrowser: Es un proyecto, auspiciado por 5NINE para desarrollar un navegador que permita a

cualquier dispositivo inalámbrico tener funcionalidad WAP. Este debe soportar múltiples stacks de

protocolos (WAP 1.2.1, http), en diferentes entornos, usando dispositivos de entrada diferentes. El navegador trabajará con gráficos framebuffer.

Para la implementación de µClinux, se va a tomar el bootloader dado por el fabricante, el cual se explicará en el capítulo 6.