in System Integration by

We are in the process of integrating a GUI with numerous other tasks of our application. The GUI is heavily animated on a large 800x480 display. Raw processing power of the target is sufficient to execute the GUI, but we need to balance CPU load between the GUI and additional tasks of the application.

We actually see the GUI slow down the rest of the application. Defining the macro EW_CPU_LOAD_MEASURING shows us that we are right assuming that currently, the GUI consumes as much as 80% of total CPU load when performing animations.
We would be willing to sacrifice part of animation smoothness to reduce CPU load generated by the GUI, i.e. reduce animation frame rate.
Is there a way to achieve this?

EmWi version 8.20. Target board is a custom bare metal system based on STM32F769 processor running at 216 MHz with RGB interface running at 26 MHz pixel clock, frame buffer located in external SDRAM, and double buffering enabled.


Steffen Schmid

1 Answer

0 votes


in case you are driving a heavily animated GUI on a large display, the CPU load and the necessary memory bandwidth is high. You already did some measurements and the results sounds reasonable.

The big advantage of every Embedded Wizard GUI application is the cooperative model of every main loop. This means, you can give as much CPU time to the GUI processing as you want.

In case you are using an operating system you can balance the CPU performance by adjusting the priorities of the GUI thread and the other worker threads.

In case of a bare metal integration, you can do more processing of your data and less processing of the animations. But due to the lack of an operating system, you have to do the balancing (scheduling). From the GUI perspective, every loop is preparing one animation step. If the time between two loop iterations is delayed, then just the effective frame rate drops.

Best regards,




Ask Embedded Wizard

Welcome to the question and answer site for Embedded Wizard users and UI developers.

Ask your question and receive answers from the Embedded Wizard support team or from other members of the community!

Embedded Wizard Website | Privacy Policy | Imprint