ESP32-S2无法输出至Serial Monitor,报“No core dump partition found!”错误
ESP32-S2 + PlatformIO 串口无输出及核心转储分区错误解决方案
问题概述
使用ESP32-S2芯片搭配VS Code的PlatformIO开发环境,代码上传正常、LCD触摸等硬件功能正常,但存在以下问题:
- Serial Monitor无法输出预期调试内容
- 串口打印错误:
E (696) esp_core_dump_flash: No core dump partition found! - 测试代码需手动引入
<HardwareSerial.h>才能使用Serial功能 - 调整波特率、重启VS Code后问题未解决
启动日志
ESP-ROM:esp32s2-rc4-20191025 Build:Oct 25 2019 rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3ffe6100,len:0x1684 load:0x4004c000,len:0x1018 load:0x40050000,len:0x2f04 entry 0x4004c354 ␛[0;32mI (21) boot: ESP-IDF v4.4.1-405-g6c5fb29c2c 2nd stage bootloader␛[0m ␛[0;32mI (21) boot: compile time 04:22:07␛[0m ␛[0;32mI (22) boot: chip revision: 0␛[0m ␛[0;32mI (25) qio_mode: Enabling default flash chip QIO␛[0m ␛[0;32mI (31) boot.esp32s2: SPI Speed : 80MHz␛[0m ␛[0;32mI (35) boot.esp32s2: SPI Mode : QIO␛[0m ␛[0;32mI (40) boot.esp32s2: SPI Flash Size : 4MB␛[0m ␛[0;32mI (45) boot: Enabling RNG early entropy source...␛[0m ␛[0;32mI (50) boot: Partition Table:␛[0m ␛[0;32mI (54) boot: ## Label Usage Type ST Offset Length␛[0m ␛[0;32mI (61) boot: 0 nvs WiFi data 01 02 00009000 00005000␛[0m ␛[0;32mI (69) boot: 1 otadata OTA data 01 00 0000e000 00002000␛[0m ␛[0;32mI (76) boot: 2 ota_0 OTA app 00 10 00010000 00160000␛[0m ␛[0;32mI (83) boot: 3 ota_1 OTA app 00 11 00170000 00160000␛[0m ␛[0;32mI (91) boot: 4 uf2 factory app 00 00 002d0000 00040000␛[0m ␛[0;32mI (98) boot: 5 ffat Unknown data 01 81 00310000 000f0000␛[0m ␛[0;32mI (106) boot: End of partition table␛[0m ␛[0;32mI (610) esp_image: segment 0: paddr=00010020 vaddr=3f000020 size=0b458h ( 46168) map␛[0m ␛[0;32mI (618) esp_image: segment 1: paddr=0001b480 vaddr=3ffbedb0 size=02fech ( 12268) load␛[0m ␛[0;32mI (621) esp_image: segment 2: paddr=0001e474 vaddr=40024000 size=01ba4h ( 7076) load␛[0m ␛[0;32mI (626) esp_image: segment 3: paddr=00020020 vaddr=40080020 size=234ech (144620) map␛[0m ␛[0;32mI (657) esp_image: segment 4: paddr=00043514 vaddr=40025ba4 size=0920ch ( 37388) load␛[0m ␛[0;32mI (666) esp_image: segment 5: paddr=0004c728 vaddr=50000000 size=00010h ( 16) load␛[0m ␛[0;32mI (672) boot: Loaded app from partition at offset 0x10000␛[0m ␛[0;32mI (672) boot: Disabling RNG early entropy source...␛[0m E (696) esp_core_dump_flash: No core dump partition found! E (696) esp_core_dump_flash: No core dump partition found!
测试代码
#include <HardwareSerial.h> void setup() { Serial.begin(115200); } void loop() { Serial.println("hello"); delay(1000); }
问题分析
- 核心转储分区错误:从启动日志的分区表可见,当前未配置核心转储(core dump)分区,但ESP-IDF默认启用了该功能,导致启动时抛出错误。该错误本身不影响硬件功能,但可能干扰串口初始化流程。
- Serial需手动引入头文件:正常情况下Arduino框架会自动封装Serial对象,无需手动引入
<HardwareSerial.h>,说明项目框架配置可能错误(比如误用纯ESP-IDF框架)或编译缓存异常。 - 串口无输出:可能是串口引脚映射错误、初始化时机不对、串口监视器配置不匹配,或核心转储配置占用了串口资源。
解决方案
1. 禁用核心转储功能(推荐)
在项目的platformio.ini文件中添加编译标志,直接禁用核心转储:
[env:esp32-s2-devkitc-1] platform = espressif32 board = esp32-s2-devkitc-1 framework = arduino build_flags = -DESP_COREDUMP_ENABLE=n ; 禁用核心转储
2. 修复Serial无需手动引入的问题
- 确认
platformio.ini中的framework = arduino,若之前为framework = espidf,需改为arduino框架——纯ESP-IDF框架需手动处理HardwareSerial。 - 清理编译缓存:点击PlatformIO面板中的
Clean按钮,重新编译上传项目。
3. 确保串口正常输出
- 检查硬件引脚:ESP32-S2默认调试串口为UART0,对应引脚GPIO1(TX)和GPIO3(RX),确认接线正确;若使用USB CDC串口(ESP32-S2支持USB虚拟串口),需确保USB线连接正常且设备被识别。
- 优化串口初始化:在setup函数中添加延迟或等待串口就绪的逻辑,避免初始化过早导致输出丢失:
void setup() { delay(1000); // 给串口硬件初始化留足时间 Serial.begin(115200); while(!Serial); // 仅适用于USB CDC串口,等待串口连接完成 } void loop() { Serial.println("hello"); delay(1000); }
- 匹配串口监视器配置:在PlatformIO串口监视器中,确认波特率设置为115200,且选择了正确的串口端口。
内容的提问来源于stack exchange,提问作者AndrewRoman
相关产品推荐
相关产品推荐

