ESP32-S3 在Platformio实现单步调试

大家好,笔者最近在使用ESP32-S3时,想要在Platformio上实现JTAG的单步调试遇到了很多困难,今天才得以实现,故做此纪录。

在Platformio(下称PIO)上调试时,我们首先需要修改一下platformio.ini的内容

至于具体如何修改这个文件,大家可以参考官方文档,勤用翻译:

Section [env] — PlatformIO latest documentation

笔者这里使用的是ESP32-S3自带的USB口进行JTAG调试(不需要外接J-LINK等JTAG模块),所以只添加了断点初始化设置,否则进入调试会停在奇怪的地方

debug_init_break = tbreak setup

如果大家想使用J-LINK,可能需要加上

debug_tool = jlink

有时候jlink调试速度过快还会出现问题,大家也可以尝试修改调试速度

debug_speed = 500 //单位KHZ

笔者前几天使用jlink时老是提示一大堆错误,以下是错误代码:
 


Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
adapter speed: 5000 kHz

Info : tcl server disabled
Info : telnet server disabled
Info : J-Link V9 compiled Mar  2 2018 17:07:57
Info : Hardware version: 9.40
Info : VTarget = 3.296 V
Info : clock speed 5000 kHz
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: esp32s3.cpu0: IR capture error; saw 0x00 not 0x01
Warn : Bypassing JTAG setup events due to errors
Error: Unexpected OCD_ID = 00000000
Warn : target esp32s3.cpu0 examination failed
Error: Unexpected OCD_ID = 00000000
Warn : target esp32s3.cpu1 examination failed
Info : starting gdb server for esp32s3.cpu0 on pipe
Info : accepting 'gdb' connection from pipe
Error: Target not examined yet
Error executing event gdb-attach on target esp32s3.cpu0:

Warn : No symbols for FreeRTOS!
Error: Target not halted
Error: auto_probe failed
Error: Connect failed. Consider setting up a gdb-attach event for the target to prepare target for GDB connect, or use 'gdb_memory_map disable'.
Error: attempted 'gdb' connection rejected
Error: error during select: Unknown error
.pioinit:11: Error in sourced command file:
Remote communication error.  Target disconnected.: Success.

笔者上网查询,认为是Openocd没有正确配置的问题,并且也更新了ESP32-S3官方jtag驱动

首先是Openocd的配置:

笔者在cmd中输入openocd --version,提示没有openocd,应该是环境变量没有配置。我们找到PIO安装时自带的oepnocd,一般来说路径为:

C:\Users\用户名\.platformio\packages\tool-openocd-esp32\bin

然后我们在系统环境变量,Path中添加这个路径,之后重启就可以在pio中使用了

接着是JTAG驱动:

我们先卸载原本JTAG驱动,之后管理员权限运行PowerShell,在其中运行:
 

Invoke-WebRequest 'https://dl.espressif.com/dl/idf-env/idf-env.exe' -OutFile .\idf-env.exe; .\idf-env.exe driver install --espressif

重启你的电脑

最后在PIO中F5就可以开始你的调试了,希望可以帮助大家解决问题!

参考文献:
JTAG 调试 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 (espressif.com)

Section [env] — PlatformIO latest documentation

Configure ESP32-S3 Built-in JTAG Interface - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 (espressif.com)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值