Graphic User Interface
In most embedded designs, real time visualization is needed. Graphic information can be displayed to allow users to know the system state or can be used to manage streaming visualization in a deterministic way.
Requirements:
- Graphic card with Framebuffer support
- Bios with Vesa implementation
- Support for 640x480 (truecolor) graphic mode in x86.
- (Optional) Support for serial and ps2 mouse with protocols MS and PS2.
Microwindows project and TinyGL has been integrated to provide both a graphic windows manager and a OpenGL software engine to display 2D and 3D graphics.
MicroWindows
Microwindows is an open source project aimed at producing desktop-quality graphics functionality for small devices. The architecture allows for ease in adding different display, mouse, touchscreen and keyboard devices. Designing another graphics API would steepen the learning curve. For this reason MIcrowindows implements two popular graphics programming interfaces: The Microsoft Windows Win32/WinCE graphics display interface (GDI), and an Xlib-like interface, known as Nano-X, used at the lowest level by all Linux X11 widget sets.

Microwindows rungs in 50-250k of memory.This is primarily the result of using a single routine for each of the drawing functions in the engine layer. Microwindows ia work in progress, and new features are being added regularly. I invite you to check out the web site at http://microwindows.org. The microwindows project is licensed under the MPL (Netscape license). wich means that it can be used with designs under non-disclosure, without having to release proprietary source code.
Nowadays, sa-RTL provides Posix-IO drivers to Microwindows to get mouse information or keyboard, and also provides 4 basic primitives to send Microwindows Framebuffer information which must be initialized by sa-RTL. (GetFrameBufferAddr,GetBitsPerPixel,GetXResolution,GetYResolution).
TinyGL
TinyGL is intended to be a very small implementation of a subset of OpenGL((http://www.opengl.org)for embedded systems or games. It is a software only implementation. Only the main OpenGL calls are implemented. The main strength of TinyGL is that is fast and simple because it has not to be exactly compatible with OpenGL. IN particular, the texture mapping and the geometrical transformations are very fast. TinyGL is a lot faster than Mesa or the software Solaris OpenWin OpenGL implementation for the VReng Virtual Reality engine for example.
The main features of TinyGL are:
- Header compatible with OpenGL (the headers are adapted from the very good Mesa by Brian Paul et al.)
- Zlib-like license for easy integration in commercial designs.
- GLX like API (NGLX).
- OpenGL like lightening.
- Limited support of OpenGL 1.1 arrays.
- Complete OpenGL selection mode handling for object picking.
- 16 bit Z buffer. 16 bit RGB display. High speed dithering to paletted 8 bits if needed.
- Fast Gouraud shadding optimized for 16 bit RGB.
- Fast texture mapping capabilities, with perspective correction and texture objects.
- Very small: compiled code size of about 40 Kb on x86.
- C sources for GCC on 32/64 bit architectures.

Ocera (Open Components for Embedded Real-Time Applications, is an European project, based on Open Source, which provides an integrated execution environment for embedded real-time applications. Ocera combines the use of two kernels, Linux and RTLinux-GPL to provide support for critical tasks and soft real-time applications.