µC/GUI

μC/GUI is universal graphical software for embedded applications that provides an efficient processor and LCD controller-independent GUI to applications using a graphical LCD. Designed for single and multi-task environments, μC/GUI is adaptable to nearly any size physical or virtual display with an LCD controller and CPU, and is delivered with all source code.

μC/GUI is compatible with nearly all CPUs and, unlike other GUIs that require a C++ compiler, μC/GUI is written entirely in ANSI-C. Processors ranging from 8- to 32-bits run μC/GUI. 16-bit CPUs (or better) achieve optimal performance.

  • There are three types of basic package: Monochrome, gray scale or color. Each basic package provides support for:

    • 2D Graphics
    • Font support with basic fonts charset ISO 8859-1
    • Touch Screen support
  • The basic packages includes one seat of the bitmap converter tool.
  • Additional fonts can be added. Usage of an optional FontConverter tool is required. The FontConverter tool converts any TrueType Font into a C-file in the format used by C/GUI.
  • Optional touch-screen support contains a low-level driver to handle analog input (from two 8-bit or better A/D converter channels), debouncing, and touch screen calibration.
  • Written in ANSI C
  • The basic package includes multiple displays/layers support.

Applications

µC/GUI is used in a wide variety of industries:

  • Avionics
  • Medical Equipment/Devices
  • Data Communications Equipment
  • White Goods (Appliances)
  • Mobile Phones, PDAs, MIDs
  • Industrial Controls
  • Consumer Electronics
  • Automotive
Who should use this GUI? Developers who want to add a state of the art graphical user interface with or without touch-screen support, that want to save time on current and future embedded projects, and who want the best GUI written in C.
Supported LCD Controllers See complete list in LCD Driver Chart
Color resolution 1 to 32 bits per pixel
Display size Any

Small systems (no window manager) footprint

  • RAM: 100 bytes
  • Stack: 500 bytes
  • ROM: 10-25 kB (depending on the functionality used)
Big systems (including window manager and widgets) footprint
  • RAM: 2-6 kB (depending on number of windows required)
  • Stack: 1200 bytes
  • ROM: 30-60 kB (depending on the functionality used)
Number of widgets/controls 22
Execution models Single task system (superloop) Multitask system (any RTOS): • One task calling C/GUI • Multiple tasks calling C/GUI
Foreign Language Support All languages Unicode and UTF-8 encoding Arabic language support Text rendering with Shift-JIS (Japanese Industry Standard) encoding.
Pointer Input Devices Touch-screen, mouse, and keyboard support
Animation Animated GIF Sprites
Memory Partitions RAM Management Yes

Optional Add-On Modules

Optional add-on modules allow for memory footprint and feature customization based on the application. Modules include:

Memory Devices Prevents the display from flickering when using drawing operations of overlapping items.
Antialiasing Smoothes curves and diagonal lines by “blending” the background color with that of the foreground.
Window Manager Allows for creation and handling of different windows of any size.

GUIBuilder tool, enabling effortless creation of widgets, is provided
Virtual Screen A display area greater than the physical size of the display, requiring additional video memory. Allows for instantaneous switching between screens, even on slow CPUs.
Virtual Network Computing – VNC VNC is a client-server system based on a simple display protocol that allows users to view a computing 'desktop' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide-variety of machine architectures.

Simulator

μC/GUI includes a suite of development tools to facilitate project development. μC/GUI includes a simulation environment under MSVC++ to write and test the entire user interface on the PC. All routines are identical to the embedded application, regardless of the CPU or LCD used, making debugging and development easy and convenient. Generating screen shots of the LCD that can be inserted into documentation is a snap.

Memory Requirements

The memory requirements of the GUI components have been measured on a system as follows:

ARM7, IAR Embedded workbench V4.42A, Thumb mode, Size optimization

