GUI

From Yan-server-AMD1G

Jump to: navigation, search

GUI is a wiki to share knowledge, development, and/or implementation of Open-Source Graphical User Interface in 8/16-bit Embedded System.

Contents

[edit] Objectives

A Graphics Engine is a collection of software libraries through which the user can device a Graphical User Interface (GUI) using a standard application programming interface (API). The Graphics Engine tells the application of the occurance of certain events (e.g. key press event/timeout event), and prompt the application to update the display screen accordingly. The Graphics Engine therefore needs to interact with the user applications and the operating system to get access to the system resources (e.g. display/keypad/mouse/memory).

A widely-known graphics engine used in Linux is the X Window System (X11). By programming with X11, user can develop GUI desktop programs. However, X11 is a large collection of libraries and cannot be used in embedded systems with limited resources (memory and processing power). Even open-source graphics engines that target for less resources (such as Nano-X/DirectFB) are still required to run on embedded Linux (i.e. high-grade embedded systems). There are few (if not none) open-source graphics engines that are developed for low-grade embedded system (8/16-bit).

This project aims to develop a small footprint GUI graphics engine and toolkit suitable for low-grade (8/16-bit) embedded systems. The graphics engine should follow the API of a suitable open-source GUI graphics library that is runnable on Linux desktop. This will have the advantage that applications developed on desktop Linux can be cross-compiled to the embedded system easily.

[edit] Benefits

  • More rapid and complex GUI development compared to existing approach: mwlike8
  • Portable to other platforms

[edit] Limitations

  • May need to upgrade our MCU if the resulted GUI graphics engine still require a considerable resources (i.e. memeory and processing power)


[edit] Architecture

  • See here for block diagram
  • Option 1: Applications directly interacting with Graphics Engine (e.g. DirectFB)
  • Option 2: Applications developed on toolkits (e.g. GTK-DFB) interacting with Graphics Engine [selected option]
  • Option 3: Applications in options 1 or 2 supported by window manager


[edit] Development Roadmap

  • Contains direction on developments


[edit] Equipment Requirements

[edit] Hardware

  • Dell Inspiron 1420 Notebook
    • 14.1 TFT display (1280x800)
    • Intel Core Duo 2.0GHz
    • 320GB Harddisk
    • 4GB RAM
    • 128MB graphics display
    • DVD-RW
    • Wifi
    • LAN RJ45
    • Modem
    • Bluetooth
    • IEEE 1394 x1
    • USB x4
    • SD/MMC-MS/PRO reader
    • Microphone
    • Speaker
    • Keyboard
    • Touchpad
  • USB-COM Cable (Z-Tek ZE400)
  • Logitech E3500 Webcam
  • Golden Sample
    • Power supply
    • Power cord
    • Ethernet card with flat cable
    • Laser driver test kit
    • Benchtop v0.23.09 (with bootloader v1.6)
      • DB9-1x3 header cable
      • Topway 128x64 Graphics LCD
      • Rotary key
      • Master enable key with LED
      • I2C EEPROM
      • RS485
      • Thermistor
      • Shorted J18 jumper (P1.4) for input power
    • Rackmount v0.06.00 (with bootloader v1.6)
      • DB9-2x5 header cable
      • Topway 2x16 Character LCD
      • Rotary key
      • I2C EEPROM
      • RS485
      • Thermistor

[edit] Images

  • Front View 1

Image:Vietnam_golden_sample_0.jpg

  • Front View 2

Image:Vietnam_golden_sample_1.jpg

  • Top View

Image:Vietnam_golden_sample_2.jpg

  • Rear View

Image:Vietnam_golden_sample_3.jpg

[edit] Software

  • Windows Vista Home Basic
    • Firefox
    • AVG Antivirus
    • Skype
  • Ubuntu 8.04
    • Webmin
    • Startup manager
    • ssh and remote desktop (vncserver) enabled
    • Inkscape
    • Skype
    • aMSN
    • Adobe reader
    • JAVA JDK
    • Eclipse
    • Cutecom
    • pic30-elf compiler
    • directFB
  • Demo firmware for dsPic board
  • dsPicProgrammer


