VSCODE platformio ESP32-S3 内置 JTAG 接口断点单步调试笔记

ESP32 S3的两种JTAG调试方法

  • ESP32 S3的有两种JTAG调试方法,直接连接板子上的JTAG引脚进行调试,或者用ESP32-S3 内置 JTAG 接口进行调试,这些方法有助于开发者在开发过程中进行更深入的调试。

1、ESP32-S3 内置 JTAG 接口

  • 使用 ESP32-S3 内置 JTAG 接口ESP32-S3 芯片本身就集成了 JTAG 功能,这意味着你可以直接通过 USB 线连接到芯片的 D+ 和 D- 引脚来进行 JTAG 调试,而不需要额外的 JTAG 适配器。这种调试方式较为简便,只需要按照以下步骤操作:

    • 硬件连接:将 USB 线的 D+ 和 D- 引脚连接到 ESP32-S3 的相应引脚上。注意不要将 USB 通信引脚误连到通常用于串行通信的 RxD 和 TxD 引脚上。
    • 软件配置:使用支持 JTAG 调试的工具,如 OpenOCD。配置相应的 OpenOCD 配置文件,指定正确的 JTAG 配置和目标设备。
  • ESP32-S3 系列芯片集成了一个 USB 串口/JTAG 控制器,作为兼容 USB 2.0 全速模式的设备。GPIO19 和 GPIO20 可以分别作为 USB 的 D- 和 D+(通过USB进行直连的方法如以下原理图所示),线上建议预留串联电阻(初始值可为 0 Ω)和对地电容(初始可不上件),并注意靠近芯片端放置。
    在这里插入图片描述

2、外部 JTAG 适配器

在这里插入图片描述

  • 可以使用传统的 JTAG 适配器来实现调试。使用外部 JTAG 适配器的方法包括:硬件连接:连接 JTAG 适配器到 ESP32-S3 的 JTAG 接口,通常包括 TCK, TDI, TDO, TMS, nTRST 等引脚。软件配置:同样使用支持 JTAG 的调试工具,例如 OpenOCD。

内置 JTAG 接口调试过程

vcode + platformio 插件安装与测试

  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

集成jtag驱动安装

在这里插入图片描述

  • 驱动地址:https://dl.espressif.com/dl/idf-driver/idf-driver-esp32-usb-jtag-2021-07-15.zip

  • 解压后右键点击 USB_JTAG_debug_unit.inf 进行安装
    在这里插入图片描述
    在这里插入图片描述

openocd安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

进入jtag模式

eFuse配置与jtag连接

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进行调试

  • PlatformIO项目配置文件如下:
; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32-s3-devkitm-1]
platform = espressif32
board = esp32-s3-devkitm-1
framework = arduino
upload_port = COM7
; upload_speed = 2000000
; monitor_speed = 115200
monitor_port = COM6
debug_tool = esp-builtin
; debug_init_break = break setup
debug_init_break = tbreak setup
build_type = debug
  • 点击调试按钮进行程序调试
    在这里插入图片描述

CG

