raybbs 2024-03-11 01:04 采纳率: 33.3%
浏览 144

esp32运行lvgl报错stack overflow

我用esp32s3在Arduino IDE下跑lvgl 9.0的官方例程,板子不断重启,错误提示如下。看到主要错误是 A stack overflow in task loopTask has been detected,请问该如何解决呢,谢谢。

00:54:40.344 -> ELF file SHA256: 1a97fc9fddb00cbb
00:54:40.344 ->
00:54:40.829 -> Rebooting
00:54:40.863 -> ESP-ROM:esp32s3-20210327
00:54:40.863 -> Build:Mar 27 2021
00:54:40.863 -> rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
00:54:40.863 -> Saved PC:0x42050b82
00:54:40.863 -> SPIWP:0xee
00:54:40.863 -> mode:DIO, clock div:1
00:54:40.863 -> load:0x3fce3808,len:0x44c
00:54:40.863 -> load:0x403c9700,len:0xbd8
00:54:40.863 -> load:0x403cc700,len:0x2a80
00:54:40.863 -> entry 0x403c98d0
00:54:41.023 ->
00:54:41.056 -> ERROR A stack overflow in task loopTask has been detected.
00:54:41.088 ->
00:54:41.088 ->
00:54:41.088 -> Backtrace: 0x40377926:0x3fce4140 0x4037b001:0x3fce4160 0x4037dd3a:0x3fce4180 0x4037c848:0x3fce4200 0x4037b0b8:0x3fce4230 0x4037b0ae:0xd974a35c |<-CORRUPTED

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-11 01:04
    关注

    引自免费微信小程序:皆我百晓生

    在ESP32S3上运行LVGL 9.0时遇到stack overflow错误,通常意味着分配给loopTask任务的栈空间不足。loopTask是Arduino环境下主循环所在的FreeRTOS任务,当LVGL创建的对象、处理事件或执行其他图形操作占用栈空间过大时,就可能导致栈溢出。

    解决这个问题,你可以尝试以下几种方法:

    1. 增大loopTask的栈大小: 在setup()函数之前添加以下代码来增加loopTask的任务栈大小(例如设置为8KB):

      #include <Arduino.h>
      #include <esp_task_wdt.h>
      
      void setup() {
        // 增加loopTask栈大小
        uxTaskGetStackHighWaterMark(NULL); // 获取当前栈使用情况(可选)
        vTaskIncreaseStackSize(NULL, 8 * 1024); // 将栈大小增加到8KB
      
        // 其他初始化代码...
      }
      

      注意:vTaskIncreaseStackSize可能在某些版本的ESP-IDF中不可用,此时你可能需要在项目配置文件(如platformio.inisdkconfig.h)中直接设置全局任务栈大小。

    2. 优化LVGL配置: 减少LVGL使用的内存资源,可以通过降低屏幕分辨率、减少字体数量、限制同时显示对象的数量等方法实现。在LVGL初始化阶段,可以调整相关参数。

    3. 使用动态内存分配: 如果你的应用允许,尽量将静态分配的资源改为动态分配,这样可以在运行时根据实际需求分配内存,而不是一次性占用大量栈空间。

    4. 检查代码中的递归或其他可能导致栈深度增加的操作: 确保没有无限制递归或者其他可能导致栈空间不断增长的操作。

    5. 升级到兼容LVGL 9.0且针对ESP32S3优化的库版本: 确认你使用的LVGL库和ESP32 Arduino Core库是否已针对ESP32S3做了充分优化。

    请逐一排查并尝试上述解决方案,并根据实际情况进行调整。如果问题仍然存在,请进一步分析 LVGL 应用的具体场景,找出消耗栈空间最多的部分进行优化。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月11日

悬赏问题

  • ¥50 求大神教题,这个代码和讲解思路都怎么写呀,完全卡住了
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument