You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32出现FreeRTOS看门狗超时及Guru Meditation Error求助

排查ESP32-S2的中断看门狗超时错误

看起来你遇到了ESP32-S2的中断看门狗超时触发的panic问题,先帮你拆解下错误日志里的关键信息,再说说可能的原因和排查方向:

Guru Meditation Error: Core  1 panic'ed (Interrupt wdt timeout on CPU1). 

Core  1 register dump:
PC      : 0x4008c936  PS      : 0x00060735  A0      : 0x8008b8ae  A1      : 0x3ffbf25c  
A2      : 0x3ffba74c  A3      : 0x3ffb97b8  A4      : 0x00000004  A5      : 0x00060723  
A6      : 0x00060723  A7      : 0x00000001  A8      : 0x3ffb97b8  A9      : 0x00000019  
A10     : 0x3ffb97b8  A11     : 0x00000019  A12     : 0x3ffc2f24  A13     : 0x00060723  
A14     : 0x007bf418  A15     : 0x003fffff  SAR     : 0x00000010  EXCCAUSE: 0x00000006  
EXCVADDR: 0x00000000  LBEG    : 0x4008491d  LEND    : 0x40084925  LCOUNT  : 0x00000027  
Core  1 was running in ISR context:
EPC1    : 0x400e2af7  EPC2    : 0x00000000  EPC3    : 0x00000000  EPC4    : 0x00000000


Backtrace: 0x4008c933:0x3ffbf25c |<-CORRUPTED

  #0  0x4008c933:0x3ffbf25c in vListInsert at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/freertos/list.c:183


Core  0 register dump:
PC      : 0x4008cad3  PS      : 0x00060035  A0      : 0x8008b4d7  A1      : 0x3ffbeb3c
A2      : 0x3ffbf418  A3      : 0xb33fffff  A4      : 0x0000abab  A5      : 0x00060023
A6      : 0x00060021  A7      : 0x0000cdcd  A8      : 0x0000abab  A9      : 0xffffffff  
A10     : 0x00000000  A11     : 0x00000000  A12     : 0x3ffc2d34  A13     : 0x00000007
A14     : 0x007bf418  A15     : 0x003fffff  SAR     : 0x0000001a  EXCCAUSE: 0x00000006  
EXCVADDR: 0x00000000  LBEG    : 0x00000000  LEND    : 0x00000000  LCOUNT  : 0x00000000


Backtrace: 0x4008cad0:0x3ffbeb3c |<-CORRUPTED

  #0  0x4008cad0:0x3ffbeb3c in compare_and_set_native at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_hw_support/include/soc/compare_set.h:25
      (inlined by) spinlock_acquire at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_hw_support/include/soc/spinlock.h:103
      (inlined by) xPortEnterCriticalTimeout at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/freertos/port/xtensa/port.c:288




ELF file SHA256: 90689eca1e9c1ace

错误核心分析

这个错误是中断看门狗(Interrupt WDT)超时,它的作用是监控中断服务程序(ISR)的执行时长——一旦ISR运行时间超过阈值,就会触发panic强制重启。从日志能看出:

  • Core 1当时正处于ISR上下文,而且栈已经损坏(|<-CORRUPTED),最后执行到FreeRTOS的vListInsert函数;
  • Core 0在尝试获取自旋锁时出问题,说明系统的中断处理或任务调度逻辑已经出现异常。

可能的原因

  • ISR执行时间过长:你的中断服务程序里可能包含了耗时操作(比如大量计算、阻塞调用甚至死循环),超过了中断看门狗的默认超时时间。ISR的设计原则是快速退出,只做必要的触发/标记操作,复杂逻辑应该交给后台任务处理。
  • 错误调用非ISR安全的FreeRTOS API:比如在ISR里直接调用vTaskDelay、xQueueSend这类阻塞函数,必须使用带FromISR后缀的版本(比如xQueueSendFromISR),否则会破坏FreeRTOS的调度逻辑。
  • 栈溢出:任务栈或ISR栈空间不足,导致栈数据损坏,进而引发系统崩溃和看门狗超时。尤其是和中断相关的任务,栈大小设置可能不够用。
  • 共享资源访问冲突:ISR和任务同时访问共享资源时,没有正确使用同步机制(比如自旋锁、互斥量),导致竞态条件,造成系统卡死。Core 0的栈回溯显示它在获取自旋锁时出问题,这很可能和共享资源的不当访问有关。

排查建议

  1. 检查ISR代码:把ISR里的耗时操作移除,替换为给后台任务发通知(比如用xTaskNotifyFromISR),确保ISR能快速退出。
  2. 调整栈大小与开启栈检测:在menuconfig中打开CONFIG_FREERTOS_CHECK_STACKOVERFLOW选项,开启栈溢出检测;同时增大相关任务(尤其是中断关联任务)的栈大小试试。
  3. 规范共享资源访问:如果ISR和任务都要访问同一个变量或硬件,必须用同步机制:ISR里用自旋锁(注意不能长时间持有),任务里用互斥量或自旋锁,避免竞态条件。
  4. 逐步排查代码:尝试注释掉部分功能模块,看错误是否消失,以此定位出问题的代码段。如果能提供中断处理、任务调度相关的代码片段,能更精准地找到问题所在。

内容的提问来源于stack exchange,提问作者Albino Almeida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:16:35