完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近遇到了一些非常奇怪的问题,希望获得各位大佬的指点,问题出现在移植LVGL的过程中。 我按照如下的过程进行移植: 1、配置为memheap内存管理模式 2、完成初始化SDRAM并挂载到memheap,SDRAM测试正常 3、完成初始化LTDC 测试屏幕驱动正常,完成画点函数测试正常 4、完成初始化触摸芯片代码并测试正常 5、LVGL env环境rtthread部分进行注释,并添加预定义宏使用自己的’lv_conf.h’文件,改到自己的线程中运行 自己线程主要内容如下: void lvgl_c_thread_port(void * pra) { lv_init(); lv_port_disp_init(); lv_port_indev_init(); /*这部分是初始化屏幕内容代码,主要问题出现在这里*/ show_somethings(); /*end*/ while (1) { /* ... */ lv_task_handler(); rt_thread_mdelay(30); } } 该线程需要使用MSH命令启动,启动代码如下 int lvgl_test_thread() { rt_thread_t tid; tid = rt_thread_create("lvgl", lvgl_c_thread_port, RT_NULL, 10240, 20, 5); if (tid) rt_thread_startup(tid); else LOG_E("lvgl thread not start!"); return 0; } MSH_CMD_EXPORT(lvgl_test_thread, lvgl_test_thread); 如果’show_somethings();’为如下代码,则一切正常: lv_obj_t * btn = lv_btn_create(lv_scr_act()); /*Add a button the current screen*/ lv_obj_set_pos(btn, 10, 10); /*Set its position*/ lv_obj_set_size(btn, 120, 50); /*Set its size*/ lv_obj_t * label = lv_label_create(btn); /*Add a label to the button*/ lv_label_set_text(label, "Button"); /*Set the labels text*/ lv_obj_center(label); 如果’show_somethings();’为如下代码,则可能在某次烧录中可以正常运行,而大概率在其他多次烧录中无法完成rtthread系统初始化(系统初始化时,按道理来说没有输入msh命令,所以lvgl线程应当还没有开始运行): lv_demo_widgets(); 这件事情令我非常疑惑,我开始怀疑是否是栈溢出,于是我做了如下修改: |
|
相关推荐
3个回答
|
|
|
|
|
|
感谢你的回答,以下是我的编译器选项,可以的话指教一二。 我能想到的编译但不运行会影响到的应该是栈了,是否还有其他会影响的呢? 不太会看.map,可以的话,可否传授些经验 |
|
|
|
问题的处理还是要从根源寻找 再次Debug,这次找的更深一些,我们从汇编读取data段Flash数据到内存中的栈来看,对应是此处。 从.map文件,我们知道之前出问题的那一个静态变量存放的地址 也就是说从第三次执行CopyDataInit开始将存放该变量的第一个数据。 分别Debug工作正常和工作不正常的两个固件,发现工作正常的可以正常读取Flash中的数据而工作不正常的则不行。 于是开始怀疑编译出的二进制文件有问题,对比以后发现除了存放位置不同,实际数据并没有问题。 开始怀疑下载算法,至此终于找对方向,因为Flash并有单独某个页面加锁一说,故怀疑是否是在某个莫名其妙的时候写入了脏数据。 既然是脏数据,下载算法没有检测到,flash页面没有清零,当然无法写入数据。 执行全片擦除,再次下载,正常运行了! 至此这个莫名其妙卡主我3天的问题终于解决了。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
830 浏览 0 评论
6169 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2808 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
3099 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
33131 浏览 11 评论
73597 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 02:24 , Processed in 0.722178 second(s), Total 76, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号