MiniGUI is an open source Linux GUI support system created by Beijing FMSoftware Technology Co., Ltd. and through the development of recent years, MiniGUI has developed into a relatively mature, high-performance, feature-rich embedded GUI support system across the operating system. "Small" is the characteristic of MiniGUI, it has been widely used in communication, medical, industrial control, electronics, set-top box, multimedia and other fields. At present, the latest version of MiniGUI for MiniGUI 3.0. MiniGUI for Chinese support is very friendly. It supports GB2312 and BIG5 character sets, and other character sets can be added easily.
Basic introduction Chinese name : MiniGUI founder : Beijing FMSoftware Technology Co., Ltd. belongs to : open source Linux graphical user interface support system application : communications, medical, industrial control, electronics Introduction, features advantages, technical features, MiniGUI technical advantages, MiniGUI V3.0, run mode, MiniGUI-Threads, MiniGUI-Processes, MiniGUI-Processes, MiniGUI-Processes, MiniGUI-Processes, MiniGUI-Processes, MiniGUI-Processes, MiniGUI-Processes, MiniGUI-Processes, MiniGUI-Processes, MiniGUI-Processes. MiniGUI-Processes,MiniGUI-Standalone,Software Architecture,Graphics Abstraction Layer,Input Abstraction Layer,Graphical Device Interface,Message Processing Module,Multi-Window Processing Module and Control Items,Appearance Support, Introduction MiniGUI is a high-level windowing system and graphical user interface (GUI) for embedded systems. MiniGUI is an advanced Windowing System and Graphical User Interface (GUI) support system for embedded systems, which was developed by Mr. Wei Yongming at the end of 1998. 2002, Mr. Wei established Beijing FMSoft Technology Co. FMSoft is the software company that contributes the most code to the open source community in China. The last version of MiniGUI licensed under GPL was 1.6.10, and MiniGUI was rewritten and commercially licensed since MiniGUI 2.0.4. After more than 10 years, MiniGUI has become a high-performance and feature-rich embedded GUI support system for cross-operating systems, supporting Linux/uClinux, eCos, uC/OS-II, VxWorks, ThreadX, Nucleus, pSOS, OSE, and dozens of SoC chips. Hardware platforms include ARM-based SoCs, MIPS-based SoCs, IA-based SoCs, PowerPC, M68K (DragonBall/ColdFire), Intel x86, etc., which are widely used in the fields of communication, medical, industrial control, electric power, set-top box, and multimedia terminal. Enterprises that have successfully developed products using MiniGUI include Huawei, ZTE, Datang Mobile, Changhong, TCL, Lenovo, Myriad, Nanrui, Torchpower, D2, etc. These users are widely distributed in mainland China. These users are widely distributed in 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 self-developed 3G communication standard TD-SCDMA, about 60% of TD-SCDMA cell phones that have obtained network access licenses use MiniGUI as their embedded graphic platforms to support the operation of 3G software packages such as browsers and videophones, among which there are familiar TD cell phone models, such as the Lenovo TD30t, Hisense T68, and ZTE U85. models. On the basis of MiniGUI, FMSoft has developed mDolphin (an embedded browser based on the open source browser core WebKit, which has passed the benchmark test of Acid3 with full marks), mPeer (which provides efficient J2SE AWT/Swing implementation support for embedded devices using Java technology), and developed a visualization IDE based on Eclipse CDT. CDT-based visual integrated development environment, to provide developers with WYSIWYG (What You See Is What You Get) interface design environment. In 2010, FMSoft integrated the latest version of MiniGUI, mDolphin, mPeer, mStudio and other systems together, launched a combined operating system (HybridOS) solutions, is a complete set of embedded devices for the creation of a rapid development platform, integrated FMSoft 10 years of research and development experience in the embedded industry and a large number of mature products, making the Numerous small and medium-sized enterprises wishing to do development on embedded devices to get rid of the "unstable core and driver", "cross-compilation tool chain, there are a large number of defects in the basic library", "inappropriate open source software", "inappropriate", "inappropriate", "inappropriate", "inappropriate", "inappropriate", "inappropriate", "inappropriate", "inappropriate" and "inappropriate". software", "lack of highly qualified embedded development engineers", etc., so that they can focus on developing products based on a stable and powerful core of a compact system. HybridOS adopts a new commercial licensing model, which is highly cost-effective. As of September 2010, the latest version of MiniGUI is 3.0.10. MiniGUI will evolve as an integral part of HybridOS, and it is recommended that new and old users use HybridOS as an embedded development platform, which will surely save a lot of development costs and time. (Overview content source:) Features Advantages MiniGUI provides complete graphical system support for embedded Linux systems, and is one of only two commercial embedded GUI systems for embedded Linux in the world. miniGUI provides complete multi-process support for embedded Linux systems; it can MiniGUI-Processes, MiniGUI provides complete multi-process support for embedded Linux systems and can run in MiniGUI-Processes, MiniGUI-Threads or MiniGUI-Standalone modes. Technical Features
Hardware Adaptability: Runs on a variety of 32-bit processor architectures with MMUs (Memory Management Units), such as ix386, ARM, MIPS, PowerPC, and more. Supports both low-end display devices (e.g. monochrome LCDs) and high-end display devices (8-bit color and above). Through MiniGUI's graphics abstraction layer and graphics engine technology, it can also support special display devices, such as YUV display devices. There is no maximum or minimum limitation on display device resolution. Sub-screen support. When there are several video devices in the system, one of them can be used as the main screen of MiniGUI to realize a complete multi-window system; while the other devices can be used as the sub-screens, on which text rendering, graphic display and other functions can be realized through the graphic interface of MiniGUI. It can support various input devices, such as PC keyboard, PC mouse, Keypad, touch screen, remote control and so on. MiniGUI supports multiple keyboard layouts; MiniGUI not only supports common American PC keyboard layouts, but also supports French, German, and other Western European language keyboard layouts.
Resource Consumption : MiniGUI's static storage varies with different configuration options, at least 1MB of static storage space is required. After MiniGUI starts up, it will initially take up 1MB of dynamic memory.
* Due to standard PC architecture, a certain amount of memory is reserved for system usage and therefore the actual memory size is less than the stated amount.
Operating System Adaptability: Supports Linux operating systems (not uClinux), and can run in MiniGUI-Processes, MiniGUI-Threads, or MiniGUI-Standalone modes. Built-in resource support. The ability to compile resources used by MiniGUI, such as bitmaps, icons, and fonts, into libraries improves the speed of MiniGUI initialization and is ideal for real-time embedded operating systems with no file system support. Specialized support for embedded systems includes general I/O streaming operations, byte order related functions, and more.
Windows Subsystem Features: Complete multi-window and messaging mechanisms. With MiniGUI-Threads mode, you can create main windows in different threads and support inter-reader messaging; with MiniGUI-Processes mode, you can have a complete multi-process windowing system. Dialog and message box support. Commonly used control classes, including static textboxes, buttons, single- and multi-line edit boxes, listboxes, combo boxes, menu buttons, progress bars, sliders, property pages, toolbars, tree controls, calendar controls, knob controls, cool toolbars, grid controls, animation controls, and so on. Other GUI elements, including menus, accelerator keys, inserters, timers, and so on.
Graphics subsystem features: Enhanced GDI functions are provided, including raster manipulation, complex region handling, ellipses, arcs, polygons, and region filling. Advanced 2D drawing functions for setting line widths, line styles, and fill modes are provided on top of a C99-compliant math library platform. These advanced GDI interfaces can also be realized on low-end displays through MiniGUI's graphics abstraction layer and graphics engine technology. Support for various popular image files, including Windows BMP, GIF, JPEG, PNG, etc. (JPEG and PNG support is provided through the libjpeg and libpng libraries). Windows support for resource files such as dot maps, icons, cursors, etc. Multiple character sets and fonts support, currently supports ISO8859-1~ISO8859-15, GB2312, GBK, GB18030, BIG5, EUC-JP, Shift-JIS, EUC-KR, UNICODE (UTF-8, UTF-16 encoding), etc., and supports Equal-Width Bitmap, Variable-Width Bitmap, and Embedded Qt/Embedded fonts. Embedded fonts used by Qt/Embedded, TrueType vector fonts (support for TrueType is provided through the freetype 1.3 library). Input method support for all possible input forms; built-in support for Chinese character (GB2312) input methods for PC platforms, including internal code, QuanPin, SmartPinyin, Wubi, and natural code. Compared with other graphical systems for embedded products, MiniGUI has the following advantages in terms of system requirements:
Strong Scalability MiniGUI's rich functionality and configurability allow it to run on low-end products with 60MHz CPUs, as well as high-end embedded devices. MiniGUI's rich functionality and configurability allows it to run on both low-end products with CPUs as low as 60MHz and high-end embedded devices, and to create gorgeous user interfaces using MiniGUI's advanced control item styles and skinned interfaces, etc. MiniGUI's cross-operating-system features allow it to run on the simplest embedded operating systems, such as uC/OS-II, as well as on embedded operating systems with modern operating system features, such as Linux. MiniGUI can also run on embedded operating systems with modern operating system features, such as Linux, and MiniGUI provides a complete multi-window graphical environment for embedded Linux systems. These features make MiniGUI very scalable. Scalability is something that MiniGUI has been designed for from the very beginning and has been continuously improved. This feature allows MiniGUI to be applied to simple industry terminals as well as complex consumer electronics.
Lightweight and low resource consumption. MiniGUI is a lightweight embedded graphic library, and its demand for system resources takes the hardware of embedded devices into consideration. For example, the space occupied by MiniGUI libraries can be trimmed down to about 500K, which is more than enough for today's embedded devices. In addition, test results show that MiniGUI can run normally on a system with a CPU frequency of 30 MHz and only 4M RAM (using the uClinux operating system), which is unattainable by other graphics systems for embedded products.
High performance and high reliability. The MiniGUI architecture and optimized graphical interfaces ensure the fastest possible graphics. At the beginning of the design, we have fully considered the characteristics of real-time embedded systems, and carried out a lot of research and development for graphics in multi-window environments, to optimize the graphics performance and resource consumption of MiniGUI, which has been used in a large number of actual systems, especially in industrial control systems, proving that MiniGUI has very good performance. Since the release of the first version of MiniGUI in 1999, there have been many products and projects using MiniGUI, and MiniGUI has constantly gained development impetus and new technical requirements from these products or projects, and gradually improved its own reliability and robustness. For more information about MiniGUI's latest success stories, you can visit the Case Studies section of FMSC's website.
Configurability. In order to meet the diverse needs of embedded systems, the GUI system must be configurable. Similar to the Linux kernel, MiniGUI implements a large number of compilation and configuration options that allow you to specify what features are included in the MiniGUI library and what features are not. In general, MiniGUI can be customized in the following ways: Specify the hardware platform on which MiniGUI will run. Specify the operating system on which MiniGUI is to run. Specify whether to generate the executable-based MiniGUI-Threads operation mode or the process-based MiniGUI-Processes operation mode, or just the simplest MiniGUI-Standalone operation mode. Specify the GAL Engine and IAL Engine to be supported, and the engine-related options. Specify the font types to be supported. Specify the set of characters to be supported. Specify the image file formats to be supported. Specify the type of control that needs to be supported. Specifying the overall style of controls and windows can be accomplished by specifying a different renderer. These configuration options greatly enhance the flexibility of MiniGUI, for the user, can be tailored to the specific needs of the application, the development of the most suitable product requirements of the application software. In conclusion, MiniGUI, which brings modern windowing and graphic technologies to embedded devices, is an efficient, reliable, customizable, compact and flexible GUI support system that is very suitable for real-time embedded devices, and its main advantages can be summarized as follows: support for a variety of embedded operating systems with excellent portability; scalable system architecture, easy to expand; feature-rich, flexible tailoring The best balance between small size and high performance; Wide range of applications. MiniGUI V3.0 adds the following new features to previous versions:
Double Buffering Main Window When the main window of MiniGUI 3.0 has a double buffer, you can get the rendering result of the whole main window in a customized buffer. Based on this, you can use the advanced 2D graphic interface or 3D graphic interface to get various special display effects of the main window, such as push-pull switching, page flip switching, scrolling effect and so on. Look and Feel Renderer Support MiniGUI V3.0 changes the way it used to support only three styles of controls and introduces the new Look and Feel model. A renderer is a renderer that defines how to draw window elements, and is a continuation of the refinements made in MiniGUI V2.0.X. The renderer is a renderer that defines how to draw window elements. Window elements include box lines, title bar, title bar buttons, scroll bars, selected items, invalid items, highlighted items, highlighted items, 3D objects, etc.; window element appearance attributes, including the color, size, font and other information of the window element; window element renderer is a customized size, color, graphic, font, window element, which is easy for the user to design a personalized appearance of the display style. Users can specify a particular renderer for a main window or a control item, or customize the size, color, font, and icon of the renderer, window elements in the non-client area, as well as enhance the resource management function, so as to get a more gorgeous graphical interface.MiniGUI implements several default overall display styles: Classic, Flat, Fashion, and Skin, which can be specified when configuring MiniGUI. Users can specify the corresponding options when configuring MiniGUI to compile MiniGUI into a specific display style. Classic: This style of interface is the standard Window 95 style interface, which is also the most widely used style. Fashion: This style of interface uses the color gradient filling technique provided by mGPlus, a MiniGUI 3.0 component, so it can get a very flashy interface effect; Flat: This style of windowing interface has clear and simple lines, so it is suitable for monochrome or grayscale displays. Because of the simplicity of drawing, this renderer takes up the least amount of resources and runs the fastest; Skin: The above three appearance renderers are basically drawn by code, and are characterized by their compactness and flexibility. However, in the field of embedded nesting, devices vary greatly. Some devices, already have very high computing performance. In this case, skin appearance renderers can be considered to beautify the interface. A skin renderer requires a whole set of images related to the interface and therefore takes up some storage resources. The best feature of the skin renderer is that it allows you to customize the interface. You can replace the system's images with images of your own design, and what you see in front of you will be your own design of the interface. BIDI Text display and input. As you know, in addition to the familiar left-to-right writing (e.g. English, Chinese, etc.), there are many languages that use right-to-left writing, such as Arabic and Hebrew. In order to support these languages, MiniGUI 3.0 adds the processing of the character sets belonging to these two languages, and adds support for Arabic and Hebrew keyboard layouts, thus realizing the input and output processing of bidirectional text. Arabic as well as Hebrew display. Irregular Windows .MiniGUI V3.0 implements irregular windows and controls to meet the different needs of users for window appearance. Irregular windows represent a visible region through a Region data structure, or an invisible region through a transparent value in an 8-bit MYBITMAP. Font. In MiniGUI 3.0, FMSoft invented a new UNICODE font file format, called "UPF" font. The most important feature of this font is that it is easy to use in a multi-process environment, which greatly saves the use of memory. At the same time, FMSoft has enhanced the VBF font format by upgrading the VBF font to 3.0, expanding the set of characters that can be used to support Arabic and other languages. Other Enhancements MiniGUI 3.0 enables customization of the desktop. Through an external programming interface to the desktop, users can place icons on the desktop and echo desktop events to achieve a Windows-like interface. In addition, MiniGUI 3.0 enhances the implementation of transparent controls to be more efficient and independent of the control's internal implementation code. MiniGUI 3.0 also provides independent scrollbar controls, unified virtual framebuffer program support, etc. In addition, the latest MiniGUI V3.0 enables the customization of the desktop. In addition, the latest MiniGUI V3.0 adds two new components: mGUtils and mGPlus, which unify the management of font, bitmap, icon, cursor and other resources, and the inline and non-inline ways of resources don't affect the composition of the module, thus abstracting the system resource management module. Runtime Modes Compared with UNIX-like operating systems such as Linux, traditional embedded operating systems in the general sense have some special characteristics. For example, operating systems such as uClinux, uC/OS-II, eCos, and so on, usually run on CPUs without MMUs (Memory Management Units, which are used to provide virtual memory support); in this case, there is no notion of process, but only the notion of executable or task, and thus, the running environment of MiniGUI is also very different. Therefore, in order to suit different operating system environments, MiniGUI can be configured to run in three different modes: MiniGUI-Threads Programs running on MiniGUI-Threads can create multiple windows in different threads, but all windows run in one process or address space. This mode of operation is mainly used to support most of the traditional embedded operating systems, such as VxWorks, ThreadX, Nucleus, OSE, pSOS, uC/OS-II, eCos and so on. Of course, MiniGUI can also run as MiniGUI-Threads on Linux and uClinux. MiniGUI-Processes is the opposite of MiniGUI-Threads, each program on MiniGUI-Processes is a separate process, and each process can also create multiple windows, and realize a multi-process windowing system. MiniGUI-Processes are suitable for embedded operating systems with full UNIX features, such as embedded Linux, and are available in MiniGUI V2.0. MiniGUI-Standalone This mode allows MiniGUI to run as a standalone task, which does not require multi-execution or multi-process support, and is suitable for single-function applications. For example, in some embedded products using uClinux, there is a lack of executable support for various reasons, and then MiniGUI-Standalone can be used to develop the application software. Generally speaking, MiniGUI-Standalone mode has the widest adaptability and can support almost all operating systems (currently only used to provide support for Linux/uClinux operating systems); MiniGUI-Threads mode has the second widest adaptability and can be run on real-time embedded operating systems supporting multi-tasking or on ordinary operating systems with complete UNIX features; MiniGUI-Standalone mode can be run on real-time embedded operating systems supporting multi-tasking; and MiniGUI-Standalone mode can be used to develop the application software with complete UNIX features. MiniGUI-Processes mode is less suitable for embedded operating systems with full UNIX features, such as Linux, but regardless of the runtime mode, MiniGUI provides maximum consistency for the upper-layer sockets; only a few interfaces involving initialization are different in different runtime modes. The software architecture of MiniGUI consists of the following Architecture MiniGUI consists of the following modules: MiniGUI Architecture minigui Architecture Graphics Abstraction Layer (GAL). Graphics Abstraction Layer (GAL) abstracts the graphical interfaces from different operating systems or devices and provides a unified graphical interface for the upper layers of MiniGUI. Within the Graphics Abstraction Layer, there are software components for Linux FB devices, eCos LCD devices, and so on. These software components call the interfaces of the underlying devices to realize specific operations of the graphics abstraction layer, such as turning on the device, setting the resolution and display mode, and turning off the device, etc. These components are used to adapt to the graphics abstraction layer. These software components used to adapt the graphics abstraction layer interface is called "engine" (engine), the concept is similar to the operating system device driver. Input Abstraction Layer (IAL). Similar to the GAL, the Input Abstraction Layer abstracts all the input devices involved in MiniGUI, such as keyboard, keypad, mouse, touch screen, etc., to provide a consistent interface to the upper layers. To support different keyboard, touch screen or mouse interfaces, it is realized by writing different input engines for the IAL. miniGUI provides support for input devices such as the Linux console (keyboard and mouse), touch screen, remote control, keypad, and so on, through the IAL and its input engine. Graphics Device Interfaces (GDI). This module provides graphics-related interfaces to upper-level applications based on a graphics abstraction layer, such as drawing curves, outputting text, filling rectangles, and so on. The GDI contains other independent sub-modules such as font and charset support, image support, etc. The GDI is also used to provide the interface to the upper layers of the application. Messaging Module. This module implements the message processing mechanism of MiniGUI on the basis of the input abstraction layer, and provides a complete message management interface for the upper layer. As we all know, almost all GUI systems are essentially event-driven, and the operation of the system itself, as well as the operation of the GUI application programs, all depend on the Messaging Module. Multi-Window Processing Modules and Controls (Windowing Module) and (Control or Widget). Based on the Graphics Device Interface and the Message Processing Module, MiniGUI implements the Multi-Window Processing Module. This module provides the basic interface for upper-level applications to create main windows and controls, and is responsible for maintaining the control classes. Control item class is used to achieve the control item code reuse of important concepts, the use of control item class (control class), you can create a control item class belonging to a number of control item instances (instance), so that these control item instances to use the same control item class code, in this way, it is similar to the realization of the concept of C++ as the class and the instance, so that you can maximize the reuse of existing code, and improve the software. MiniGUI's control module implements common GUI controls, such as static boxes, buttons, edit boxes, list boxes, drop-down boxes, and so on. Look and Feel. This module is the interface provided by MiniGUI V3.0 to the upper level application, which can be used to customize the drawing of MiniGUI windows and controls. In versions of MiniGUI prior to V3.0, the ability to customize the main windows and controls had not been extracted to form a separate module, but it was still possible to configure options to allow MiniGUI's main windows and controls to have three styles of display: PC-like 3D style (PC3D), FLAT style (FLAT), and FASHION style (FASHION). In MiniGUI 3.0, the appearance of the main window and control items can be completely customized by the application program. When creating the main window or control items, specify the name of the appearance renderer (renderer), and then you can make the main window or control items have different appearances. On top of the MiniGUI Core interface, there are several components that provide some special features for the application: mGi is the input method component of MiniGUI, which currently provides a framework for soft keyboard input and handwriting input, and provides a container for users to manage the input method. Through this container, users can also add customized input methods. mGp is a printing component for MiniGUI applications. This component enables users to print out their MiniGUI applications, allowing them to output dot-matrix or text from their MiniGUI applications to a printer. mG3d is a component that provides 3D interfaces to MiniGUI applications. Through these interfaces, users can add 3D images, text rendering, scene rendering, and other effects to their applications so that they can have a three-dimensional effect on the human-machine interface. The mGUtils component provides some commonly used dialog box templates, with these templates, users don't have to write repetitive code for some commonly used functions. The functional templates provided by this component are: General Profile Dialog, Color Settings Dialog, Font Settings Dialog, Message Settings Dialog, and so on. mGPlus component is an extension and enhancement to the MiniGUI Graphics Drawing Interface, providing support for 2D vector graphics and advanced graphics algorithms such as paths, gradient fills and color combinations. The mGEff component provides support for regular page effects.