乐鑫技术交流
直播中

laisvl

8年用户 1087经验值
私信 关注
[问答]

IDF v4.4.2关闭日志输出导致添加中断时panic,为什么?

使用IDF版本v4.4.2.因为业务代码涉及内容比较多不方便升级,只能使用这个版本了。

硬件版本使用ESP32S3-N8R2模组。

问题,在app_main函数第一行调用 esp_log_level_set("*", ESP_LOG_WARN); 如果日志级别是INFO的时候没有问题可以正常运行。如果日志设置为WARN以上级别的时候在一个task函数函数中调用  gpio_isr_handler_add(KEY_SW1_PIN, gpio_isr_handler, (void*) KEY_SW1_PIN);注册一个按键中断的时候导致CPU Panic。

同时在之前测试的时候遇到过在配置页面,关闭ROM log也会导致Panic。麻烦给看一下吧。

日志如下:

--- WARNING: GDB cannot open serial ports accessed as COMx
--- Using \.COM3 instead...
--- idf_monitor on \.COM3 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x39c
load:0x403c9700,len:0x9b8
load:0x403cc700,len:0x27a8
SHA-256 comparison failed:
Calculated: dbaa43c6dc03c8f7a001d74784a6dac40d082488b735a931f22b1d088515d4c3
Expected: 15d1901f36454b1f49ebff6c2a67f681da1cce81d35fb313b9179e27e99f3fee
Attempting to boot anyway...
entry 0x403c98c0
Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.

Core  0 register dump:
PC      : 0x4207edbf  PS      : 0x00060033  A0      : 0x82054c88  A1      : 0x3fcb2380
0x4207edbf: esp_intr_get_cpu at D:/software/Espressif/frameworks/esp-idf-v4.4.2/components/esp_hw_support/intr_alloc.c:704

A2      : 0x00000000  A3      : 0x3fc9e7e4  A4      : 0x3fc9e7e4  A5      : 0x00060023
A6      : 0x00060020  A7      : 0x00000001  A8      : 0x00000000  A9      : 0x3fcb2360
A10     : 0x3fc9bc98  A11     : 0x0000000d  A12     : 0x0000000d  A13     : 0x3fca6960
A14     : 0x02c9bc84  A15     : 0x00ffffff  SAR     : 0x00000013  EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000  LBEG    : 0x00000000  LEND    : 0x00000000  LCOUNT  : 0x00000000


Backtrace:0x4207edbc:0x3fcb23800x42054c85:0x3fcb23a0 0x4037ba96:0x3fcb23c0
0x4207edbc: esp_intr_get_cpu at D:/software/Espressif/frameworks/esp-idf-v4.4.2/components/esp_hw_support/intr_alloc.c:703

0x42054c85: gpio_isr_handler_add at D:/software/Espressif/frameworks/esp-idf-v4.4.2/components/driver/gpio.c:473

0x4037ba96: sw1_key_handler_task at E:/ALIC/code/MountainVIew/Firmware/components/alic_peripherals/key_sw1.c:92
                                                                                                                                                              

回帖(1)

张亮

2024-6-6 18:12:03
从您的描述来看,问题可能与ESP-IDF v4.4.2版本中的日志系统或中断处理有关。以下是一些建议来帮助您解决问题:

1. **检查日志系统**:关闭日志输出可能导致某些关键信息无法显示,这可能会影响系统的稳定性。尝试在关闭日志输出之前,将日志级别设置为较低的级别(如ESP_LOG_DEBUG),以便在出现问题时能够获取更多信息。

2. **检查中断处理**:在您的代码中,您正在注册一个GPIO中断处理函数。请确保中断处理函数正确实现,并且没有导致任何异常行为。此外,检查中断处理函数是否在正确的上下文中调用,以避免潜在的竞态条件。

3. **检查硬件连接**:请确保您的ESP32S3-N8R2模块与按键之间的连接正确无误。错误的硬件连接可能导致系统不稳定,从而导致CPU Panic。

4. **检查ESP-IDF版本**:尽管您提到无法升级ESP-IDF版本,但建议您查看ESP-IDF的官方文档和GitHub仓库,看看是否有与您的问题的已知问题或修复。如果有,您可以尝试应用这些修复,而无需升级整个ESP-IDF版本。

5. **使用其他调试工具**:如果可能的话,尝试使用其他调试工具(如GDB)来获取更多关于CPU Panic的信息。这可能会帮助您找到问题的根源。

6. **简化代码**:尽管您提到业务代码涉及内容较多,但尝试简化代码,逐步添加功能,以便找到导致问题的确切部分。


举报

更多回帖

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