• 在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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意:可能是同一个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
    
    • 1

    最好是从网站上下载一个新版本的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
    
    • 1

    实际上还要加装了一个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号图标融合了前面的 编译/下载/显示串口三个功能。

  • 相关阅读:
    EasyNVR平台级联到EasyCVR,视频播放一会就无法播放是什么原因?
    【MySQL基础|第一篇】——谈谈SQL中的DDL语句
    《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》
    腌萝卜很好吃
    云服务器与内网穿透有什么区别?哪个好用?
    《进阶篇第9章》学习vuex知识点后练习:把求和案例改成mapState与mapGetters
    2023牛客暑假多校第四场(补题向题解:J)
    3.9-Dockerfile实战
    使用米联客FPGA开发板进行光口开发时遇到的问题总结
    关于打印输出
  • 原文地址:https://blog.csdn.net/chenbb8/article/details/127989178