嵌入式技术论坛
直播中

李桂英

7年用户 1375经验值
私信 关注
[问答]

RT-Thread加入lvgl后加载显示驱动的时候系统跑飞了是何原因?

求助问题:rt-thread加入lvgl后—加载显示驱动的时候系统跑飞了,原因不明,细节如下:
希望各位帮忙判断判断!
1.首先:我确定我的LVGL裸机工程,是正常显示的;使用ic是新唐M483KIADE;
2.jpg
其次:我先移植了LVGL工程,跑了点灯任务500ms,也是正常的(延时我用的是滴答),1ms定时器跑lv心跳
在次基础上,我将两者合并,发现LVGL跑飞hardfault了,仿真查看,跑飞了
锁定是在lv_port_disp_init -> lv_disp_drv_register(&disp_drv):
2.jpg
为了隔离干扰,我的main把rt-thread的内容全部去掉了
int32_t main(void)
{
    bsp_init();
    lv_init();              // lvgl系统初始化
    lv_port_disp_init();  // lvgl显示接口初始化,放在lv_init()的后面
    lv_port_indev_init(); // lvgl输入接口初始化,放在lv_init()的后面
    lv_example_led_1();
}
好纳闷啊,问题根源在哪里,查了两天啦,没查出根源出来!!!!求助求助分析分析!


回帖(8)

王鹏

2023-2-9 14:15:56
你的startup.s里Stack_Size设置的多少?
lv_tick_inc放在中断里执行很耗时间的,而且对堆栈的需求也大,使用默认值很可能不够,不建议这么使用
举报

李桂英

2023-2-9 14:16:06
0x800,应该是够用的,我试图修改Stack_Size=0x800,Heap_Size=0x400,无济于事啊
举报

李桂英

2023-2-9 14:16:14
lv_tick_inc的问题,我试图新增一个LVGL-thread来任务,延迟1ms后调用lv_tick_inc(1),发现还是跑飞哦
举报

王鹏

2023-2-9 14:16:28
配置要求
静态 RAM 使用量:0~2 kB,取决于使用的功能和对象类型
堆: > 2kB (> 建议使用 8 kB)
动态数据(堆): > 2 KB (> 如果使用多个对象,建议使用 16 kB). 在 lv_conf.h 文件中配置 LV_MEM_SIZE 生效。
举报

王鹏

2023-2-9 14:16:34
Stack 0x800只有2kB,建议是大于8kB,如果使用RTTHREAD的包导入就是线程堆栈最好能分配到8Kb以上
Heap 0x400只有1kB,也比要求的>2kB要小
举报

王鹏

2023-2-9 14:16:42
你在rtthread上运行lv_task_handler的线程堆栈分配了多少
举报

李桂英

2023-2-9 14:16:51
512,我疏忽了,马上修改试一试
举报

李桂英

2023-2-9 14:16:56
设置了;
Stack_Size EQU 0x00004000
Heap_Size EQU 0x00002000
举报

更多回帖

发帖
×
20
完善资料,
赚取积分