Description
Hey there! I just started to work with LVGL and got a problem. The problem is that I am trying to create indev_drv
to control the UI, but trace stops in lv_indev_read_timer_cb
which is located in lv_indev.c
.
void lv_indev_read_timer_cb(lv_timer_t* timer)
{
INDEV_TRACE("begin");
lv_indev_data_t data;
indev_act = timer->user_data;
if (indev_act->driver->disp == NULL) return;
indev_proc_reset_query_handler(indev_act);
if (indev_act->proc.disabled) return;
if (indev_act->driver->disp->prev_scr != NULL) return; // <- Error here
bool continue_reading;
...
The error is simple: Guru Meditation Error: Core 1 panic'ed (LoadProhibited)
.
Maybe error description from the official espressif site will help. Here it is:
LoadProhibited, StoreProhibited
These CPU exceptions happen when an application attempts to read from or write to an invalid memory
location. The address which has been written/read is found in the EXCVADDR register in the register
dump. If this address is zero, it usually means that the application has attempted to dereference a NULL
pointer. If this address is close to zero, it usually means that the application has attempted to access a
member of a structure, but the pointer to the structure is NULL. If this address is something else (garbage
value, not in 0x3fxxxxxx - 0x6xxxxxxx range), it likely means that the pointer used to access the data is
either not initialized or has been corrupted.
What MCU/Processor/Board and compiler are you using?
I use ESP32 with 4MB flash and platformio.
What LVGL version are you using?
I use 8.3.4.
What do you want to achieve?
I want to let it work correctly.
Code to reproduce
lv_indev_drv_t indev_drv;
lv_indev_drv_init(&indev_drv);
indev_drv.type = LV_INDEV_TYPE_ENCODER;
indev_drv.read_cb = drv_read_handler;
lv_indev_drv_register(&indev_drv);
I will appreciate any help too much!