Another demo

A project log for gCore (II) - a dev board for portable GUI gadgets

A high-end ESP32 development board with a 480x320 pixel capacitive touchscreen and sophisticated features.

dan-julioDan Julio 12/22/2022 at 19:350 Comments

I got the LVGL Music Demo running on gCore.  It's running on lvgl v9.0.0 so shows how to include the LCD and touchscreen drivers on that version (which has some differences from previous releases).

Code can be found in this repository.

This demo is used to benchmark LVGL running on various platforms when they are submitted for qualification (something I'm not sure I'll do as it is $900USD as you've just read about the economics of this project).  I didn't expect gCore to work as well as some of the boards with GPUs and much higher speed interfaces to the LCD but I was disappointed in my initial results - and a bit confused.

This demo has run on a couple of other ESP32 based boards that use the ESP32 parallel interface to directly drive the LCD controller.  I expected them to be slightly faster but not over twice as fast, especially since when I put my scope on the CSN signal to the LCD I see that the code is not limited by transfer speed to the LCD.  I verified this by slowing the SPI clock speed from 80 MHz to 40 Mhz with very little difference.  There are large periods of time between transfers which indicates a lot of compute is happening in the single-threaded demo code.  Because the SPI transfers are handled by a DMA engine then I can surmise that the demo is not being slowed by the LCD update.  Since I'm running the same chip as these other boards I would expect they have the same time spent in the compute parts of the code.  I wonder if I'm missing some type of optimization but not sure what.  I'm running the ESP32 at 240 MHz with 80 MHz QIO flash access, internal RAM and  the compiler set for performance optimization.  Bears some more investigation I think.

In other news I was able to issue a PR for the gCore python ILI9488 driver into the official lv_micropython project so now it's an officially supported display in that project.