基于JTAG对ESP32-C3的调试及下载

2024-02-10 01:59
文章标签 调试 下载 esp32 c3 jtag

本文主要是介绍基于JTAG对ESP32-C3的调试及下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

继上一章节《基于VSCODE的ESP32C3开发环境的搭建》之后,小编相信大部分读者借助红旭的肩膀,应该可以轻松地搞定ESP32-C3的开发环境搭建,并完成一些基础的开发;接下来,让我们继续趁热打铁,讲讲如何利用ESP32-C3的JTAG接口,对ESP32-C3进行下载或者调试仿真。

JTAG接口

为了更好地阐述并实现对ESP32-C3进行下载或者调试仿真,这里小编以HX-DK-商为蓝本,进行一系列的配置和讲解。

目前,ESP32-C3支持两种JTAG连接方式:

  1. 内嵌的JTAG调试仿真器

    ESP32-C3内嵌了一个USB-JTAG控制器,可用于对ESP32-C3进行下载或者调试仿真,如HX-DK-商中的标号9,只要插上USB线,即可实现下载和调试仿真的功能。

  2. 外置的JTAG调试仿真器

    如果想要使用外部的调试仿真器,则只要使用标准的10-PIN连接线与HX-DK-商中的标号8相连接,即可实现对ESP32-C3的下载和调试仿真。

内置的USB-SERIAL-JTAG

ESP32-C3不但内置了USB-JTAG,还内置了USB-SERIAL,这给开发者提供了大大的便利,仅需要一根USB线即可实现下载和调试仿真,实乃众多半导体厂商中的第一芯。但是它们始终属于ESP32-C3中的一个外设,一旦设备进入休眠又或者死机了又或者重启了,那么这个外设的功能也随着 “废掉” 了,但是如果没有这些问题的话,那还是省心省力的,这是目前内置USB-SERIAL-JTAG的局限性所在。所以,HX-DK-商仍然保留了外置的USB-SERIAL和调试仿真器。

在使用内置的USB-SERIAL-JTAG功能之前,用户还需要安装相应的驱动,这个驱动在上一章节《基于VSCODE的ESP32C3开发环境的搭建》中提及的ESP-IDF-Tools工具中可以获取得到,即使用ESP-IDF-Tools安装相应的配置工具包时,要勾选idf_driver。最后,用户就可以在.espressif文件夹找到它,如下图所示:

如果驱动安装成功,当HX-DK-商中的标号9只要插上USB线,在设备管理器中就可以发现一个虚拟的串口和一个USB-JTAG的接口,如下所示:

这个时候,用户就可以利用内置的USB-SERIAL-JTAG对ESP32-C3进行下载和调试。

下载

ESP32-C3的固件下载有两种方式:

  1. UART下载

    因为内置有USB-SERIAL且驱动也已经安装成功,那么用户只需要在VS CODE上进行简单地配置即可下载:

    1. 在VSCODE状态栏左下方,选择内置USB-SERIAL的虚拟串口

    2. 在ESP-IDF插件设置中,选择串口方式下载固件

    3. 在VSCODE状态栏左下方,选择芯片的型号

      当上述的配置设置完成之后,即实现内置的USB-SERIAL对ESP32-C3进行下载,如下所示:

  2. JTAG下载

    同理,用户只需要在VS CODE上进行简单地配置即可:

    1. 在ESP-IDF插件设置中,选择JTAG方式下载固件

    2. 在VSCODE状态栏左下方,选择芯片的型号

    当上述的配置设置完成之后,即实现内置的USB-JTAG对ESP32-C3进行下载,如下所示:

调试仿真

到目前小编写下这篇文章为止,基于VSCODE+ESP-IDF插件+ESP-IDF的方式,对ESP32-C3进行调试仿真,已经相对比较稳定可靠了;之所以这篇文章这么难产,是因为前期各个方面有太多的Bug,消耗了小编大量的时间,如果有读者在官方的Github仓库查询ESP32-C3 Debug问题的话,基本上大部分都是小编我发的Ticket。好了,废话不多说,想要使用内置的USB-JTAG对ESP32-C3进行调试仿真,需要如下2个步骤:

  1. 同样的,在VSCODE状态栏左下方,选择芯片的型号,即:

  2. 配置当前代码工程的launch.json文件为下述的内容:

{"version": "0.2.0","configurations": [{"type": "espidf","name": "Launch-name","request": "launch","mode": "auto","skipVerifyAppBinBeforeDebug": true}]
}

