当前位置: 首页 > news >正文

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

一、官方文档

  • openocd-esp32的问题汇总: Troubleshooting
  • esp32的官方文档:调试项目

二、配置

1. 添加 udev 规则

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

然后:

sudo udevadm control --reload-rules
sudo udevadm trigger

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

2. 验证 USB 设备是否识别

lsusb | grep 303a

应看到类似行:

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

3. 确认当前用户在 plugdev 组

groups $USER

若无 plugdev

sudo usermod -a -G plugdev $USER
newgrp plugdev

4. vscode开启openocd

  • 重启 OpenOCD 或 ESP-IDF 监视调试:
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
    在这里插入图片描述
  • 配置
{"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, readhttp://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 0x2000WARNING!!! 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 connectionsInfo : 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 kHzInfo : 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 succeedInfo : [esp32s3.cpu1] Examination succeedInfo : [esp32s3.cpu0] starting gdb server on 3333
Info : Listening on port 3333 for gdb connectionsInfo : [esp32s3.cpu0] Target halted, PC=0x4200F80E, debug_reason=00000001Info : [esp32s3.cpu0] Reset cause (1) - (Power on reset)Info : Set GDB target to 'esp32s3.cpu0'Info : [esp32s3.cpu1] Target halted, PC=0x40379D50, debug_reason=00000000Info : [esp32s3.cpu1] Reset cause (1) - (Power on reset)Info : accepting 'gdb' connection on tcp/3333Warn : No symbols for FreeRTOS!Info : [esp32s3.cpu0] Target halted, PC=0x4038CCA2, debug_reason=00000001Info : 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 KBInfo : [esp32s3.cpu0] Target halted, PC=0x4038CCA2, debug_reason=00000001Info : Flash mapping 0: 0x10020 -> 0x3c030020, 55 KB
Info : Flash mapping 1: 0x20020 -> 0x42000020, 135 KB
Info : Using flash bank 'esp32s3.cpu0.irom' size 136 KBInfo : [esp32s3.cpu0] Target halted, PC=0x4038CCA2, debug_reason=00000001Info : 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: haltedWarn : Prefer GDB command "target extended-remote :3333" instead of "target remote :3333"Info : Detected FreeRTOS version: (10.5.1)
http://www.lryc.cn/news/598204.html

相关文章:

  • 【开源】WPF的数据可视化大屏解决方案——WpfMap
  • C++课设实践项目:C++构建的学籍管理系统
  • Cisco 主模式配置
  • SGLang + 分布式推理部署DeepSeek671B满血版
  • JavaSE:开发环境的搭建(Eclipse)
  • Java与NLP实战:文本处理到情感分析全解析
  • 【ECharts✨】解决Vue 中 v-show 导致组件 ECharts 样式异常问题
  • [AI 生成] Flink 面试题
  • 【论文阅读】REVISITING DEEP AUDIO-TEXT RETRIEVAL THROUGH THE LENS OF TRANSPORTATION
  • 基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
  • 人形机器人加快先进AI机器人开发
  • 开发避坑短篇(5):vue el-date-picker 设置默认开始结束时间
  • 实时云渲染将UE像素流嵌入业务系统,实现二维管理系统与数字孪生三维可视化程序的无缝交互
  • 小程序生命周期及页面操作执行过程详解
  • 使用phpstudy极简快速安装mysql
  • Java进阶3:Java集合框架、ArrayList、LinkedList、HashSet、HashMap和他们的迭代器
  • Android集成Google Map
  • C++中std::list的使用详解和综合实战代码示例
  • RPG64.制作敌人攻击波数四:优化
  • vue 项目中 components 和 views 包下的组件功能区别对比,示例演示
  • vue递归树形结构删除不符合数据 生成一个新数组
  • 基于深度学习的图像分类:使用MobileNet实现高效分类
  • 【SpringAI实战】提示词工程实现哄哄模拟器
  • MCNN-BiLSTM-Attention分类预测模型等!
  • 模型量化方式及分类
  • OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型
  • 边缘智能体:轻量化部署与离线运行
  • 高可用架构模式——如何应对接口级的故障
  • node.js中的fs与path模块
  • Unity 多人游戏框架学习系列十