ESP32-WROOM-32E(16MB)JTAG编程报错求助:Flash映射获取失败
ESP32-WROOM-32E(16MB)JTAG编程故障排查
故障现象
- 执行JTAG操作时持续弹出
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED错误,但流程可继续推进,判定为非致命假报错 - 出现
Error: Failed to get flash maps (4294967290)!和Warn : Failed to get flash mappings (-4)!错误,无官方文档明确成因 - 编程完成后校验失败,终端提示目标与文件哈希值不匹配,最终编程失败
完整终端输出(中文翻译版)
正在执行任务: openocd -d2 -f C:\Users\Dev\.espressif\tools\openocd-esp32\v0.11.0-esp32-20220706\openocd-esp32\share\openocd\scripts\interface\ftdi\esp32_devkitj_v1.cfg -f C:\Users\Dev\.espressif\tools\openocd-esp32\v0.11.0-esp32-20220706\openocd-esp32\share\openocd\scripts\board\esp-wroom-32.cfg -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/bootloader/bootloader.bin 0x1000 verify' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/partition_table/partition-table.bin 0x8000 verify' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/ota_data_initial.bin 0xd000 verify' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/100_216_MyProject.bin 0x10000 verify' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/100_216_MyProject.bin 0x190000 verify;' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/log_spiffs.bin 0x319000 reset exit' 片上调试器 OpenOCD v0.11.0-esp32-20220706(2022-07-06 15:48) 基于GNU GPL v2协议发布 如需提交Bug报告,请查阅 http://openocd.org/doc/doxygen/bugs.html 调试级别: 2 适配器速度: 20000 kHz 警告: boards/esp-wroom-32.cfg已被弃用,未来版本可能会移除 错误: libusb_open() 调用失败,错误码LIBUSB_ERROR_NOT_SUPPORTED 信息: ftdi: 如果在更高适配器时钟下遇到问题,尝试执行命令 "ftdi tdo_sample_edge falling" 信息: 时钟速度 20000 kHz 信息: JTAG接口: esp32.cpu0 检测到目标设备: 0x120034e5 (厂商: 0x272 (Tensilica), 部件: 0x2003, 版本: 0x1) 信息: JTAG接口: esp32.cpu1 检测到目标设备: 0x120034e5 (厂商: 0x272 (Tensilica), 部件: 0x2003, 版本: 0x1) 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40000400,调试原因=00000001 信息: [esp32.cpu1] 目标已暂停,程序计数器PC=0x40000400,调试原因=00000000 信息: 为esp32.cpu0启动gdb服务器,端口3333 信息: 正在监听端口3333的gdb连接请求 信息: JTAG接口: esp32.cpu0 检测到目标设备: 0x120034e5 (厂商: 0x272 (Tensilica), 部件: 0x2003, 版本: 0x1) 信息: JTAG接口: esp32.cpu1 检测到目标设备: 0x120034e5 (厂商: 0x272 (Tensilica), 部件: 0x2003, 版本: 0x1) 信息: [esp32.cpu0] 请求目标暂停并执行软复位 信息: [esp32.cpu0] 调试控制器已复位 信息: [esp32.cpu0] 核心已复位 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x500000CF,调试原因=00000000 信息: 设置GDB目标为'esp32.cpu0' 信息: [esp32.cpu1] 请求目标暂停并执行软复位 信息: [esp32.cpu0] 核心已复位 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40000400,调试原因=00000000 信息: [esp32.cpu1] 调试控制器已复位 信息: [esp32.cpu1] 核心已复位 信息: [esp32.cpu1] 目标已暂停,程序计数器PC=0x40000400,调试原因=00000000 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40092612,调试原因=00000001 错误: 获取Flash映射失败(4294967290)! 警告: 获取Flash映射失败(-4)! 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40092612,调试原因=00000001 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40092612,调试原因=00000001 信息: 自动检测到Flash bank 'esp32.cpu0.flash' 大小为4096 KB 信息: 使用Flash bank 'esp32.cpu0.flash',大小4096 KB 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40092612,调试原因=00000001 错误: 获取Flash映射失败(4294967290)! 警告: 获取Flash映射失败(-4)! 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40092612,调试原因=00000001 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40092612,调试原因=00000001 信息: 自动检测到Flash bank 'esp32.cpu1.flash' 大小为4096 KB 信息: 使用Flash bank 'esp32.cpu1.flash',大小4096 KB ** 编程开始 ** 错误: 等待目标暂停超时 信息: [esp32.cpu0] 目标已暂停,程序计数器PC=0x40064AFB,调试原因=00000000 错误: xtensa_wait_algorithm: 目标未暂停 0,pc 0x40064afb,ps 0x60025 错误: 等待算法执行失败(-302)! 错误: 算法运行失败(-302)! 错误: 目标正在执行其他算法 错误: 启动算法失败(-4)! 信息: 性能统计: 87.933毫秒内擦除20480字节 错误: 目标正在执行其他算法 错误: 启动算法失败(-4)! 信息: 性能统计: 75.91毫秒内写入20480字节(包含数据传输时间) ** 编程完成,耗时41626毫秒 ** ** 校验开始 ** 错误: 目标正在执行其他算法 错误: 启动算法失败(-4)! 信息: 性能统计: 79.046毫秒内完成Flash校验 错误: **** 校验失败! **** 错误: target_hash 7cf29e...19dda 错误: file_hash: d116d8...ed7758 embedded:startup.tcl:1184: 错误: ** 校验失败 ** 在过程 'program_esp' 中 在文件 "C:/Users/Dev/.espressif/tools/openocd-esp32/v0.11.0-esp32-20220706/openocd-esp32/bin/../share/openocd/scripts/target/esp_common.cfg" 第149行调用的过程 'program_error' 在文件 "embedded:startup.tcl" 第1184行 * 终端进程 "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command openocd -d2 -f C:\Users\Dev\.espressif\tools\openocd-esp32\v0.11.0-esp32-20220706\openocd-esp32\share\openocd\scripts\interface\ftdi\esp32_devkitj_v1.cfg -f C:\Users\Dev\.espressif\tools\openocd-esp32\v0.11.0-esp32-20220706\openocd-esp32\share\openocd\scripts\board\esp-wroom-32.cfg -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/bootloader/bootloader.bin 0x1000 verify' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/partition_table/partition-table.bin 0x8000 verify' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/ota_data_initial.bin 0xd000 verify' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/100_216_MyProject.bin 0x10000 verify' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/100_216_MyProject.bin 0x190000 verify;' -c 'program_esp C:/_PROJECTS/MyProject/firm/oda-100-100_MyProject/build/log_spiffs.bin 0x319000 reset exit' " 已终止,退出代码: 1. * 终端将被任务复用,按任意键关闭。
解决建议
- libusb假报错:忽略该错误,或升级OpenOCD至最新稳定版,旧版本Windows环境易出现此类兼容问题
- Flash映射错误:
- 修正工程Flash配置,确保设置为16MB(0x1000000字节)——当前终端显示自动检测为4MB,与实际硬件不匹配是核心问题
- 替换弃用的
esp-wroom-32.cfg为对应型号配置文件(如esp32-wroom-32e.cfg),或手动在脚本中添加set ESP32_FLASH_SIZE 16MB指定容量 - 降低JTAG适配器速度,将
adapter speed 20000改为adapter speed 5000或更低,解决通信不稳定导致的映射获取失败
- 校验失败:上述Flash容量不匹配会直接导致哈希校验错误,修正配置后重新编译工程并执行编程操作
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

