From Guiliani – Embedded GUI made fast and easy

Revision as of 13:48, 17 December 2020 by Administrator (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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. Architecture 20.jpg


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 ROM RAM
FreeRTOS 1080kB depends
ARM mbed OS 600kB depends
Graphics-API ROM RAM (not including memory for loaded images and framebuffers)
eGML (incl. jpeg and png-lib) 1080kB 15kB
D/AVE 530kB 10kB
BLU 560kB 10kB
Font-API ROM RAM (not including memory for loaded fonts)
FreeType 410kB 21kB
GlyphLib 20kB 1kB
Guiliani-Features ROM RAM (not including working memory)
Core-Packages 350kB 11kB
DataPool 10kB 1kB
Streaming-Engine 120kB 2kB
Feature-Factory 550kB
Animations 40kB