<think>好的,我需要帮用户解决如何通过两台笔记本电脑使用OpenOCD和VS Code设置ESP32-S3-DevKit-C1的远程调,同时利用MAC地址区分设备。首先,我得回顾用户提供的引用内容,看看有没有相关的指导或已知问题。 用户提到的引用[1]是关于Ubuntu下工具链的标准设置,建议参考ESP-IDF环境搭建指南。这可能涉及到基础环境的配置步骤。引用[2]提到使用VSCode插件和OpenOCD时遇到连接超时的问题,这可能在远程调中出现,需要注意网络配置和端口开放。引用[3]和[4]则涉及VSCode插件和JTAG配置,特别是针对ESP32-S2的设置,可能部分步骤适用于S3型号。 首先,用户的需求分为两台电脑:Laptop1控制调,Laptop2连接硬件。需要远程调,可能涉及到OpenOCD的网络配置,以及如何让Laptop1的VS Code连接到Laptop2的OpenOCD服务。同时,用户提到利用MAC地址来区分设备,这可能是在网络中发现设备时使用,或者在配置中指定目标设备。 接下来,我需要整理步骤: 1. 确保两台电脑在同一网络,能互相通信,可能需要检查防火墙设置,开放3333端口(GDB)、4444(Telnet)、6666(TCL)等,如引用[2]中的错误可能是端口阻塞导致的。 2. 在Laptop2上安装ESP-IDF和OpenOCD,配置JTAG连接,可能参考引用[4]的步骤,但需要调整为ESP32-S3。可能需要确认板子的JTAG引脚连接正确,比如GPIO39-42等。 3. 在Laptop2上启动OpenOCD服务,使其监听网络接口,而不仅仅是本地。默认情况下,OpenOCD可能绑定到localhost,需要修改配置文件使其绑定到0.0.0.0,允许远程连接。 4. 在Laptop1的VS Code中配置调器,指定远程目标为Laptop2的IP地址和端口。同时,可能需要使用MAC地址来唯一标识设备,尤其是在有多个设备时。不过,通常网络中使用IP即可,MAC地址可能用于DHCP静态分配,确保Laptop2的IP固定,方便连接。 5. 测连接,处理可能出现的超时问题,如引用[2]中的错误,需要检查网络连接、端口开放以及OpenOCD配置是否正确。 现在需要考虑的细节: - OpenOCD的配置文件可能需要调整接口为远程访问。例如,在openocd.cfg中添加`bindto 0.0.0.0`,或者启动命令中添加参数`-c "bindto 0.0.0.0"`。 - Laptop2的防火墙需要允许入站连接,特别是TCP端口3333, 4444, 6666。 - 使用MAC地址可能涉及到在路由器中为Laptop2分配静态IP,这样Laptop1可以通过固定的IP访问,而不是动态变化的。但用户的问题中提到“利用MAC地址进行区分”,可能在配置工具时需要指定设备的唯一标识,比如在VS Code中配置多个设备时使用MAC来识别不同的目标。 - 另外,ESP-IDF插件可能需要配置调目标,需要设置正确的远程IP和端口,以及设备类型(ESP32-S3)。 可能的步骤结构: 1. 环境准备(两台电脑安装必要软件,ESP-IDF、VS Code插件等) 2. 网络配置(静态IP分配,防火墙设置) 3. Laptop2的OpenOCD配置(允许远程,启动服务) 4. Laptop1的VS Code调配置(修改launch.json,指定远程IP和端口) 5. 测与调,处理常见问题(如连接超时) 需要参考用户提供的引用,尤其是引用[4]中关于JTAG配置的部分,但针对S3型号进行调整。同时引用[2]中的错误提示说明需要确保OpenOCD正确运行且端口可访问。 总结步骤时,要确保用户能够逐步操作,包括具体的命令和配置文件修改。同时,强调利用MAC地址来确保设备唯一性的方法,可能是在网络层面通过DHCP绑定,这样Laptop2的IP固定,方便Laptop1连接。</think>### 分步指南:设置ESP32-S3-DevKit-C1远程调 #### 一、环境准备 1. **Laptop2(硬件连接端)** - 安装ESP-IDF v5.1+并配置工具链[^1] - 安装VS Code及ESP-IDF插件[^3] - 连接ESP32-S3开发板至JTAG器(如FT2232H),确认引脚接线正确(参考[^4]调整S3型号的GPIO映射) 2. **Laptop1(控制端)** - 安装VS Code及ESP-IDF插件,无需连接硬件 - 确保两台设备在同一局域网,并记录双方IP地址和MAC地址(用于设备区分) #### 二、网络配置与设备区分 1. **通过MAC地址绑定静态IP** - 在路由器后台将Laptop2的MAC地址绑定固定IP(如`192.168.1.100`) - 在Laptop2执行 `ipconfig /all`(Windows)或 `ifconfig`(Linux)查看MAC地址 2. **防火墙配置** - 在Laptop2开放TCP端口:`3333`(GDB)、`4444`(Telnet)、`6666`(TCL) ```bash # Linux示例 sudo ufw allow 3333,4444,6666/tcp ``` #### 三、Laptop2的OpenOCD配置 1. **修改OpenOCD启动配置** - 创建自定义配置文件 `openocd_remote.cfg`,添加远程绑定: ```text bindto 0.0.0.0 transport select jtag source [find target/esp32s3.cfg] ``` - 启动OpenOCD服务: ```bash openocd -f openocd_remote.cfg ``` - 验证输出:`Listening on port 3333 for gdb connections` #### 四、Laptop1的VS Code调配置 1. **修改调配置文件 (`launch.json`)** - 添加远程调配置,指定Laptop2的IP和端口: ```json { "name": "Remote Debug ESP32-S3", "type": "cppdbg", "request": "launch", "miDebuggerServerAddress": "192.168.1.100:3333", "program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf", "setupCommands": [ { "text": "target remote 192.168.1.100:3333" }, { "text": "mon reset halt" }, { "text": "thb app_main" } ] } ``` 2. **通过MAC地址区分设备(可选)** - 在VS Code的ESP-IDF插件设置中,为不同设备添加别名: ```json "espIdf.deviceList": [ { "name": "Laptop2_Device", "mac": "AA:BB:CC:DD:EE:FF", "ip": "192.168.1.100" } ] ``` #### 五、启动远程调 1. **操作流程** - Laptop2保持OpenOCD服务运行 - Laptop1在VS Code中选择`Remote Debug ESP32-S3`配置,启动调会话 - 断点触发后,可在Laptop1查看变量、堆栈等信息 #### 六、故障排查 - **连接超时问题**:检查防火墙规则、IP地址是否正确,确认OpenOCD已绑定`0.0.0.0`[^2] - **JTAG通信失败**:重新检查硬件接线与`esp32s3.cfg`配置[^4] --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值