ESP32S3学习笔记(0)—— Vscode IDF环境搭建及OpenOCD调试介绍

前言

(1)如果有嵌入式企业需要招聘湖南区域日常实习生,任何区域的暑假Linux驱动/单片机/RTOS的实习岗位,可C站直接私聊,或者邮件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效
(2)之前学习ESP32S3都是找的各种资料自学,并不系统。因此购买了正点原子的ESP32S3开发板,跟着教程系统性的学习一遍。
(3)事先叠甲,搭建Vscode的ESP-IDF开发环境部分基本照搬正点原子的手册教程。而OpenOCD部分,因正点原子手册写的并不那么详细,所以我进行了更详细的说明。

搭建Vscode的ESP-IDF开发环境

下载ESP-IDF

(1)进入乐鑫官方 Windows 安装下载中心找到V5.1.2版本进行下载。
因为本人是按照正点原子的教程来进行学习的。据说其他版本的IDF可能导致部分例程跑不了,因此重新安装IDF。

在这里插入图片描述

(2)下载完成之后,以管理员身份运行

在这里插入图片描述

(3)打开安装程序后选择简体中文安装,如下图所示:

在这里插入图片描述

(4)往下走就是许可协议, 勾选“我同意此协议” ,单击下一步,如下图所示:

在这里插入图片描述

(5)如果是第一次安装,会出现如下图提示。点击应用修复即可。

在这里插入图片描述

(6)出现如下画面表示修复成功,点击下一步。

在这里插入图片描述

(7)如果修复失败,进行如下操作:
<1>通过如下方式打开注册表编辑器

在这里插入图片描述

<2>在注册表编辑器里面,在HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\中找到LongPathsEnabled

在这里插入图片描述

(8)设置安装路径,之后都是下一步。

在这里插入图片描述

(9)安装完成之后,系统自动打开两个窗口,它们分别为 PowerShell 命令行和传统的cmd 命令行窗口。在cmd命令窗口中输入下面这两条指令

cd examples\get-started\hello_world
idf.py build

(10)最终编译结果如下,表示IDF安装完成

在这里插入图片描述

(11)通过如下方法打开编辑系统环境变量。
<1>

在这里插入图片描述

<2>

在这里插入图片描述

<3>如果 ESP32-IDF 库安装成功,则系统自动为我们添加上图中的IDF_TOOLS_PATHIDF_PATH 环境变量,否则手动添加这两个环境变量。

在这里插入图片描述

下载与安装 VSCode

(1)阅读VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了

添加扩展

(1)进入扩展商店

在这里插入图片描述

(2)找到IDF,安装

在这里插入图片描述

(3)按ctrl+shift+p ,输入Configure ESP-IDF

在这里插入图片描述

(4)选择第二个

在这里插入图片描述

(5)第二步的IDF_TOOLS_PATH需要注意。
<1>这个是上面的ESP-IDF安装路径

在这里插入图片描述

<2>在这个安装路径后面加上\tools的值写入IDF_TOOLS_PATH

在这里插入图片描述

(6)完成上面两步配置之后,点击install。然后选择下载ESP-IDF Tools

在这里插入图片描述

(7)安装完成提示下面这个

在这里插入图片描述

OpenOCD使用教程

新建工程

(1)输入Ctrl+Shift+P打开命令面板,输入New Project

在这里插入图片描述

(2)输入工程名,工程路径,选择芯片型号,端口。

在这里插入图片描述

(3)按照如下步骤创建一个简单模板工程

在这里插入图片描述

(4)在main.c里面输入如下代码

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

