前言
(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_PATH
和IDF_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
接口,也就是IO20
和IO19
引脚。
(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安装配置使用教程(最新版超详细保姆级含插件)一文就够了