Component ROM RAM Description
Window manager + 6.2 kB + 2.5 kB Additional memory requirementsof a “Hello World” applicationwhen using the window manager.The configured GUI_ALLOC_SIZEor the measurement was 2000.
Memory devices + 4.7 kB + 7 kB Additional memory requirementsof a “Hello World” applicationwhen using memory devices. Theconfigured GUI_ALLOC_SIZE formeasurement was 8000.
Antialiasing + 4.5 kB + 2 * LCD_XSIZ20 Bytes Additional memory requirementsor the antialiasing software.
Driver + 2–8 kB 20 Bytes Memory requirements the driver depend on configured driver anddata cache is used or With a datacache the driver requires moreRAM. For details please refer thedriver documentation.
Multilayer + 2–8 kB   If working with a multi or a multi-display configuration, additionalmemory for each additional layer isequired, because each layerequires its own driver.
Core 5.2 kB 80 Bytes Memory requirements typical“Hello world” application withoutusing additional software items.
Core / JPEG 12 kB 38 kB Basic routines for drawing JPEGiles.
Core / GIF 3.3 kB 17 kB Basic routines for drawing GIFiles.
Core / Sprites 4.7 kB 16 Bytes Routines for drawing sprites andcursors.
Widgets 4.5 kB   The approximate basic ROM requirement for widgetsdepending on individual coreunctions used by widgets.
WIDGET / BUTTON ROM 40 Bytes See Note 1
WIDGET /CHECKBOX 0.4 kB 52 Bytes See Note 1
WIDGET /DROPDOWN 1 kB 52 Bytes See Note 1
WIDGET / EDIT 1.8 kB 28 Bytes See Note 1
WIDGET /FRAMEWIN 2.2 kB 12 Bytes See Note 1
WIDGET / GRAPH 2.2 kB 48 Bytes See Note 1
WIDGET /GRAPH_DATA_XY 2.9 kB   See Note 1
WIDGET /GRAPH_DATA_YT 0.7 kB   See Note 1
WIDGET / HEADER 0.6 kB 32 Bytes See Note 1
WIDGET / LISTBOX 2.8 kB 56 Bytes See Note 1
WIDGET /LISTVIEW 3.7 kB 44 Bytes See Note 1
WIDGET / MENU 3.6 kB 52 Bytes See Note 1
WIDGET /MULTIEDIT 5.7 kB 16 Bytes See Note 1
WIDGET /MULTIPAGE 7.1 kB 32 Bytes See Note 1
WIDGET /PROGBAR 3.9 kB 20 Bytes See Note 1
WIDGET /RADIOBUTTON 1.3 kB 32 Bytes See Note 1
Widget/SCROLLBAR 1.4 kB 14 Bytes See Note 1
WIDGET / SLIDER 2 kB 16 Bytes See Note 1
WIDGET / TEXT 1.3 kB 16 Bytes See Note 1

NOTE: The listed memory requirements of the widgets contain the basic routines required for creating and drawing the widget. Depending on the specific widget, there are several additional functions available, which are not listed in the table.

Stack Requirements

Basic stack requirement: 600 bytes (approximately) With window manager: + 600 bytes With memory devices: + 200 bytes (recommended)

Font Memory Requirements

The following table describes the standard fonts shipped with μC/GUI. For each font, ameasurement in pixels and the ROM size in bytes are provided. The following parameters are used in the measurement diagrams:

Element Meaning
F Size of font in Y.
B Distance of base line from the top of the font.
C Height of capital characters.
L Height of lowercase characters.
U Size of under length used by letters such as "g", "j" or "y".
Font name Measurement in pixels ROM size in bytes
GUI_Font8_ASCII F: 18, B: 15, C: 12, L: 9, U: 3 1562
GUI_Font8_1 F: 8, B: 7, C: 7, L: 5, U: 1 1562+ 1586
GUI_Font10S_ASCII F: 8, B: 7, C: 7, L: 5, U: 1 1760
GUI_Font10S_1 F: 10, B: 8, C: 6, L: 4, U: 2 1760+ 1770
GUI_Font10_ASCII F: 10, B: 8, C: 6, L: 4, U: 2 1800
GUI_Font10_1 F: 10, B: 9, C: 8, L: 6, U: 1 1800+ 2456
GUI_Font13_ASCII F: 10, B: 9, C: 8, L: 6, U: 1 2076
GUI_Font13_1 F: 13, B: 11, C: 8, L: 6, U: 2 2076+ 2149
GUI_Font13B_ASCII F: 13, B: 11, C: 8, L: 6, U: 2 2222
GUI_Font13B_1 F: 13, B: 11, C: 8, L: 6, U: 2 2222+ 2216
GUI_Font13H_ASCII F: 13, B: 11, C: 8, L: 6, U: 2 2232
GUI_Font13H_1 F: 13, B: 11, C: 9, L: 7, U: 2 2232+ 2291
GUI_Font13HB_ASCII F: 13, B: 11, C: 9, L: 7, U: 2 2690
GUI_Font13HB_1 F: 13, B: 11, C: 9, L: 7, U: 2 2690+ 2806
GUI_Font16_ASCII F: 13, B: 11, C: 9, L: 7, U: 2 2714
GUI_Font16_1 F: 16, B: 13, C: 10, L: 7, U: 3 2714+ 3850
GUI_Font16_HK   6950
GUI_Font16_1HK F: 16, B: 13, C: 10, L: 7, U: 3 120+ 6950+2714+ 3850
GUI_Font16B_ASCII F: 16, B: 13, C: 10, L: 7, U: 3 2690
GUI_Font16B_1 F: 16, B: 13, C: 10, L: 7, U: 3 2690+ 2790
GUI_FontComic18B_ASCII F: 16, B: 13, C: 10, L: 7, U: 3 3572
GUI_FontComic18B_1 F: 32, B: 25, C: 20, L: 15, U: 7 3572+ 4334
GUI_Font20_ASCII F: 18, B: 15, C: 12, L: 9, U: 3 4044
GUI_Font20_1 F: 20, B: 16, C: 13, L: 10, U: 4 4044+ 4244
GUI_Font20B_ASCII F: 20, B: 16, C: 13, L: 10, U: 4 4164
GUI_Font20B_1 F: 20, B: 16, C: 13, L: 10, U: 4 4164+ 4244
GUI_Font24_ASCII F: 20, B: 16, C: 13, L: 10, U: 4 4786
GUI_Font24_1 F: 24, B: 19, C: 15, L: 11, U: 5 4786+ 5022
GUI_Font24B_ASCII F: 24, B: 19, C: 15, L: 11, U: 5 4858
GUI_Font24B_1 F: 24, B: 19, C: 15, L: 11, U: 5 4858+ 5022
GUI_FontComic24B_ASCII F: 24, B: 19, C: 15, L: 11, U: 5 6146
GUI_FontComic24B_1 F: 24, B: 20, C: 17, L: 13, U: 4 6146+ 5598
GUI_Font32_ASCII F: 24, B: 20, C: 17, L: 13, U: 4 7234
GUI_Font32_1 F: 32, B: 26, C: 20, L: 15, U: 6 7234+ 7734
GUI_Font32B_ASCII F: 32, B: 26, C: 20, L: 15, U: 6 7842
GUI_Font32B_1 F: 32, B: 25, C: 20, L: 15, U: 7 7842+ 8118

