Link to Home page Main Banner


Downloads

Local Links

Help

Drivers API

Demos

  

What's new

May 30, 2000
FLTK for Microwindows ( RTEMS )
fltk_pre4-rtems.patch
NOTE: Keyboard handling does not work.

May 27, 2000
RTEMS 4.5.0-beta3 patch for Microwindows 0.88pre8.
rtems-4.5.0-beta3-microwin-0.88.patch
NOTE: This patch requires a "bootstrap" of the RTEMS code.

May 30, 2000
Microwindows 0.88pre8 patch ( Probably applied to newer versions of MicroWindows ).
microwin-0.88pre8-rtems.patch
This version adds support for SVGALIB for higher colors resolution.

Introduction

This page describes the porting of Microwindows/Nano-X to RTEMS. Microwindows is a GUI framework with a very small footprint, making it very compeling for embedded applications. For more information about Microwindows/Nano-X, please visit the Microwindows project page.

The porting to RTEMS is based on the PC386 BSP. The drivers assume a bare PC as hardware. It does not requires any BIOS functionality.

The pre-requisites to run the demos available are:

  • A bare PC,
  • Standard VGA/SVGA video card
  • Standard PC keyboard
  • PS/2 or Serial mouse ( COM1 default ).

RTEMS Kernel changes

In order to get MicroWindows ported, some basic functionality has been added to RTEMS:
  • Major rework of the "/dev/console" driver.
       + Added termios support for for the input ( keyboard ). 
    
    + Added ioctls() to support modes similar to Linux( XLATE, RAW, MEDIUMRAW ).
    + Keyboard mapping and handling of the keyboard's leds.
  • Added Micro FrameBuffer driver ( "/dev/fb0" ) for bare VGA controller ( 16 colors ).
  • Added PS/2 and Serial mouse support for PC386 BSP.
  • Added "/dev/ttyS1" & "/dev/ttyS2" support for the i386 BSPs.
  • Added generic Micro FrameBuffer interface for MicroWindows.
  • Added Uniform Input Device interface for MicroWindows.

Driver interface

In order to make eaiser the port of the drivers to new BSPs, interfaces have been defined to talk to MicroWindows.

Micro FrameBuffer (uFB ) for MicroWindows -- API specification for Video Controllers based on Linux FrameBuffer interface geared to embedded systems.
Micro Framebuffer detailed description.

Micro Input Device Interface for MicroWindows -- API specification for input devices such as Mouse, Kbd and Touch-Screen to interface with MicroWindows when running under some RTOS/embedded system.
Uniform Input Devices detailed description.

Single Threaded

The Microwindows framework is single threaded. For more details check the Microwindows documentation. This means that all GUI related stuff must be done from the "main thread". This is pretty much how windows works, and it is beyond the scope of this page.

PC386 Specific

This port is PC386 specific. It uses a PC as hardware. It should not be difficult to port the drivers to others platforms using the API specified above.

Microwindows Demo - Using GRUB 0.5

If you have a GRUB bootable "floppy disk", you can check this out, downloading the demos. There are two demos:

  + for PS/2 mouse

  + for serial mouse on COM1

Unzip the archive and copy the file to the GRUB bootable disk. Start your RTEMS system and enjoy it :-).

If you need more information about GRUB (GRand Unified Bootloader), check its homepage at http://www.gnu.org/software/grub/

Drivers

As of this release, all drivers have been changed to use the standard Micro Frame Buffer ( uFB ) interface, and the Uniform Input Devices ( UID ) interface. A directory called rtems holds all stuff related to the RTEMS porting. See Drivers API for details.

RTEMS Init Task

RTEMS applications differ from PC based ones in a sense that they require a configuration to be provided and an initial task to be created to carry on the initialization. The file rtems_init.c is responsible for setting all these things up. The initial task does all initialization and finally calls a "main" equivalent entry point called rtems_main(). All modules that have a main() routine must provide a rtems_main() instead when used with RTEMS.

The header file rtemscfg.h defines the RTEMS configuration.
The header file net_cfg.h defines the network configuration. The network stuff is not used at this point. It has been left there, just in case.

Please check RTEMS documentation about setting a RTEMS box.

Installing and Building

It is assumed that you are familiar enough with RTEMS and Microwindows, and have a development environment that works with both systems. If you are not, it is encouraged to play around with each one these packages first, separately, before you start mixing them together.

Use the "readme.rtems" that comes with MicroWindows distribution to properly configure the package.
It is located: $(MICROWIN)/src/rtems/readme.rtems.

See HELP option on the menu for instructions on how to setup and build the system.

Packages needed:

  • RTEMS version 4.5.0-beta3c or higher
  • Microwindows version 0.88 or higher.
  • SVGALib for RTEMS ( optional ).

Feedback

If you have any comment or want to help with this porting, please send me one e-mail: rdasilva@connecttel.com

Credits

I'd like to thank the folks from the Microwindows' list for their support when things did not go the way I expected. :-).

Specially,

  • Greg Haerr --- e-mail: gregh@CenturySoftware.com
  • Silverio Diquigiovanni --- e-mail: silverio.di@qem.it

TODO


   + Merge keyboard handling and mouse functionality to easy porting of
applications based on SVGA library to RTEMS.



Visitors:



Last modified May 27, 2000
Copyright ©1999-2000 Rosimildo da Silva. All rights reserved.


   e-mail me