What simulation shows me does not match what I see on hardware.
More specifically, the code is ported from a project made by a colleague for different hardware. On that original hardware the LVGL behavior does match the simulator. The old project was made using LVGL 8.3.10, but the simulation and new hardware are both using 8.4.0.
I’m looking for ideas about where to look for the difference between the simulation and my hardware. The hardware seems like the most obvious place to look, or maybe a configuration in the simulator that doesn’t match what I am using in the hardware. I can display images on the screen and manipulate them and animate text so I’m fairly confident that my display flush callback driver is working correctly.
What MCU/Processor/Board and compiler are you using?
STM32U5A9 on custom PCB with 1024x768 monochrome display using LTDC and DMA2D with internal SRAM buffer. Compiler is gcc 13.2.Rel1 arm-none-eabi. FreeRTOS is being used in addition to LVGL.
Menu system
Rather than use the LVGL menu system we have created our own using lvgl object created with lv_obj_create() and adding images, text, and callbacks as needed. The code block below shows an example menu structure that is to be displayed.
Main Menu
-> Feature Menu:
About
Exit
On the original hardware the screen is small so only 3 lines are displayed and it will scroll as needed. On the simulator and new hardware the screen is large enough to display the entire menu at once. However, the new hardware only displays a single line - the line that is currently selected/highlighted. And it never shows the “Main Menu” text object.
Screenshot and/or video
This is from the simulator and matches the old hardware.
This is on the new hardware.
My thanks for any suggestions on where to look for this issue. Also my thanks to the creators and contributors of LVGL.