void app_main(void)
{
    uint32_t i = 0;
    printf("-------------------------------------\n");
    printf("---www.zyxbeyourself.blog.csdn.net---\n");
    printf("-------------------------------------\n");
    printf("--------zhangyixu02@gmail.com--------\n");
    printf("-------------------------------------\n");
    while(1)
    {
        i++;
        printf("Restarting in %ld seconds...\n", i);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

(5)烧录程序。注意,如果是正点原子的开发板,要接UART口烧录程序。
(6)打开串口助手,波特率115200。显示如下

在这里插入图片描述

项目调试

配置launch.json

(1)打开.vscode文件夹下的launch.json,复制粘贴下面这段代码。

在这里插入图片描述

{
    "version": "0.2.0",
    "configurations": [
    {
        "name": "GDB",
        "type": "cppdbg",
        "request": "launch",
        "MIMode": "gdb",
        "miDebuggerPath": "${command:espIdf.getXtensaGdb}",
        "program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
        "windows": {
        "program": "${workspaceFolder}\\build\\${command:espIdf.getProjectName}.elf"
        },
        "cwd": "${workspaceFolder}",
        "environment": [{ "name": "PATH", "value": "${config:idf.customExtraPaths}" }],
        "setupCommands": [
        { "text": "set remotetimeout 100" },
        { "text": "target extended-remote :3333" },
        { "text": "set remote hardware-watchpoint-limit 2"},
        { "text": "mon reset halt" },
        { "text": "thb app_main" },
        { "text": "flushregs" }
        ],
        "externalConsole": false,
        "logging": {
        "engineLogging": true
        }
    }
    ]
}

配置settings.json

(1)打开.vscode文件夹下的settings.json。将原来的idf.openOcdConfigs注释,修改为如下代码。

在这里插入图片描述

"idf.openOcdConfigs": [
    "board/esp32s3-builtin.cfg"
],

硬件连接

(1)此时需要使用TypeC接口接上开发板上的USB接口,也就是IO20IO19引脚。

在这里插入图片描述

(2)因为本次测试中存在串口打印。因此开发板的UART也需要连接上。因此最终接线如下

在这里插入图片描述

开始调试

(1)按照下图方式打开GDB调试

在这里插入图片描述

(2)此时串口工具打印如下信息
注意:此时不能使用Vscode自带的串口工具,因为GDB调试和串口工具无法在Vscode中同时运行。

在这里插入图片描述

(3)Vscode中的界面如下

在这里插入图片描述

(4)我们现在只需要知道。按下F10是逐过程调试,F11是逐步调试,Shift+F11是单步跳出,F5是全速跑,F6是暂停,Ctrl + F5是退出调试。即可实现调试功能了。

ESP32S3反汇编工具使用

(1)在terminal中输入如下命令即可

xtensa-esp32s3-elf-objdump -d your_executable.elf > assembly_code.asm

参考

(1)DNESP32S3使用指南-IDF版_V1.1.pdf
(2)VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

男生穿什么裤子最百搭?适合男生穿的裤子品牌测评分享

每个伙伴们想必经常都会选择一些裤子&#xff0c;但现在市面上的裤子品牌也实在太多了&#xff0c;好不容易选到了几件好看的裤子&#xff0c;结果质量却很不好。主要就是因为现在有太多商家为了利润而使用一些舒适性、质量差的面料&#xff0c;那么今天就给大家分享一些质量上…

实战小项目 | ESP32-S3和ESP32-C3通过ESP-Mesh-Lite组网 温湿度传感器案例

传统Wi-Fi网络所有终端设备都需要直接与路由器相连&#xff0c;这使得Wi-Fi的覆盖区域受到路由器位置的限制&#xff0c;可接入终端设备的数量也受到路由器容量的限制。而乐鑫ESP-Mesh-Lite Wi-Fi组网方案&#xff0c;所有终端设备都可以与相邻设备连接&#xff0c;摆脱了对路由…

酒店水电能源计量管理系统

酒店水电能源计量管理系统是一种针对酒店行业设计的能源管理系统&#xff0c;旨在实现对水电能源的计量、监测和管理。本文将从系统特点、构成以及带来的效益三个方面展开介绍。 系统特点 1.多元化计量&#xff1a;该系统能够对酒店内的水、电能源进行多元化计量&#xff0c;…

【C++学习】map和set

目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 四、set 4.1 set的介绍 4.2 set的使用 4.2.1 set的模板参数列表 4.2.2 set的构造 4.2.3 set的容量 4.2.4 set修改操作 4.2.5 set的使用举例 五、map 5.1 map的介绍 5.2 map的使用 5.2.1 map的模板参数说…

【Qt 学习笔记】Qt常用控件 | 按钮类控件Check Box的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 按钮类控件Check Box的使用及说明 文章编号&#xff1a;…

自动化测试-如何优雅实现方法的依赖

在复杂的测试场景中&#xff0c;常常会存在用例依赖&#xff0c;以一个接口自动化平台为例&#xff0c;依赖关系&#xff1a; 创建用例 --> 创建模块 --> 创建项目 --> 登录。 用例依赖的问题 • 用例的依赖对于的执行顺序有严格的要求&#xff0c;比如让被依赖的方…

揭秘智慧礼品背后的故事

如若不是从事技术行业&#xff0c;在罗列礼品清单时&#xff0c;可能不会想到 “数据”&#xff0c;但幸运的是&#xff0c;我们想到了。如何将AI技术应用到当季一些最受青睐的产品中去&#xff0c;训练数据是这一智能技术的背后动力。很多电子设备或名称中带有“智能”一词的设…

TikTok赚钱攻略 | 这6个方法你必须知道

在浩瀚的网络世界中&#xff0c;TikTok成为了一个让普通人一夜成名的舞台。Khabane Lame和Charli DAmelio就是其中的明星例子。无论是Khabane简单的肢体幽默还是Charli的舞蹈视频&#xff0c;他们都凭借TikTok赚钱&#xff0c;并且成功转变了自己的人生轨迹。他们的故事证明&am…

【kafka】安装

也是第二次安装&#xff0c;蛮记录一下 1.安装kafka之前需要先完成zookeeper的安装 【zookeeper】安装 2. Apache Kafka官网下载 3. 解压完成后修改server.properties配置文件 修改日志文件存放路径 查看与zookeeper连接的端口是否和zookeeper服务所在的端口一致 &#xf…

BTI性能开销权衡及优化措施

BTI分支目标识别精讲与实践系列 思考 1、什么是代码重用攻击&#xff1f;什么是ROP攻击&#xff1f;区别与联系&#xff1f; 2、什么是JOP攻击&#xff1f;间接分支跳转指令&#xff1f; 3、JOP攻击的缓解技术&#xff1f;控制流完整性保护&#xff1f; 4、BTI下的JOP如何…

智能助手大比拼!5款热门思维导图软件细致评估!

思维导图是一种创造性的方法&#xff0c;集思广益&#xff0c;寻找不同想法之间的联系。如果你做得好&#xff0c;你可以为难题提出新的想法和解决方案&#xff0c;总结一篇文章或演示稿&#xff0c;让你的想法井然有序。在数字时代&#xff0c;纸质思维导图存在不能随意更改、…

Nginx内存池相关源码剖析(六)外部资源释放和内存池销毁

ngx_destroy_pool函数 先执行回调函数释放所有的外部资源&#xff0c;然后free释放所有的大块内存和小块内存。 // 释放外部资源&#xff0c;销毁内存池 void ngx_destroy_pool(ngx_pool_t *pool) {ngx_pool_t *p, *n;ngx_pool_large_t *l;ngx_pool_cleanup_t *…

[数据结构]——二叉树——堆排序

后续代码以此为基础 typedef int HPDataTyp; typedef struct Heap {HPDataTyp * a; int size; int capacity; } Hp; 1.首先我们需要掌握两种堆算法 1&#xff0c;堆向下调整算法 现在我们给出一个数组&#xff0c;逻辑上看做一颗完全二叉树。我们通过从根节点开始的向下调整…

清明三天,用Python赚了4万?

每年4月&#xff0c;是Python圈子里接私活的旺季&#xff0c;特别是在节假日这种数据暴增的时间段&#xff0c;爬虫采集、逆向破解类的私活订单会集中爆发&#xff0c;量大价高。几乎所有的圈内人都在趁着旺季接私活。 正好&#xff0c;我昨天就做了一单爬虫逆向私活&#xff…

社科院与新加坡社科大学工商管理博士——结合顶尖学术力量,培养全球战略领导力

在当今全球化的时代&#xff0c;工商管理博士项目不仅仅是为了培养学术研究者&#xff0c;更是为了孕育出具有全球战略领导力的商业领袖。这样的项目需要顶尖的学术力量来引领&#xff0c;而中国社会科学院与新加坡社科大学正是这样的学术巨擘。两者联合培养的工商管理博士项目…

Python统计分析库之statsmodels使用详解

概要 Python statsmodels是一个强大的统计分析库,提供了丰富的统计模型和数据处理功能,可用于数据分析、预测建模等多个领域。本文将介绍statsmodels库的安装、特性、基本功能、高级功能、实际应用场景等方面。 安装 安装statsmodels库非常简单,可以使用pip命令进行安装:…

浅谈Java JVM

Java虚拟机&#xff08;Java Virtual Machine&#xff0c;简称JVM&#xff09;是Java语言的核心组成部分&#xff0c;它是一个抽象的计算机&#xff0c;负责执行Java字节码指令。JVM是Java平台无关性的基石&#xff0c;它为Java代码提供了一个标准的运行环境&#xff0c;使Java…

Java小白教学—五千字带你了解多线程机制及线程安全问题

基础概念 &#x1f4d6; 问题一 : 什么是线程&#xff1f;线程和程序、进程有什么区别&#xff1f; 程序&#xff1a;为实现某种功能&#xff0c;使用计算机语言编写的一系列指令的集合。 指的是静态的代码&#xff08;例如安装在电脑上的那些文件&#xff09; 进程&#xff…

UE5 编辑器启动模式下去掉左上角的Clink for Mouse Control

Edit > Editor Preferences > Game Gets Mouse Control 把这个勾去掉

【C++初阶】C++简单入门(长期维护)

本篇博客是对C的一些简单知识分享&#xff0c;有需要借鉴即可。 C简单入门目录 一、C前言1.C的概念&#xff1a;2.C发展历程3.C如何学&#xff1f; 二、C入门1.C关键字(C98标准)2.命名空间3.C输入&输出①概念说明②使用说明③特征说明④细节拓展⑤cout与cin的意义 4.缺省参…
最新文章