Guiliani:Features: Difference between revisions

From Guiliani

No edit summary
No edit summary
 
(14 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Overview ==
<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 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 operating systems for production release.
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 ===
== Minimum HW requirements ==
{| class="wikitable"
{| class="wikitable"
!Criteria
!Criteria
Line 23: Line 22:
|-
|-
|Operating System
|Operating System
|“bare-metal”, many OSs supported
|no Operating System required, but many supported
|}
|}


 
=== Architecture overview ===
== 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-engine and a platform abstraction layer.
[[File:Architecture 20.jpg]]
[[File:Architecture 20.jpg]]


 
=== Features ===
== Features ==
==== System, platform and peripherals ====
=== System, platform and periphals ===
* Object-oriented C++ HMI-framework optimized for embedded systems
* Object-oriented GUI framework for embedded systems using C++
* Optimized for embedded devices
** 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 fixpoint / floating point CPUs
** Support for fixed point / floating point CPUs
** So far supported embedded platforms include: Renesas RZ/A, RZ/G, SH2, RX600, ST STM32F429, ALTERA NIOS II, Intel x86,…
** 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,…
* Independent of graphics/font engine
* Supports software-rasterizer (TES eGML) or GPU-accelerated Graphics-API (OpenGL (ES), TES D/AVE)
* Supports all types of input media
* 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 ====
=== 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 57: Line 51:
* Image-sets (skinning)
* Image-sets (skinning)
* Automated layout of GUI elements
* Automated layout of GUI elements
* Rich-text support
* 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 ====
=== 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 69: 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 09: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.

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