乐鑫技术交流
直播中

发生的方式

8年用户 1247经验值
擅长:处理器/DSP
私信 关注
[问答]

esp32s3语音识别afe_handle->feed(afe_data, audio_buffer); 出现看门狗超时怎么解决?



  • Guru Meditation Error: Core  0 panic'ed (Interrupt wdt timeout on CPU0).

  • Core  0 register dump:
  • PC      : 0x40380439  PS      : 0x00050134  A0      : 0x4037fd74  A1      : 0x3fca1e90
  • 0x40380439: i2c_isr_handler_default at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/driver/i2c/i2c.c:520
  • 0x4037fd74: _xt_lowint1 at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/xtensa/xtensa_vectors.S:1240

  • A2      : 0x3c3d118c  A3      : 0x3fca166c  A4      : 0x00000001  A5      : 0x00000008
  • A6      : 0x00000010  A7      : 0x3fca165c  A8      : 0x00000000  A9      : 0x00000001
  • A10     : 0x60027000  A11     : 0x3fca1ea0  A12     : 0x3fcb307c  A13     : 0x00000001
  • A14     : 0x3fcb318c  A15     : 0x3fcb307c  SAR     : 0x0000001e  EXCCAUSE: 0x00000005
  • EXCVADDR: 0x00000000  LBEG    : 0x40056f5c  LEND    : 0x40056f72  LCOUNT  : 0xffffffff
  • 0x40056f5c: memcpy in ROM
  • 0x40056f72: memcpy in ROM

  • Core  0 was running in ISR context:
  • EPC1    : 0x403805f9  EPC2    : 0x4037fd6b  EPC3    : 0x4038042b  EPC4    : 0x40380439
  • 0x403805f9: i2c_isr_handler_default at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/driver/i2c/i2c.c:580
  • 0x4037fd6b: _xt_lowint1 at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/xtensa/xtensa_vectors.S:1240
  • 0x4038042b: i2c_ll_get_intr_mask at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/hal/esp32s3/include/hal/i2c_ll.h:254
  • (inlined by) i2c_isr_handler_default at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/driver/i2c/i2c.c:515
  • 0x40380439: i2c_isr_handler_default at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/driver/i2c/i2c.c:520



  • Backtrace: 0x40380436:0x3fca1e90 0x4037fd71:0x3fca1ed0 0x403805f6:0x3fcc7550 0x4203c268:0x3fcc7560 0x420392e2:0x3fcc75c0 0x4203949c:0x3fcc75e0 0x4200dc09:0x3fcc7600
  • 0x40380436: i2c_isr_handler_default at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/driver/i2c/i2c.c:522
  • 0x4037fd71: _xt_lowint1 at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/xtensa/xtensa_vectors.S:1240
  • 0x403805f6: i2c_ll_read_rxfifo at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/hal/esp32s3/include/hal/i2c_ll.h:612 (discriminator 1)
  • (inlined by) i2c_isr_handler_default at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/driver/i2c/i2c.c:558 (discriminator 1)
  • 0x4203c268: esp_bss_hps16fft_process at /home/sunxiangyu/workspace/esp_sr_lib/build/../components/esp_audio_processor/microphone_array_speech_enhancement/esp_bss_hps16fft.c:218 (discriminator 3)
  • 0x420392e2: afe_feed_aec_init_false at /home/sunxiangyu/workspace/esp_sr_lib/build/../components/esp_audio_front_end/esp_afe_sr.c:535
  • 0x4203949c: afe_feed at /home/sunxiangyu/workspace/esp_sr_lib/build/../components/esp_audio_front_end/esp_afe_sr.c:605
  • 0x4200dc09: audio_feed_task at D:/VsCodeProgram/esp32-s3-lcd-ev-board/examples/86HF_Screen_Sr/main/app/app_sr.c:154



  • Core  1 register dump:
  • PC      : 0x403822d6  PS      : 0x00060434  A0      : 0x820037d1  A1      : 0x3fcaafb0
  • 0x403822d6: esp_cpu_wait_for_intr at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/esp_hw_support/cpu.c:145

  • A2      : 0x00000000  A3      : 0x00000001  A4      : 0x8038651a  A5      : 0x3fcaaee0
  • A6      : 0x00060023  A7      : 0x00000003  A8      : 0x82086b2e  A9      : 0x3fcaaf80
  • A10     : 0x00000000  A11     : 0x0000abab  A12     : 0x00000000  A13     : 0x3fcab160
  • A14     : 0x3fca5cf8  A15     : 0x00000001  SAR     : 0x00000000  EXCCAUSE: 0x00000005
  • EXCVADDR: 0x00000000  LBEG    : 0x00000000  LEND    : 0x00000000  LCOUNT  : 0x00000000


  • Backtrace: 0x403822d3:0x3fcaafb0 0x420037ce:0x3fcaafd0 0x403876d4:0x3fcaaff0
  • 0x403822d3: xt_utils_wait_for_intr at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/xtensa/include/xt_utils.h:81
  • (inlined by) esp_cpu_wait_for_intr at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/esp_hw_support/cpu.c:132
  • 0x420037ce: esp_vApplicationIdleHook at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/esp_system/freertos_hooks.c:59
  • 0x403876d4: prvIdleTask at D:/ESPIDF/5.2.1/v5.2.1/esp-idf/components/freertos/FreeRTOS-Kernel/tasks.c:4273 (discriminator 1)





  • ELF file SHA256: df0455fe8





  • static void audio_feed_task(void *arg)
  • {
  •     size_t bytes_read = 0;
  •     esp_afe_sr_data_t *afe_data = (esp_afe_sr_data_t *) arg;
  •     int audio_chunksize = afe_handle->get_feed_chunksize(afe_data);
  •     int feed_channel = 3;
  •     ESP_LOGI(TAG, "audio_chunksize=%d, feed_channel=%d", audio_chunksize, feed_channel);

  •     /* Allocate audio buffer and check for result */
  •     int16_t *audio_buffer = heap_caps_malloc(audio_chunksize * sizeof(int16_t) * feed_channel, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
  •     if (NULL == audio_buffer) {
  •         esp_system_abort("No mem for audio buffer");
  •     }
  •     g_sr_data->afe_in_buffer = audio_buffer;

  •     while (true) {
  •         if (NEED_DELETE    xEventGroupGetBits(g_sr_data->event_group)) {
  •             xEventGroupSetBits(g_sr_data->event_group, FEED_DELETED);
  •             vTaskDelete(NULL);
  •         }

  •         /* Read audio data from I2S bus */
  •         bsp_extra_i2s_read((char *)audio_buffer, audio_chunksize * I2S_CHANNEL_NUM * sizeof(int16_t), bytes_read, portMAX_DELAY);

  •         /* Save audio data to file if record enabled */
  •         if (g_sr_data->b_record_en    (NULL != g_sr_data->fp)) {
  •             fwrite(audio_buffer, 1, audio_chunksize * I2S_CHANNEL_NUM * sizeof(int16_t), g_sr_data->fp);
  •         }

  •         /* Channel Adjust */
  •         for (int  i = audio_chunksize - 1; i >= 0; i--) {
  •             audio_buffer[i * 3 + 2 = 0;
  •             audio_buffer[i * 3 + 1 = audio_buffer[i * 2 + 1;
  •             audio_buffer[i * 3 + 0 = audio_buffer[i * 2 + 0;
  •         }

  •         /* Feed samples of an audio stream to the AFE_SR */
  •         afe_handle->feed(afe_data, audio_buffer);
  •     }
  • }




回帖(1)

凤求凰

2024-7-19 17:33:27
从您提供的错误信息来看,您的ESP32-S3设备在执行语音识别时遇到了看门狗超时问题。这通常是由于程序在某个地方卡住,导致无法及时喂狗(即调用看门狗定时器的喂狗函数)。以下是一些建议来解决这个问题:

1. **检查音频缓冲区大小**:确保您传递给`afe_handle->feed(afe_data, audio_buffer)`的`audio_buffer`大小足够大,以避免在处理过程中出现缓冲区溢出或不足的情况。

2. **优化代码逻辑**:检查您的代码逻辑,确保在处理音频数据时没有出现死循环或长时间阻塞的操作。这可能导致看门狗超时。

3. **检查中断处理**:从错误信息中可以看到,看门狗超时发生在中断处理函数`i2c_isr_handler_default`中。请检查您的I2C通信是否正常,以及中断处理函数是否正确处理了所有可能的情况。

4. **增加看门狗超时时间**:如果上述方法都无法解决问题,您可以尝试增加看门狗的超时时间。这可以通过修改看门狗定时器的配置来实现。但请注意,这并不是解决问题的根本方法,而是暂时缓解问题。

5. **使用调试工具**:使用ESP-IDF的调试工具(如GDB)来定位问题发生的具体位置。这可以帮助您更准确地找到导致看门狗超时的原因。

6. **查看ESP-IDF版本**:您提到使用的是ESP-IDF 5.2.1版本。请检查是否有更新的版本可用,或者查看相关论坛和文档,看看是否有其他用户遇到类似问题并提供了解决方案。

7. **硬件检查**:检查您的ESP32-S3硬件连接是否正确,以及是否有足够的电源供应。硬件问题有时也会导致看门狗超时。

通过以上步骤,您应该能够找到导致看门狗超时的原因,并采取相应的措施来解决问题。
举报

更多回帖

×
20
完善资料,
赚取积分