Guiliani

Guiliani:Features

From Guiliani

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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:

 * Renesas RZ/A2M
 * GNU Tools ARM Embedded 9.3.1.20200408
 * release-build with -O3
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. 240kB 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. 200kB 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. 110kB 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. 60kB 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. 300kB 21kB
GlyphLib Bitmap-based font-engine using special exported fonts for very small platforms. 10kB 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