当上述的配置设置完成之后,为了保证调试仿真的鲁棒性,请先用上述的JTAG下载的方法先下载固件 (如果固件没有更新,一次即可;如果有更新,则务必再下载一次)>,然后再按下F5键,即可实现内置的USB-JTAG对ESP32-C3进行调试仿真,如下图所示:

如果突然间出现无法调试仿真的情况,先用上述的JTAG下载的方法先下载固件,紧接着硬件复位一下ESP32-C3,然后再按下F5键进行调试仿真。

外置的ESP-Prog

如上述的内置的USB-SERIAL-JTAG内容所述,内置的USB-SERIAL-JTAG控制器仍然存在一些瑕疵,所以有的应用场景仍然需要外部的调试仿真器来下载以及调试仿真。

同理,外置的ESP-Prog在使用之前,也是需要安装驱动文件的,其方法也跟内置的USB-SERIAL-JTAG的相似,即在上一章节《基于VSCODE的ESP32C3开发环境的搭建》中提及的ESP-IDF-Tools工具中可以获取得到,即使用ESP-IDF-Tools安装相应的配置工具包时,要勾选idf_driver。最后,用户就可以在.espressif文件夹找到它,如下图所示:

如果驱动安装成功,ESP-Prog只要插上USB线,在设备管理器中就可以发现一个虚拟的串口和一个USB-JTAG的接口,如下所示:

这个时候,用户就可以利用外置的ESP-Prog对ESP32-C3进行下载和调试。还有一点需要注意的是:当ESP Prog与HX-DK-商的标号8相连接时,请将ESP Prog的JTAG_PWR_SEL拨到5V,然后HX-DK-商开发板什么线都不需要接

下载

由于ESP Prog调试仿真器也具备USB-JTAG和USB-SERIAL的功能,所以其也支持两种方式的下载:

  1. UART下载

    这种方式比较简单,只需要将对应的TX和RX相互连接即可;至于ESP Prog的TX、RX引脚详情,请参考ESP Prog官方的介绍,因为这种方式大同小异,小编就不再细述。

  2. JTAG下载

    如果使用外置ESP-Prog的JTAG接口对ESP32-C3进行下载,用户还需要对ESP32-C3内部的eFuse进行设置 (注意,该设置是永久的,不可恢复的),即需要使用espefuse.py对eFuse的JTAG_SEL_ENABLE位进行烧录,操作的命令如下:

    F:/Tools/Espressif/IDF_Tools/.espressif/python_env/idf4.4_py3.8_env/Scripts/python.exe F:\BLE_WIFI\Espressif\SDK\esp-idf-c3\components\esptool_py\esptool\espefuse.py -p COM50 burn_efuse JTAG_SEL_ENABLE 1
    

    上述是小编当前的Pythonespefuse.py路径和COM口,不同的用户可能对应的路径些许不同。当按照上述的命令配置之后,ESP32-C3在复位时,会根据GPIO10的电平来判断使用内置USB-JTAG还是外置的JTAG调试仿真器:

    • GPIO10为低电平时,使用内置的USB-JTAG
    • GPIO10为高电平时,使用外置的JTAG调试仿真器

    但是!!!目前这个功能截止目前为止还有Bug,只能通过下一版的硬件升级才能解决这个问题;当前的现状就是只要烧录了JTAG_SEL_ENABLE位,ESP32-C3就永远只能支持外置的JTAG调试仿真器了

    紧接着,我们就可以进行JTAG烧录了,即:

    1. 在ESP-IDF插件设置中,选择JTAG方式下载固件

    2. 在VSCODE状态栏左下方,选择芯片的型号

    当上述的配置设置完成之后,即实现外置的ESP Prog对ESP32-C3进行下载,如下所示:

     ![](https://img-blog.csdnimg.cn/img_convert/d9946a69475031799062410a69c4508c.gif)
    

调试仿真

同理,使用外置ESP Prog调试仿真器的设置,与使用内置的USB-SERIAL-JTAG是一样的;唯一不同的是:只不过当选择设备类型时,要选择ESP32-C3(ESP-PROG JTAG) ;小编这里也不再过多地描述,下图是使用外置ESP Prog调试仿真器的动图:

至此,如何基于JTAG接口对ESP32-C3进行下载及调试仿真已经讲解完毕。

这篇关于基于JTAG对ESP32-C3的调试及下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695854

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Python MCPInspector调试思路详解

《PythonMCPInspector调试思路详解》:本文主要介绍PythonMCPInspector调试思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录python-MCPInspector调试1-核心知识点2-思路整理1-核心思路2-核心代码3-参考网址

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模