How to accelerate the speed of LVGL canvas drawing


Hello, There are a MIPI camera and a MIPI LCD on my board. I want to display the camera frames on the LCD while also showing some labels. I have successfully achieved this using lv_canvas_set_buffer, but the camera frames appear very laggy, with CPU usage above 80% and FPS only at 5.

This may be due to the high computational load of converting camera frames to lv_canvas. Is there any way to make the camera frames display more smoothly?

What MCU/Processor/Board and compiler are you using?

NXP RT1176

What LVGL version are you using?


What do you want to achieve?

Make the camera frames look smooth.

What have you tried so far?

On my previous board, I had two SDRAM modules connected in parallel, achieving a speed of 800MB/s. Additionally, the code was running from the SDRAM. Under this configuration, the camera display was very smooth. However, in my current setup, I am using a HyperRAM with a speed of 400MB/s, and the code is running from a NOR Flash with a speed of 200MB/s.

On the SDRAM board, without enabling any compiler optimizations, the CPU usage was around 80%. Enabling VGLITE reduced the CPU usage to just over 40% and resulted in a very smooth display. However, on the current board, I have already set the compiler optimization level to -O3, and the CPU usage is at 90%. Even after enabling VGLITE, the CPU usage only decreases to around 80%. In this scenario, which factor has a greater impact on the performance, the slower NOR Flash or the slower HyperRAM?

My idea is to manually link some frequently called and time-consuming functions to the internal RAM in order to speed up the conversion process. But I am unsure which functions to link. Can you provide some suggestions or alternative methods to make the camera display smoother?