[已解决]ESP-IDF:关于在LVGL中报错:region `dram0_0_seg‘ overflowed时可能出现的原因以及其解决办法

MCU:ESP32S3
CSDK:ESP-IDFV5.0.1
图形:LVGL8.3.5

  • 报错一般如下:
    region `dram0_0_seg' overflowed

第一种原因

在这里插入图片描述

  • 如果你未勾选上图的位置,说明你未使用系统的内存分配方式(stdlib.h),而是用了LVGL的内存分配方式。这时会出现一个问题,lvgl内置内存管理模块初始化的内存池的大小可以自定义设置,若设置过大则会导致报错overflowed。适当减小即可,代价是显示控件减少。
  • 以下为关于LVGL内存分配的两套方案解释(摘自:https://www.rstk.cn/news/358058.html):lvgl的内存分配和释放提供了两套方案,可以通过lv_conf.h头文件中的宏LV_MEM_CUSTOM来控制使用哪个方案,该宏定义值为0,则表示使用lvgl内置的内存分配函数lv_mem_alloc()和lv_mem_free();该宏定义值为1,则表示使用自定义“malloc()/free()/realloc()”,根据代码中的逻辑,其实就是使用系统标准的动态内存分配函数malloc()/free()/realloc(),这些标准函数此处不细说,这里要重点说一下lvgl的内置内存管理的函数。
  • lvgl默认配置就是使用其内置的内存管理函数,根据头文件中定义及相关注释,使用内置的内存管理函数,需要用到内存块大小定义的宏LV_MEM_SIZE,按照注释说明,此值必须大于2kb,此宏的值默认为32U * 1024U,即32kb。此内存大小为lvgl内置内存管理模块初始化的内存池的大小,对后续的界面显示有一定的影响。
  • 在代码中位置如下图:在这里插入图片描述

第二种原因

有可能是因为屏幕的单、双缓冲区设置过大,如下图我如果设置为200,这时就会出现overflowed,调小至适当值即可:
在这里插入图片描述


第三种原因

使用例如自定义组件时显示区域设置过大,申请的内存过大导致overflowed,适当减小组件显示大小即可解决:
在这里插入图片描述


其它可能的原因(遇到了再补充)

其它原因比如static变量过多(一般不会)内存溢出时应该不会超出特别多,如果超出不是特别多的话,就要考虑检查优化下自己的代码了。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用所述,使用Vscode或ESP-IDF CMD打开的设置和配置是一样的,两种方法都可以使用。 根据引用所述,在进行esp-idf配置lvgl,需要做以下几个步骤: 1. 打开lv_fs_fatfs.c文件(路径:lvgl/src/extra/libs/fsdrv/)。 2. 在第10行的位置添加sd_card.h头文件(#include "sd_card.h")。 3. 将第230行的两个DIR修改为FF_DIR。 4. 在第92行处的fs_init(void)函数调用sd_init()函数来初始化sd卡。 这样就完成了esp-idf配置lvgl的过程。请注意,使用这种方式移植文件系统与使用lv_fs_if组件的方式不同。在调用lv_init()函数,已经初始化了SD卡并且挂载了文件系统。因此,不需要更改main.c的任何内容,就可以实现初始化SD卡和文件系统。 如果出现错误,说明下载的lv_esp32_drivers仓库可能不是指定的仓库(不是master主分支仓库)。可以在线查看lv_esp32_drivers/lvgl_helpers.c的内容,确认是否符合要求。由于LVGL的目录结构变化,lvgl_helpers.c文件的内容也可能发生变化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ESP32_esp-idf_lvgl_V8环境搭建移植](https://blog.csdn.net/qq_43588817/article/details/126680595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ESP32在ESP-IDF框架下为LVGL(v8.3)配置SD卡文件系统](https://blog.csdn.net/weixin_42181820/article/details/130199337)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值