ESP32S3 Ubuntu vscode如何使用USB-JTAG调试

一、官方文档

二、配置

1. 添加 udev 规则

bash 复制代码
sudo tee /etc/udev/rules.d/99-espressif-jtag.rules > /dev/null <<EOF
SUBSYSTEM=="usb", ATTR{idVendor}=="303a", ATTR{idProduct}=="1001", MODE="0666", GROUP="plugdev"
EOF

然后:

bash 复制代码
sudo udevadm control --reload-rules
sudo udevadm trigger

拔掉 ESP32-S3,重新插入 USB。

2. 验证 USB 设备是否识别

bash 复制代码
lsusb | grep 303a

应看到类似行:

复制代码
Bus 001 Device 042: ID 303a:1001 Espressif USB JTAG/Serial Debug Unit

3. 确认当前用户在 plugdev 组

bash 复制代码
groups $USER

若无 plugdev

bash 复制代码
sudo usermod -a -G plugdev $USER
newgrp plugdev

4. vscode开启openocd

  • 重启 OpenOCD 或 ESP-IDF 监视调试:
bash 复制代码
idf.py openocd
# 或:
openocd -f board/esp32s3-builtin.cfg
  • 左下角选择JTAG,ctrl+shift+p选择openocd manager->start openocd
  • 正常情况的openocd输出:

5. vscode的launch.json

  • 查询 GDB 路径find ~/.espressif -name xtensa-esp32s3-elf-gdb,然后配置miDebuggerPath
  • 配置
json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "ESP32-S3 USB-JTAG Debug",
      "type": "cppdbg",
      "request": "launch",
      "cwd": "${workspaceFolder}",
      "program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
      "miDebuggerPath": "/home/surface/.espressif/tools/xtensa-esp-elf-gdb/16.2_20250324/xtensa-esp-elf-gdb/bin/xtensa-esp32s3-elf-gdb",
      "miDebuggerServerAddress": "localhost:3333",
      "environment": [],
      "externalConsole": false,
      "stopAtEntry": true,
      "openOcdLaunchCommands": [
        "init",
        "reset halt"
      ],
      "setupCommands": [
        {
          "text": "-enable-pretty-printing",
          "description": "启用 pretty printing",
          "ignoreFailures": true
        }
      ],
      "serverStarted": "Info : Listening on port 3333 for gdb connections",
      "filterStderr": true,
      "logging": {
        "moduleLoad": false,
        "trace": false,
        "engineLogging": false,
        "programOutput": true,
        "exceptions": false
      },
      "openOcdConfigFiles": [
        "interface/esp_usb_jtag.cfg",
        "target/esp32s3.cfg"
      ]
    }
  ]
}

三、实际测试

  • 点击调试按钮,正常显示断点
  • 正常的log输出的如下

    Open On-Chip Debugger v0.12.0-esp32-20250422 (2025-04-22-13:02)
    Licensed under GNU GPL v2
    For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
    debug_level: 2
    Info : only one transport option; autoselecting 'jtag'
    Info : esp_usb_jtag: VID set to 0x303a and PID to 0x1001
    Info : esp_usb_jtag: capabilities descriptor set to 0x2000

    WARNING!!! OpenOCD binary version (Open On-Chip Debugger v0.12.0-esp32-20250422 (2025-04-22-13:02)) doesn't match the .cfg file version (v0.12.0-esp32-20240318)

    Info : Listening on port 6666 for tcl connections
    Info : Listening on port 4444 for telnet connections

    Info : esp_usb_jtag: serial (30:ED:A0:0B:1E:8C)

    Info : esp_usb_jtag: Device found. Base speed 40000KHz, div range 1 to 255
    Info : clock speed 40000 kHz

    Info : JTAG tap: esp32s3.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
    Info : JTAG tap: esp32s3.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)

    Info : [esp32s3.cpu0] Examination succeed

    Info : [esp32s3.cpu1] Examination succeed

    Info : [esp32s3.cpu0] starting gdb server on 3333
    Info : Listening on port 3333 for gdb connections

    Info : [esp32s3.cpu0] Target halted, PC=0x4200F80E, debug_reason=00000001

    Info : [esp32s3.cpu0] Reset cause (1) - (Power on reset)

    Info : Set GDB target to 'esp32s3.cpu0'

    Info : [esp32s3.cpu1] Target halted, PC=0x40379D50, debug_reason=00000000

    Info : [esp32s3.cpu1] Reset cause (1) - (Power on reset)

    Info : accepting 'gdb' connection on tcp/3333

    Warn : No symbols for FreeRTOS!

    Info : [esp32s3.cpu0] Target halted, PC=0x4038CCA2, debug_reason=00000001

    Info : Flash mapping 0: 0x10020 -> 0x3c030020, 55 KB
    Info : Flash mapping 1: 0x20020 -> 0x42000020, 135 KB
    Info : Auto-detected flash bank 'esp32s3.cpu0.flash' size 16384 KB
    Info : Using flash bank 'esp32s3.cpu0.flash' size 16384 KB

    Info : [esp32s3.cpu0] Target halted, PC=0x4038CCA2, debug_reason=00000001

    Info : Flash mapping 0: 0x10020 -> 0x3c030020, 55 KB
    Info : Flash mapping 1: 0x20020 -> 0x42000020, 135 KB
    Info : Using flash bank 'esp32s3.cpu0.irom' size 136 KB

    Info : [esp32s3.cpu0] Target halted, PC=0x4038CCA2, debug_reason=00000001

    Info : Flash mapping 0: 0x10020 -> 0x3c030020, 55 KB
    Info : Flash mapping 1: 0x20020 -> 0x42000020, 135 KB
    Info : Using flash bank 'esp32s3.cpu0.drom' size 56 KB
    Info : New GDB Connection: 1, Target esp32s3.cpu0, state: halted

    Warn : Prefer GDB command "target extended-remote :3333" instead of "target remote :3333"

    Info : Detected FreeRTOS version: (10.5.1)

相关推荐
Johny_Zhao2 小时前
CentOS Stream 9上部署FTP应用服务的两种方法(传统安装和docker-compose)
linux·网络安全·信息安全·kubernetes·云计算·containerd·ftp·yum源·系统运维
守望时空332 小时前
RustDesk搭建指南
linux
C++ 老炮儿的技术栈3 小时前
在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
linux·运维·c++·git·ubuntu·github·visual studio
白鹭3 小时前
基于LNMP架构的分布式个人博客搭建
linux·运维·服务器·网络·分布式·apache
java叶新东老师4 小时前
linux 部署 flink 1.15.1 并提交作业
linux·运维·flink
SoveTingღ4 小时前
【开发环境配置】VScode里面配置cmake遇到的问题
c语言·vscode·cmake·嵌入式软件·开发环境配置
vsropy4 小时前
VScode输出中文乱码问题解决
ide·vscode·编辑器
程序员JerrySUN4 小时前
Linux系统架构核心全景详解
linux·运维·系统架构
无敌的牛5 小时前
Linux文件理解,基础IO理解
linux·运维·服务器
未来之窗软件服务5 小时前
跨平台 WebSocket 服务器的设计与实现 —— 基于.NET 8 的跨操作系统解决方案linux,macos,windows——开发工具
linux·服务器·websocket·仙盟创梦ide·东方仙盟