Driver Benchmark

Benchmarks are used tomeasure the speed of display drivers on available targets. This benchmark is in no way complete, but gives an approximation of the length of time required for common operations on various targets.

Bench1: Filling: Bench the speed of filling. An area of 64*64 pixels is filledwith different colors.

Bench2: Small fonts: Bench the speed of small character output. An area of 60*64 pixels is filled with small-character text.

Bench3: Big fonts: Bench the speed of big character output. An area of 65*48 pixels is filled with big character text.

Bench4: Bitmap 1bpp: Bench the speed of 1bbp bitmaps. An area of 58*8 pixels is filled with a 1bpp bitmap.

Bench5: Bitmap 2bpp: Bench the speed of 2bbp bitmaps. An area of 32*11 pixels is filled with a 2bpp bitmap.

Bench6: Bitmap 4bpp: Bench the speed of 4bbp bitmaps. An area of 32*11 pixels is filled with a 4bpp bitmap.

Bench7: Bitmap 8bpp: Bench the speed of 8bbp bitmaps. An area of 32*11 pixels is filled with an 8bpp bitmap.

Bench8: Device-dependent bitmap, 8 or 16 bpp: Bench the speed of bitmaps 8 or 16 bits per pixel. An area of 64*8 pixels is filled with a bitmap. The color depth of the tested bitmap depends on the configuration. For configurations <= 8bpp, a bitmap with 8 bpp is used; 16bpp configurations use a 16- bpp bitmap.

CPU V850SB1 (20 MHz) V850SB1 (20 MHz) ARM720T (50 MHz) ARM92EJ-S (200 Mhz)
LCD Controller (Driver) 1.25M 806K 2.94M (internal) (3200)
bpp 459K 326K 581K 2.27M
Bench1 Filling 8 388K 1.96M 2.21M
Bench2 Small fonts 16.7M 388K 16 221M
Bench3 Big fonts 1.59M 214K 7.14M 1.77M
Bench4 Bitmap 1bpp 240K 16 694K 15.2M
Bench5 Bitmap 2bpp 459K 8.33M 410K 16
Bench6 Bitmap 4bpp 83K 1.49M 645K 123M
Bench7 Bitmap 8bpp 339K 391K 645K 5.21M
Bench8 DDP bitmap S1D13806 (1300) S1D13806 (1300) (internal) (3200) 7.59M

Image Drawing Performance

The purpose of the following table is to show the drawing performance of various image formats supported by μC/GUI. The measurement for the table is performed on an ARM922T CPU (Sharp LH7A404) running with 200MHz and with 15 bpp display color depth (fixed palette = 555) using the LCDLin driver:

Image format Megapixels/second
Internal bitmap format: 1bpp .C. file 17.186
Internal bitmap format: 4bpp .C. file 3.897
Internal bitmap format: 8bpp .C. file 4.017
Internal bitmap format: 8bpp .C. file, without palette 4.478
Internal bitmap format: 16bpp .C. file, high color 13.363
Internal bitmap format: 16bpp .C. file, high color 1.336
Internal bitmap format: 24bpp .C. file, true color 1.671
Internal bitmap format: RLE4 .C. file 6.144
Internal bitmap format: RLE8 .C. file 6.806
Internal bitmap format: RLE16 .C. file 3.74
BMP file 8bpp 4.115
BMP file 16bpp 1.134
BMP file 24bpp 1.544
BMP file 32bpp 1.525
BMP file RLE4 6.998
BMP file RLE8 6.345
GIF file 1.285
JPEG file, gray 0.516
JPEG file, gray, progressive 0.438
JPEG file, H1V1 0.402
JPEG file, H1V1, progressive 0.28
JPEG file, H2V2 0.602
JPEG file, H2V2, progressive 0.431

For pricing, delivery, and ordering information, contact Micrium today.