I am new to this library and have spent 2 days to port library and came across some problems and now I wanted to design my GUI so I tested every example first with my LCD to know my component first. however some of example presented in document page either not working correctly or have hardfault problem.
My hardware is STM32f103rbt6 64K Ram 256K flash on nucleo board
my software is keil V5 using cubemx
my lcd is 240*320 2.8inch tft 8-bit interface 4bit command
examples not work correctly
Keyboard shows but freezes by pressing any key
matrix button does not fit page properly
image example complian about cogwheel image file
examples with hardfault
spinbox
table
tableview
tileview
win
That’s in the lv_examples
repository (rework
branch).
some of example presented in document page either not working correctly or have hardfault problem.
Have you tried them in the PC simulator? Do they crash there? Have you debugged to see where the hardfault occurs?
I am not using PC simulator.
I tested in Keil Debugger in Stm32 in realmicrocontroller
how deeply you need to know where code goes to Hard fault
I checked table example and it goes to hard fault in lv_task_handler
I went into function
/*Tasks with higher priority then the interrupted shall be run in every case*/
else if(task_interrupter) {
if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio > task_interrupter->prio) {
if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) {
task_interrupter =
LV_GC_ROOT(_lv_task_act); /*Check all tasks again from the highest priority */
end_flag = false;
break;
}
}
}
this part runs ok for the first time but in second time in the line
if(lv_task_exec(LV_GC_ROOT(_lv_task_act)))
goes to hardfault
I went into function
in line
if(task->task_cb) task->task_cb(task);
there is a problem
Test if the exact same code works in the PC simulator. If it does, then it is probably an issue with your specific platform, and not LittlevGL itself.
Maybe you have a stack overflow problem?
I checked table example with simulator and It crashed but I checked that two variable been modified from static to normal function vars.
static lv_style_t style_cell1;
static lv_style_t style_cell2;
and this was culprit. If you can explain it that would be great so I learn about it
all other examples works when I increase LV_MEM_SIZE from 2 k to 3k
2-3 kilobytes is not enough memory for any real use of the library. It needs to be at least 16 kilobytes.
The lv_style_t
object can’t go out of scope while LittlevGL is running. If it’s a normal function variable then it goes out of scope when the function returns, but LittlevGL keeps running.
By making it static
you keep it around for the lifetime of the program.
1 Like