在ubuntu 20.04中,通过vscode的插件来搭建ESP32-S3的开发环境

参考:
与 ESP32-S3 创建串口连接
快速入门
乐鑫ESP-IDF安装 VS Code ESP-IDF安装 ESP32的编译器安装

上周末上TB下单买了块ESP32-S3的开发板,断断续续的进行玩了三天,在环境搭建的过程中碰到了一些麻烦,周二晚才调通,本文主要基于调试的记录。
在这里插入图片描述

蓝色USB用于usb下载,黄色USB用于usb bridge串口下载。本文使用的是后者。

本文的环境主要是通过vscode安装的,所以无需提前下载ESP-IDF

1、 安装前的准备[可选]

因为从ESP-IDF的v4.3版本开始要求python版本不低于v3.6,而ubuntu 16.04默认的python3版本是v3.5,因此这里使用的是ubuntu 20.04。
并且由于后续的操作中随时可能因为安装失败,而想要回到历史快照中,所以我们可手动对虚拟机进行克隆。

1.1、 创建首个虚拟机

通过vmware安装ubuntu 20.04,虚拟机命名为ubuntu_2004,并通过以下指令修改软件源:

sudo cp /etc/apt/sources.list /etc/apt/sources_init.list
#替换软件源
sudo sed -i "s@http://.*ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
#更新软件源
sudo apt-get update
#更新本地软件包
sudo apt-get upgrade

注意:可能是同一个vmware下还安装了ubuntu 16.04的原因,vmware tools失效了(仅可以复制文字,无法复制文件,网上的解决办法试了一个遍,仅有通过vmware的共享文件夹能和主机进行有限制的文件共享),所以vmware需要选择:虚拟机设置-网络适配器-桥接,以便后面通过samba或者nfs之类的进行文件共享。

1.2、 克隆出安装vscode的版本

关闭上个虚拟机ubuntu 20.04,然后依次选择vmware菜单下的 虚拟机->管理->克隆->下一页
接着分别勾选“虚拟机中的当前状态”->“创建完整克隆”,并将新的虚拟机命名为ubuntu 20.04_vscode:
在这里插入图片描述

新虚拟机在开机前,还需要在 虚拟机设置->-网络适配器->高级页面下,“生成”一下新的mac地址,以免造成网络冲突。
进入虚拟机后,在浏览器里打开网址https://code.visualstudio.com/,下载deb格式的安装包,使用类似下面的指令进行安装

sudo dkpg -i code_1.73.1-1667967334_amd64.deb

最好是从网站上下载一个新版本的vscode,因为在使用原有的ubuntu中的旧版本vscode时,出现了弹出的"ESP-IDF Setup"是空白页面的问题。

后面的一些通用性的工作,其实都可以安装到这个版本的虚拟机里,比如设置git的梯子,准备samba服务,安装搜狗输入法之类的。

1.3、 克隆出正式开发的版本

参考上面的步骤,克隆出一个新的虚拟机:ubuntu 20.04_esp32,这也是后面开发直接应用到的版本。
当后续安装失败,想要回滚的时候,就继续以上的步骤,创建出一个新的虚拟机进行开发。

2、 搭建环境

2.1、安装软件包

按照当前版本官方的<快速入门>指南的说法:编译 ESP-IDF 需要以下软件包。

sudo apt-get install git wget flex bison gperf python3 python3-venv python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

实际上还要加装了一个python3-pip,否则会在"ESP-IDF Setup"页面中出现错误提示:“/usr/bin/python3 -m pip” is not valid.(ERROR_INVALID_PIP)

在这里插入图片描述

2.1、安装Espressif IDF

通过vscode的菜单 view->Extensions,打开EXTENSIONS窗口,输入idf,找到并安装Espressif IDF。

2.2、配置Espressif IDF

