Difference between revisions of "Guiliani:Features"
From Guiliani
(17 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | <metadesc>Features and detailed information about the Guiliani embedded GUI framework.</metadesc> | ||
+ | Guiliani is a C++ software framework enabling the creation of visually appealing, hardware and OS platform-independent GUIs for embedded systems. | ||
+ | Guiliani adopts the philosophy of write once, compile for & run on many different target hardware. Once a Guiliani application has been developed, it can run natively on supported target platforms. When using Guiliani, the usual development workflow is to design the application on a PC and target a set of embedded platforms for production release. | ||
− | + | === Minimum HW requirements === | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{| class="wikitable" | {| class="wikitable" | ||
!Criteria | !Criteria | ||
Line 25: | Line 22: | ||
|- | |- | ||
|Operating System | |Operating System | ||
− | | | + | |no Operating System required, but many supported |
|} | |} | ||
− | + | === Architecture overview === | |
− | + | Guiliani is split into two layers, the Guiliani runtime engine, and a platform abstraction layer. | |
− | Guiliani is split into two layers, the Guiliani runtime | ||
[[File:Architecture 20.jpg]] | [[File:Architecture 20.jpg]] | ||
− | + | === Features === | |
− | + | ==== System, platform and peripherals ==== | |
− | + | * Object-oriented C++ HMI-framework optimized for embedded systems | |
− | * Object-oriented | ||
− | |||
** Low memory consumption | ** Low memory consumption | ||
** Minimized CPU usage | ** Minimized CPU usage | ||
− | * Operation system independent | + | * Operation system independent (Baremetal, eLinux, FreeRTOS, embOS, ARM mbed, ...) |
− | * CPU independent | + | * CPU independent (MCU, MPU, ARM, FPGA with NIOS, ...) |
− | ** Support for | + | ** Support for fixed point / floating point CPUs |
− | ** So far supported embedded platforms include: Renesas RZ/A, RZ/G, | + | ** So far [[Guiliani:Platforms|supported embedded platforms]] include: i.MX6, i.MX7, Raspberry PI, Renesas RZ/A, RZ/G, RX63N, STM32F429, ALTERA NIOS II, Intel x86,… |
− | * | + | * Supports software-rasterizer (TES eGML) or GPU-accelerated Graphics-API (OpenGL (ES), TES D/AVE) |
− | |||
* Support for subpixel-accurate rendering | * Support for subpixel-accurate rendering | ||
* Support for hardware-specific capabilities (e.g. hardware graphic layers) | * Support for hardware-specific capabilities (e.g. hardware graphic layers) | ||
− | * UNICODE support | + | * UNICODE support (UTF-8, UTF-16) |
* Prepared for thread-safe integration into existing applications | * Prepared for thread-safe integration into existing applications | ||
− | + | ==== GUI features ==== | |
− | |||
* Large set of pre-defined widgets | * Large set of pre-defined widgets | ||
* Easy to customize existing widgets or to integrate new widgets | * Easy to customize existing widgets or to integrate new widgets | ||
Line 59: | Line 51: | ||
* Image-sets (skinning) | * Image-sets (skinning) | ||
* Automated layout of GUI elements | * Automated layout of GUI elements | ||
− | * Rich | + | * Rich text support |
* Smart redraw mechanism and resource-management | * Smart redraw mechanism and resource-management | ||
* GUI can be developed independently from applications | * GUI can be developed independently from applications | ||
− | + | ==== Application development & support ==== | |
− | |||
* Comprehensive and up-to-date documentation | * Comprehensive and up-to-date documentation | ||
* Customizable trainings regarding content, location and time | * Customizable trainings regarding content, location and time | ||
Line 71: | Line 62: | ||
* GUI design and behavior is stored in XML or binary description-files | * GUI design and behavior is stored in XML or binary description-files | ||
* Easy communication with external applications | * Easy communication with external applications | ||
+ | |||
+ | === Guiliani in detail === | ||
+ | ==== ROM/RAM memory usage ==== | ||
+ | The following list contains values for the memory-usage of Guiliani in different configurations. of course the actual memory-usage heavily depends on the used features and resources. | ||
+ | |||
+ | All values are determined using the following configuation: | ||
+ | * GNU Tools ARM Embedded 6 2017 Q2 | ||
+ | * debug-build with -Og | ||
+ | |||
+ | {| class="wikitable" | ||
+ | !Operating System (choose one) | ||
+ | !Description | ||
+ | !ROM | ||
+ | !RAM | ||
+ | |- | ||
+ | |FreeRTOS | ||
+ | |The code-size which is contributed by the operating system heavily depends on the function which are used by the application. Guiliani only uses the standard-function for memory-allocation, timer- and task-handling and peripheral-access. | ||
+ | |1080kB | ||
+ | |depends | ||
+ | |- | ||
+ | |ARM mbed OS | ||
+ | |The code-size which is contributed by the operating system heavily depends on the function which are used by the application. Guiliani only uses the standard-function for memory-allocation, timer- and task-handling and peripheral-access. | ||
+ | |600kB | ||
+ | |depends | ||
+ | |- | ||
+ | !Graphics-API (choose one) | ||
+ | !Description | ||
+ | !ROM | ||
+ | !RAM (not including memory for loaded images and framebuffers) | ||
+ | |- | ||
+ | |eGML (incl. image-decoder-libraries jpeg and png-lib) | ||
+ | |eGML can be used if no GPU-accelerated hardware is present. It is a pure software-rasterizer and can decode some image-formats by default. | ||
+ | |1080kB | ||
+ | |15kB | ||
+ | |- | ||
+ | |D/AVE | ||
+ | |D/AVE is a FPGA-backed hardware-accelerated Graphics-API with a wide feature-set. | ||
+ | |530kB | ||
+ | |10kB | ||
+ | |- | ||
+ | |BLU | ||
+ | |BLU can be used on platforms with very low ROM/RAM-capabilities. it features the basic primitives (Line, Rects) and basic blits for images. | ||
+ | |560kB | ||
+ | |10kB | ||
+ | |- | ||
+ | !Font-API (choose one) | ||
+ | !Description | ||
+ | !ROM | ||
+ | !RAM (not including memory for loaded fonts) | ||
+ | |- | ||
+ | |FreeType | ||
+ | |Standard-library for font-rendering. Can read TTF and OTF-files. | ||
+ | |410kB | ||
+ | |21kB | ||
+ | |- | ||
+ | |GlyphLib | ||
+ | |Bitmap-based font-engine using special exported fonts for very small platforms. | ||
+ | |20kB | ||
+ | |1kB | ||
+ | |- | ||
+ | !Guiliani-Features | ||
+ | !Description | ||
+ | !ROM | ||
+ | !RAM (not including working memory) | ||
+ | |- | ||
+ | |Core-Packages (mandatory) | ||
+ | |Includes every basic thing Guiliani needs to run. Resource-Management, Eventhandling, Intelligent Redraw, Timer- and Command-Processing... | ||
+ | |350kB | ||
+ | |11kB | ||
+ | |- | ||
+ | |DataPool | ||
+ | |The DataPool is used to exchange values between the application and the GUI. | ||
+ | |10kB | ||
+ | |1kB | ||
+ | |- | ||
+ | |Streaming-Engine | ||
+ | |Enables Guiliani to read and write objects into streams. This is used for loading and saving GSE-projects. | ||
+ | |120kB | ||
+ | |2kB | ||
+ | |- | ||
+ | |Feature-Factory | ||
+ | |All Guiliani-controls, commands, behaviours and layouters which are available to be used in an application. Ranges from 2kB for an Image to 50 for a ComboBox. By using a tailored factory only the features of Guiliani which are used in the GSE-project are included in the final binary. | ||
+ | |550kB | ||
+ | | | ||
+ | |- | ||
+ | |Animations | ||
+ | |Various types of animations. | ||
+ | |40kB | ||
+ | | | ||
+ | |} |
Latest revision as of 11:10, 22 September 2021
Guiliani is a C++ software framework enabling the creation of visually appealing, hardware and OS platform-independent GUIs for embedded systems.
Guiliani adopts the philosophy of write once, compile for & run on many different target hardware. Once a Guiliani application has been developed, it can run natively on supported target platforms. When using Guiliani, the usual development workflow is to design the application on a PC and target a set of embedded platforms for production release.
Contents
Minimum HW requirements
Criteria | Requirements |
---|---|
MCU | 100Mhz |
ROM | ~700kb for Guiliani without resources |
RAM | ~50kb for Guiliani without resources |
Compiler | C++ Compiler with exception Support |
Operating System | no Operating System required, but many supported |
Architecture overview
Guiliani is split into two layers, the Guiliani runtime engine, and a platform abstraction layer.
Features
System, platform and peripherals
- Object-oriented C++ HMI-framework optimized for embedded systems
- Low memory consumption
- Minimized CPU usage
- Operation system independent (Baremetal, eLinux, FreeRTOS, embOS, ARM mbed, ...)
- CPU independent (MCU, MPU, ARM, FPGA with NIOS, ...)
- Support for fixed point / floating point CPUs
- So far supported embedded platforms include: i.MX6, i.MX7, Raspberry PI, Renesas RZ/A, RZ/G, RX63N, STM32F429, ALTERA NIOS II, Intel x86,…
- Supports software-rasterizer (TES eGML) or GPU-accelerated Graphics-API (OpenGL (ES), TES D/AVE)
- Support for subpixel-accurate rendering
- Support for hardware-specific capabilities (e.g. hardware graphic layers)
- UNICODE support (UTF-8, UTF-16)
- Prepared for thread-safe integration into existing applications
GUI features
- Large set of pre-defined widgets
- Easy to customize existing widgets or to integrate new widgets
- Support for animations
- Multi-language support (dynamically switchable at runtime)
- Image-sets (skinning)
- Automated layout of GUI elements
- Rich text support
- Smart redraw mechanism and resource-management
- GUI can be developed independently from applications
Application development & support
- Comprehensive and up-to-date documentation
- Customizable trainings regarding content, location and time
- Tutorials available
- Integrated debugging mechanism
- GUI design and behavior is stored in XML or binary description-files
- Easy communication with external applications
Guiliani in detail
ROM/RAM memory usage
The following list contains values for the memory-usage of Guiliani in different configurations. of course the actual memory-usage heavily depends on the used features and resources.
All values are determined using the following configuation:
* GNU Tools ARM Embedded 6 2017 Q2 * debug-build with -Og
Operating System (choose one) | Description | ROM | RAM |
---|---|---|---|
FreeRTOS | The code-size which is contributed by the operating system heavily depends on the function which are used by the application. Guiliani only uses the standard-function for memory-allocation, timer- and task-handling and peripheral-access. | 1080kB | depends |
ARM mbed OS | The code-size which is contributed by the operating system heavily depends on the function which are used by the application. Guiliani only uses the standard-function for memory-allocation, timer- and task-handling and peripheral-access. | 600kB | depends |
Graphics-API (choose one) | Description | ROM | RAM (not including memory for loaded images and framebuffers) |
eGML (incl. image-decoder-libraries jpeg and png-lib) | eGML can be used if no GPU-accelerated hardware is present. It is a pure software-rasterizer and can decode some image-formats by default. | 1080kB | 15kB |
D/AVE | D/AVE is a FPGA-backed hardware-accelerated Graphics-API with a wide feature-set. | 530kB | 10kB |
BLU | BLU can be used on platforms with very low ROM/RAM-capabilities. it features the basic primitives (Line, Rects) and basic blits for images. | 560kB | 10kB |
Font-API (choose one) | Description | ROM | RAM (not including memory for loaded fonts) |
FreeType | Standard-library for font-rendering. Can read TTF and OTF-files. | 410kB | 21kB |
GlyphLib | Bitmap-based font-engine using special exported fonts for very small platforms. | 20kB | 1kB |
Guiliani-Features | Description | ROM | RAM (not including working memory) |
Core-Packages (mandatory) | Includes every basic thing Guiliani needs to run. Resource-Management, Eventhandling, Intelligent Redraw, Timer- and Command-Processing... | 350kB | 11kB |
DataPool | The DataPool is used to exchange values between the application and the GUI. | 10kB | 1kB |
Streaming-Engine | Enables Guiliani to read and write objects into streams. This is used for loading and saving GSE-projects. | 120kB | 2kB |
Feature-Factory | All Guiliani-controls, commands, behaviours and layouters which are available to be used in an application. Ranges from 2kB for an Image to 50 for a ComboBox. By using a tailored factory only the features of Guiliani which are used in the GSE-project are included in the final binary. | 550kB | |
Animations | Various types of animations. | 40kB |