[edit] Drivers

[edit] LCD Modules

[edit] Video Chips(NTSC, PAL TVs)

[edit] Keypad

  • Number of keys

[edit] Mouse

  • To be added

[edit] Touch Screen

  • To be added


[edit] Task Scheduler


[edit] Graphics Engines

[edit] Qtopia Core (formerly Qt/Embedded)

  • Developed by Trolltech
  • Open Source (GNU General Public License v2.0) for GPLed products
  • Need to obtain a commercial license for non-GPLed products
  • Requirements
    • Compressed: 1.7 - 4.1 MB
    • Uncompressed: 3.6 - 9.0 MB

[edit] MiniGUI

  • Developed by Feynman Software
  • Open Source (GNU General Public License) for GPL products
  • Need to obtain a commercial license for non-GPLed products

[edit] PicoGUI

  • Started by Micah. Development stopped in 2003.
  • Open Source (GNU Lesser General Public License) for GPL products
  • Flash Requirements
    • 100-400kB

[edit] C/PEG

  • Developed by Quadros Systems
  • Obtain license at purchase
  • Flash Requirements
    • Less than 60-100kB

[edit] Nano-X (formerly Microwindows)

  • Started by Greg Haerr
  • Latest release 0.91 in 2005
  • Mozilla Code Licensing (MPL) or GNU General Public License (GPL)
  • Flash Requirements
    • Less than 64kB

[edit] DirectFB

  • Started by Convergence GmbH, now managed by directfb.org
  • Ongoing development
  • GNU Lesser General Public License (LGPL)
  • Flash Requirement
    • Small memory Footprint

[edit] uC/GUI

  • Developed by Micricum
  • Royalty-free
  • Need to obtain an 'Object Code Distribution License' per type of product sold for a profit.
  • Flash Requirements
    • Without Window Manager
      • ROM: 10-25kB
      • RAM: 100b (suggested 500b)
    • With Window Manager
      • ROM: 30-60kB
      • RAM: 2-6kB (suggested 1200b)

[edit] picoTK

  • Developed by Thomas Gallenkamp. Development stopped since 2000.
  • Open Source (GNU General Public License v2.0) for GPLed products
  • Flash Requirements
    • Small footprint

[edit] mwlike8

  • A very small footprint implementation following Nano-X.
  • No window graphics supported. Only handle ascii text and bitmaps.
  • Handle input events of push button and rotary key.

[edit] Nano-DirectFB

  • A very small footprint implementation following DirectFB.
  • No window graphics supported. Only handle ascii text and bitmaps.
  • Handle input events of push button and rotary key.


[edit] Graphics Toolkit

[edit] tnw2000 (formerly TinyWidget)

  • Work with Nano-X
  • TinyWidget started in 2001 and development stopped in 2003
  • tnw2000 continue the development
  • Latest revision h100 in Oct 2007
  • tndesigner available for rapid GUI development

[edit] wxWidgets

  • Work with Nano-X, DirectFB, etc.
  • wxWidgets code for Nano-X is 70% complete
  • Emulator and Designer available, but supports C++ code only

[edit] NanoGTK

  • Work with Nano-X
  • No source code, pre-complied libraries only
  • NanoGTK libraries have to be downloaded to the platform (desktop/embedded system)
  • Developed by EmSoft
  • Reference article

[edit] GTK-X11

[edit] GTK-DFB

[edit] Java SWT


[edit] Window Manager

  • A middleware between the graphics engine and the application
  • Control the look-and-feel of all the windows
    • window caption
    • fonts in title text
    • position of windows (e.g. full-screen, partial screen, minimize)
              +--------------------------------+
              |                                |
              |                                |
 lcd     ---> |                position -> +---|----+ <- User cannot
 display      |                governed    | He|llo |    see this side
 area         |                by window   | Wo|rld |    of window
              |                manager     +---|----+
              |                                |
              |                                |
              +--------------------------------+


[edit] Application Framework

[edit] Fonts


[edit] Graphics

Personal tools