S2 Mini刷ESP USB Bridge固件调试ESP32开发板教程
用S2 Mini实现ESP-PROG的功能通过JTAG调试ESP32开发板。
ESP-PROG涨价,DAPLink编译了支持JTAG的固件,能调试STM32但ESP32踩了不少坑也没调通。最后发现用闲置的S2 Mini就行了。
调试目标是ESP32-WROOM-32UE开发板。程序是简单的点灯程序。
S2 Mini刷ESP USB Bridge固件
ESP USB Bridge是乐鑫官方推出的将S2/S3变成USB转串口/JTAG设备的固件。
为了方便这里直接用已编译好的ESPLink固件。
刷机用到的esptool.py在用PlatformIO编译ESP32程序时已安装,若没有则pip install esptool
即可。
我用的是前者,位于~/.platformio/packages/tool-esptoolpy
,在其目录下建立tmp
文件夹并把ESPLink的三个bin文件复制进去。
USB连接S2 Mini。如果USB串口设备中找不到(特别是新板子),则需手动进入固件下载模式:按住0,按一下RST,等1秒松开0。
执行以下命令进行刷机:
1 | python esptool.py -p /dev/ttyACM0 -b 460800 --before default_reset --after hard_reset --chip esp32s2 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 tmp/bootloader.bin 0x8000 tmp/partition-table.bin 0x10000 tmp/bridge.bin |
其中/dev/ttyACM0
是串口设备名(Win是COMx)。
刷完会自动挂载名为ESPLink的U盘,说明刷机成功。
添加S2 Mini的权限
安装PlatformIO见这篇文章。
Linux系统需要编辑/etc/udev/rules.d/99-platformio-udev.rules
文件,添加以下内容到文件末尾:
1 | # ESPLink |
重启服务。
1 | sudo udevadm control --reload-rules |
建议重启一下系统。
接线
JTAG | Target |
---|---|
TCK(38) | 13 |
TDI(36) | 12 |
TDO(35) | 15 |
TMS(37) | 14 |
RST(33) | EN |
另外串口RXD是5,TXD是6,这里暂时用不上。
配置调试器
PlatformIO创建项目后编辑platformio.ini
:
1 | [platformio] |
调试
打开src/main.c
文件,在delay()这行左边点一下添加断点。
按F5
(Run > Start Debugging)进入调试界面。和STM32几乎立即进入不同,双核的ESP32要等几秒。
反复按F5
(顶栏的Continue),可见到板载LED常亮,按一次灭一次。调试器工作正常。