Username: Password:         Forgot your password?
MiniGUI
Feynman >> Products >> MiniGUI  
 

MiniGUI

MiniGUI is a mature graphics user interface (GUI) support system for real-time embedded system. MiniGUI has been developed for more than 10 years since the end of 1998. After years of meticulously development, MiniGUI has become a high-performance, rich-featured, cross-operating-system graphics user interface support system.

At present, MiniGUI has been widely used in mobile phones, medical equipments, industrial systems, set-top boxes, multimedia terminals, and so on. The successful enterprises developing products by using MiniGUI are such as Huawei, ZTE, Datang Mobile, Changhong, TCL, Lenovo, D2, etc.. These customers extensive branch in the China mainland, China Taiwan, Singapore, South Korea, the United States, Germany, Italy, India, Israel and other countries and regions.

It is worth mentioning that in China's 3G communication standard TD-SCDMA, about 60 percent of TD-SCDMA mobile phones use MiniGUI as its embedded graphics platform, so as to support 3G applications like browser and videophone. The typical TD-SCDMA phone models are HISENSE T68 and ZTE U85. 

Architecture of MiniGUI

As shown above, from bottom to top, MiniGUI includes the following modules:

  • Graphics Abstraction Layer (GAL). GAL hides the differences among different operating systems or devices to provide an unified graphics interface for the upper layer of MiniGUI. In GAL, it contains the software components to support the devices like Linux frame buffer, eCos LCD, and so on. These software components call the device interface of bottom layer to achieve specific GAL operations such as opening device, setting resolution and video mode, closing device, and so no. We call these software components as the "GAL engines". Its concept is similar to the device driver in operating system.

  • Input Abstraction Layer (IAL). Similar to GAL, IAL hides the differences among various input devices such as the keyboard, keypad, mouse, and touch screen to provide an universal interface for upper layer. To support different keyboard, touch screen or mouse interface, you can write your own IAL engine. MiniGUI provides support for Linux console (keyboard and mouse), touch screen, remote controller, keypad, and other input devices by IAL and IAL engines.

  • Graphics Device Interfaces (GDI). This module is based on GAL and provides the interfaces related to graphics for upper layer applications, such as drawing curves, rendering text, filling rectangle, and so on. GDI contains other independent sub-modules, such as font and char set support, image support, and so on.

  • Messaging Module. This module is based on IAL, it implements MiniGUI messaging mechanism and provided a comprehensive management interface for the upper layer. It is well known that almost all the GUI systems are event-driven, so its own operation and the operation of GUI application both rely on messaging module.

  • Windowing Module and Control/Widget. Based on GDI and messaging module, MiniGUI implements the windowing module. This module provides basic interface to create the main window and controls (widgets) for upper applications, and is responsible for maintaining control classes. Control class is an important concept to get the reusability of program code. By using one control class, we can create many control instances that belong to a certain kind of control class, so that these instances can use the same code of the control class. In this way, we can achieve the class/instance concept similar to C++, which can reuse existed code as much as possible and improve the maintainability of software. The control module implements a lot of common controls, such as static box, button, edit box, list box, combo box, and so on.

  • Look and Feel. This module is introduced in MiniGUI V3.0. It can be used to customize the appearance of main windows and controls. In the previous version, the ability to customize main windows and controls has not been an independent module, but we can still make the main windows and controls of MiniGUI have three kinds of appearance styles by configuration options: PC3D (a style similar to the PC), FLAT, and FASHION. In MiniGUI 3.0, the appearance of main windows and controls can be fully customized by the applications. When you create a main window or control, by specifying the different name of the Look and Feel Renderer (LFRDR), you will get different appearance of the main window or control. 

The Runtime Modes of MiniGUI

Different from the general-purpose operating system like Linux, the traditional embedded operating systems have some particularities. For example, uClinux, uC/OS-II, eCos, and VxWorks usually run on non-MMU CPUs, without support for processes that have separate address spaces but only threads or tasks. Therefore, the runtime environments are entirely different. To meet different run environments, we can configure and compile MiniGUI into three runtime modes for different operating systems:

  • MiniGUI-Threads: A program running on MiniGUI-Threads can create multiple cascaded windows in different threads, and all the windows belong to a single process. MiniGUI-Threads is fit for almost all of real time operating systems like eCos, uC/OS-II, and VxWorks. MiniGUI-Threads can also run on Linux/uClinux.

  • MiniGUI-Processes: In opposition to MiniGUI-Threads, a program running on MiniGUI-Processes is an independent process, which can also create multiple windows. MiniGUI-Processes are fit for full-featured UNIX-like operating systems, such as Linux. This run-time mode appeared in MiniGUI V2.0.

  • MiniGUI-Standalone: This is a single process/thread/task runtime mode of MiniGUI. This mode is useful for some systems that lack thread support, like some buggy uClinux systems.

MiniGUI can almost run on all operating systems under MiniGUI-Standalone mode theoretically. MiniGUI-Threads is suitable for real-time operating systems, which provide support for multi-task, or general-purpose operating systems like Linux/UNIX. Moreover, MiniGUI can run on only UNIX-like operating systems under MiniGUI-Processes mode, like Linux.

No matter which mode is used, MiniGUI provides for applications the furthest compatibility; only a few initialization interfaces are different among different runtime modes.

Other Information

  • MiniGUI 3.0 is the latest MiniGUI Version. This version supports for rich advanced features that will help you develop an embedded product with better user experience, like 3D UI.Details...

  • On the core interface of MiniGUI, we also provide a number of components for the applications. Details...

  • mStudio is an Eclipse-based Integrated Development Environment (IDE) of MiniGUI. Developers can use mStudio to customize MiniGUI and design MiniGUI application interface rapidly, and also can manage the resources and debug MiniGUI applications.Details...