点击键盘上的F1,输入“idf confi”,找到并点开“ESP-IDF:Configure ESP-IDF extension”,弹出新窗口"ESP-IDF Setup"。也可以从侧边栏的对应图标,进入到这个界面。
在这里插入图片描述
选择ADVANCED
在这里插入图片描述
上图中

  • “Select download server"用于设置下载服务器,这里选择国内的"Espressif”。
  • “Select ESP-IDF version"这里指定需要下载的版本,如果ESP-IDF已经提前下载下来了则选择"Find ESP-IDF in your system”
  • "Enter ESP-IDF container directory"指定下载的路径,如果前面选择了"Find ESP-IDF in your system"则这里指定ESP-IDF的本地路径
  • “Enter ESP-IDF Tools directory(IDF_TOOLS_PATH)”,这里使用默认的路径
  • “Select Python version"指定python的版本,这里选择的是python3
    随后点击install,会自动连接服务器进行下载。
    下载完毕后,选择"Download ESP-IDF Tools”
    在这里插入图片描述
    接下来就是等待下载完成了:
    在这里插入图片描述
    因为网络问题,下载工具随时会失败,而导致需要重启vscode,重复2.2节的步骤。不过需要注意的是,因为前面已经下载过对应版本的esp-idf了,所以
    “Select ESP-IDF version"选择的是"Find ESP-IDF in your system”。

最好提前在ubuntu的右上角的小图标的下拉菜单中选择setting->network点击"network proxy"右边的小齿轮,设置常规的梯子。(后面测试中,这种常规的梯子或者git专用梯子都不会有加速效果,如果真的一直失败,而墙内的网页打开又正常的话,可以试下proxychains,用proxychains code启动vscode)

安装完毕后,提示需要复制一串代码到终端内执行,"ESP-IDF Setup"页面就可以关闭了。
在这里插入图片描述
至此,ESP-IDF的配置结束。

3、 创建helloworld,并下载

在vscode内,按F1,然后输入“idf show”,在下拉栏里选择的"ESP-IDF:Show Examples Projects",再选择"use current ESP-IDF"

后面的一些设置,也往往是这样的形式:在vscode上方出现下拉栏,用户一次或者多次选择不同的选项,进行相关设置。

然后会弹出"ESP-IDF Examples"页面,在这里面选择hello_world,最后点击"Create project using example hello_world"
在这里插入图片描述
选择存放路径后,vscode内就会出现新创建的工程了:
在这里插入图片描述
观察到右下角有提示(在后面的过程中,看到要求安装啥就装啥,以免出现错误)
在这里插入图片描述
点击点击install进行安装,结束后,vscode下方出现如下的图标
在这里插入图片描述
部分图标的顺序也是用户首次操作的顺序,所以这里按照顺序讲解常用的几个图标。
1号图标代表当前连接的串口(与9号图标有关系),可以在插入开发板前后,分别使用ls /dev/tty*来判断开发板对应的串口。比如先点击1号图标,然后再在vscode 顶部弹出的下拉框中勾选/dev/ttyACM0,接着再勾选对应的工程hello_world。
ps:在虚拟机右下角可以点击这个图标,选择串口连接的是host还是当前虚拟机
在这里插入图片描述
2号图标用来设置目标器件,首先会在vscode 顶部弹出的下拉框中弹出对应的工程,选择后会弹出新下拉菜单:
在这里插入图片描述
根据自己芯片的类型进行选择,我在上面是选中了esp32s3,接下来再选择下载方式:
在这里插入图片描述
这里选择usb bridge,也就是外置的usb串口模块比如cp2102。
4号图标用于打开menuconfig,但vscode里的menuconfig做成了下面菜单选择页面:
在这里插入图片描述
比如这里修改flash size,可以通过左侧的"Serial flasher config"进入,也可以通过在最上方的"Search parameter"找到它。
6号图标用于编译,编译完毕,会显示相应的空间占用:
在这里插入图片描述
8号图标用于烧录固件,点击后将要在vscode 顶部弹出的下拉框中,选择需要下载的UART,接着就会触发下载动作,下载完毕后提示:
在这里插入图片描述

第一次烧录可能会出现较多问题,注意选择一根好的usb数据线。如果进入不了下载模式,则长按boot键,再按reset键,最后松开两个按键。
一些常见的问题在这片文章里有解决办法:<ESP32入门之程序烧录:烧录错误总结>。
注意执行“sudo usermod -a -G dialout $USER”后是需要重启才能生效的。
网上的一个说法是可以通过“sudo chmod -R 777 /dev/ttyACM0”类似这样的指令,临时解决这个提示“A fatal error occurred: Could not open /dev/ttyACM0, the port doesn’t exist”的问题。

9号图标用于显示当前的串口数据,点击后将会在TERMINAL窗口看到板子的打印效果:
在这里插入图片描述
10号图标融合了前面的 编译/下载/显示串口三个功能。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值