ESP-C3入门22. 基于VSCODE使用内置JTAG调试程序

news2024/11/14 19:56:04

ESP-C3入门22. 基于VSCODE使用内置JTAG调试程序

  • 一、简介
    • 1. 内置 jtag 介绍
    • 2. OpenOCD
    • 3. 准备工作
  • 二、操作步骤
    • 1. 接线
    • 2. 在VSCode设置端口等信息
    • 3. 测试编译烧录
  • 三、调试程序

在这里插入图片描述

一、简介

1. 内置 jtag 介绍

在ESP32中,内置了一个用于JTAG调试的特殊程序,称为“ESP32 JTAG调试引导模式”。

JTAG(Joint Test Action Group)是一种用于测试和调试电路板的标准接口。在嵌入式系统开发中,JTAG可以用于芯片的调试、程序下载、固件更新等操作。ESP32的JTAG调试引导模式允许通过JTAG接口连接到芯片,以便进行硬件级别的调试和分析。

2. OpenOCD

OpenOCD是一个强大的开源调试工具,支持多种处理器架构和芯片,包括ESP32。它允许开发者通过JTAG接口连接到目标芯片,以进行调试和编程。OpenOCD提供了一组命令行工具和GDB(GNU Debugger)的集成,可以用于单步执行、断点设置、查看寄存器状态、读写内存等调试操作。

开发者可以使用OpenOCD作为调试工具,通过ESP32的JTAG接口连接到ESP32芯片,以进行嵌入式应用程序的调试。为了在OpenOCD中配置ESP32的目标,需要提供一个与目标芯片相关的配置文件(通常称为"target.cfg"或类似的名称)。这个配置文件定义了与芯片通信的JTAG引脚映射、芯片特定的调试功能和寄存器映射等信息。

使用内置 jTAG 时,这个cfg的路径位置大概是如下位置 :
Espressif\tools\openocd-esp32\v0.12.0-esp32-20230419\openocd-esp32\share\openocd\scripts\board\esp32c3-builtin.cfg

使用VSCODE 的 IDF插件,这个位置不需要手工配置。

3. 准备工作

  • ESP32-C3 开发板
  • 安装好ESP-IDF环境
  • 准备一个ESP32-C3的项目
  • VSCODE 安装好ESP-IDF插件

在命令行输入:

openocd --version

有如下输出 :

openocd --version
Open On-Chip Debugger v0.12.0-esp32-20230419 (2023-04-18-22:02)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html

OPENOCD 需要用到 TCP 6666 端口。

二、操作步骤

1. 接线

需要一根USB线,一头插电脑,另一头按线序接MCU。

USB 引脚典型颜色ESP32-C3 引脚
D-GPIO18
D+绿GPIO19
V_BUS5V
GNDGND

USB插入电脑,提示设置设备:
在这里插入图片描述
设置成功后,在系统设备列表可以看到 SUB JTAG/serial debug unit:
在这里插入图片描述

2. 在VSCode设置端口等信息

