前言

(1)
(2)之前学习ESP32S3都是找的各种资料自学,并不系统。因此购买了正点原子的ESP32S3开发板,跟着教程系统性的学习一遍。
(3)事先叠甲,搭建Vscode的ESP-IDF开发环境部分基本照搬正点原子的手册教程。而OpenOCD部分,因正点原子手册写的并不那么详细,所以我进行了更详细的说明。

搭建Vscode的ESP-IDF开发环境

下载ESP-IDF

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<2>

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

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

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

下载与安装 VSCode

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

添加扩展

(1)进入扩展商店

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

(2)找到IDF,安装

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

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

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

(4)选择第二个

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

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

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

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

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

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

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

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

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

OpenOCD使用教程

新建工程

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

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

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

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

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

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

(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。显示如下

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

项目调试

配置launch.json

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

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

{
    "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注释,修改为如下代码。

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

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

硬件连接

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

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

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

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

开始调试

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

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

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

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

(3)Vscode中的界面如下

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

(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安装配置使用教程(最新版超详细保姆级含插件)一文就够了