点击VSCODE下方按钮,设置对应的串口,并选择内置USB-JTAG(ESP32-C3 chip(via builtin USB-JTAG)。
在这里插入图片描述
在这里插入图片描述
禁用内存保护 :
在这里插入图片描述
设置日志通过 USB Serial/JTAG 输出:
在这里插入图片描述

3. 测试编译烧录

点击VSCODE的 ESP-IDF Build, Flash and Monitor。
在这里插入图片描述
等待编译、烧录、查看USB日志输出 。

三、调试程序

点击VSCODE上的 Launch:

在这里插入图片描述

可以设置断点并查看寄存器值、变量值等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/958985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实验八】555定时器的应用

【实验内容】 【实验报告】 【实验截图】 1 2 3 【得分】

(c++)类和对象 上篇

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 1.面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步…

C++ for 循环

for 循环允许您编写一个执行特定次数的循环的重复控制结构。 语法 C 中 for 循环的语法: for ( init; condition; increment ) {statement(s); }下面是 for 循环的控制流: init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任…

模糊测试面面观 | 模糊测试是如何发现异常情况的?

协议模糊测试是一种用于评估通信协议、文件格式和API实现系统安全性和稳定性的关键技术。在模糊测试过程中,监视器扮演着关键角色,它们能够捕获异常情况、错误响应、资源利用等,为测试人员提供有价值的信息,有助于发现潜在漏洞和问…

STM32-串口通信(串口的接收和发送)

文章目录 STM32的串口通信一、STM32里的串口通信二、串口的发送和接收串口发送串口接收 三、串口在STM32中的配置四、串口接收的两种实现方式1. 需要更改的地方2. 查询RXNE标志位3. 使用中断 总结 STM32的串口通信 本文在于记录自己的学习过程中遇到的问题和总结,各…

LeetCode——栈的压入、弹出序列

这里我用下面的例子子来讲解一下模拟栈的实现。 例子1:pushed [1,2,3,4,5] popped [4,5,3,2,1] 思路:第一步:我们先创建一个栈,然后将pushed的数据压进去 第二步:判断! 当压入栈的数据和popped第一个数据…

【实验六】组合逻辑电路的设计

【实验内容】 【实验报告】

向openssl中添加一个最简单的算法

文章目录 一、尝试在sha.c中添加新的函数二、添加自定义算法2.1 添加对应文件2.2 相关配置2.3 编译运行 一、尝试在sha.c中添加新的函数 在尝试添加新算法前,我先尝试在原有的旧算法中添加一个新函数,看是否能被编译并生成对应的动态链接库。 关于open…

unity 跨屏显示

1.代码 /*Type:设置分辨率*/ using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.Runtime.InteropServices;public class ScreenManager : MonoBehaviour {[HideInInspector]//导入设置窗口函数 [DllImport("…

nginx压缩ttf文件 mine.types的作用

最近在运维过程中,前端提到发现在linux上下载某ttl文件(字体文件)太大,传输过程比较慢,于是就想着使用nginx的gzip进行压缩,经过不断尝试,终于发现在nginx的配置目录/etc/nginx/mine.types 文件…

Windows中安装nvm进行Node版本控制与详细使用教程

1.nvm介绍 nvm英文全程也叫node.js version management,是一个nodejs的版本管理工具。nvm和npm都是node.js版本管理工具,但是为了解决node各种不同之间版本存在不兼容的问题,因此可以通过nvm安装和切换不同版本的node。 2.nvm下载 可在点此…

springboot网上家乡特产商城系统 微信小程序

基于特产商城小程序的设计基于现有的智能手机上运行,可以实现管理员服务端;首页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等功能。方便用户微信端;首页、商品信息、商城公告、购物车、我的 等详细的了解及统计分…

JavaScript Web APIs-01学习

复习: splice() 方法用于添加或删除数组中的元素。 **注意:**这种方法会改变原始数组。 删除数组: splice(起始位置, 删除的个数) 比如:1 let arr [red, green, blue] arr.splice(1,1) // 删除green元素 consol…

Ubuntu 22.04.2 LTS 安装python3.6后报错No module named ‘ufw‘

查明原因: vim /usr/sbin/ufw 初步判断是python版本的问题。 # 查看python3软链接 ll /usr/bin/python3 将python3的软链接从python3.6换成之前的3.10,根据自己电脑情况。 可以查看下 /usr/bin 下有什么 我这是python3.10 所以解决办法是 # 移除py…

四神兽套餐,自控专业课复习最强资料详细介绍!

⭐️所谓又专又精,专是指我们售后群团队上百人都是自动化研究生,精是指我们只做自动化这一门专业学科7年了,研究到极致! 专业课即将进入强化阶段啦,资料选的好,高分少不了,今天学姐给大家带来的…

嵌入式操作系统服务机制

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。搜…

ssm电动车租赁网站源码和论文

ssm电动车租赁网站源码和论文107 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳&a…

java 中用 ReentrantReadWriteLock 解决HashMap() 线程安全问题

在并发编程中,当多个线程同时操作一个 变量时,容易出现线程安全的问题,我们可以使用各种锁来解决线程安全问题,比如:ConcurrentHashMap 在底层使用了synchronized 解决 HashMap()的线程安全问题, 我们这里希望使用 Ree…

三维模型OBJ格式轻量化压缩在移动智能终端应用方面的重要性分析

三维模型OBJ格式轻量化压缩在移动智能终端应用方面的重要性分析 三维模型的OBJ格式轻量化压缩在移动智能终端应用方面具有重要性。以下是对三维模型OBJ格式轻量化压缩在移动智能终端应用方面重要性的分析: 1、资源受限的环境:移动智能终端如手机、平板等…

【校招VIP】产品分析之功能分析

考点介绍: 作为一个产品经理,从需求分析到功能实现,一步都不能错过,不断调整不断沟通,以期达到最好的效果。 『产品分析之功能分析』相关题目及解析内容可点击文章末尾链接查看! 一、考点题目 1. 拼多多…