基于Linux配置乐鑫ESP32开发环境——小智学长桌面小屏幕项目复刻

桌面小屏幕开发环境记录

在复刻小智学长的“桌面小屏幕”项目中,写下了这份开发记录,本篇记录开发乐鑫 ESP32 的准备工作
希望能够帮助后来想要学习的小伙伴们~
注意使用的IDF版本为小智学长项目配套的4.4.2! 以下是参考资料:


1. Linux开发环境方案一 - VMware虚拟机

1.1 VMware Workstation Pro下载(使用版本:17)

这里给出VMware官网地址

  1. 首先在从 VMware 官网进入 Broadcom Support,并注册账号登录
    在这里插入图片描述
  2. 如下图所示,进入到下载界面,并直接搜索 VMware Workstation Pro!
    在这里插入图片描述
  3. 如下图所示,选择下载 Windows 个人版
    在这里插入图片描述

注意:检查网络适配器

安装 VMware 后需要确认自己的电脑是否成功安装VMware Network Adapter VMnet1VMware Network Adapter VMnet8两个网络适配器,否则会影响虚拟机的联网功能。

这里提供一种验证的方法:
Windows + R输入cmd调出窗口,输入ipconfig查看网络配置,出现下图所示则安装成功。

在这里插入图片描述

1.2 Ubuntu 下载与安装(使用版本:22.04)

这部分内容网上资源很多,且安装方式不难,我就不做过多的介绍~这里推荐下配置:

  • 内存 ≥ \geq 4096 MB
  • 硬盘 ≥ \geq 40GB
  • 处理器 ≥ \geq 2
  • 线程 ≥ \geq 2

1.3 VMware Tools 与共享文件夹

经过测试,在安装 Ubuntu 后,VMware Tools 会自动安装,此时可以观察到窗口自适应的效果,共享文件夹的设置方法请根据网上教程自行开启。

  • VMware设置共享文件夹后,虚拟机中仍然看不到,执行以下指令
# 建立共享文件夹
$ sudo mkdir /mnt/hgfs
$ sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other
1.3.1 VMware Tools 和 open-vm-tools(我用着也没效果)

经过测试,在安装 Ubuntu 后,VMware Tools 会自动安装,此时可以观察到窗口自适应的效果,共享文件夹的设置方法请根据网上教程自行开启。

  • VMware设置共享文件夹后,虚拟机中仍然看不到,执行以下指令
#
$ sudo mkdir /mnt/hgfs
$ sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other
1.3.2 Samba服务器配置

这部分我并未实际操作过,参考的小智学长的做法

sudo apt-get update 
sudo apt-get install samba
sudo gedit /etc/samba/smb.conf

# 末尾添加以下
[share]
        comment = samba home directory
        path = /home/xxxx/esp 你本机路径
        public = yes
        browseable = yes
        public = yes
        read only = no
        writable = yes
        create mask = 0777
        directory mask = 0777
        available = yes
        security = share

# 重启
sudo service smbd restart
sudo ufw allow samba

1.4 其他设置

1.5.1 切换无命令行模式

意思就是是以桌面化的形式启动还是命令行的形式启动

# 开机默认进入命令行模式
$ sudo systemctl set-default multi-user.target
# 开机默认进入图形用户界面
$ sudo systemctl set-default graphical.target 

1.5 在 Ubuntu 中配置 SSH

注意,如果安装 Ubuntu 服务器版本的的话,SSH会默认安装,可以跳过这一步。

如果安装的 Ubuntu 桌面版,参考以下指令:

  • SSH 操作指令
# 查看ssh版本
$ ssh -V

# 查看ssh是否启动
$ sudo ps -e | grep ssh
# ps -e 显示系统中所有正在运行的进程。
# 通过管道符号 |,结果会传递给 grep ssh,这会筛选出包含 "ssh" 字符串的进程。

# ssh卸载与安装
$ sudo apt-get remove openssh-server
$ sudo apt-get install openssh-server

# 启动ssh
$ sudo /etc/init.d/ssh start
# 重启ssh服务
$ sudo service ssh --full-restart

1.6 在 Window VS Code 中通过 SSH 命令行方式访问 Ubuntu

如何查看虚拟机 IP 地址:

# 查看 IP
$ ifconfig   
# 如果无法查看 --> 安装 net-tools
$ sudo apt-get install net-tools  

VSCode中安装SSH拓展并启动,填写如下信息,最后根据指引输入密码连接即可

  • HostHostName:虚拟机IP地址
  • User:虚拟机用户名

2. Linux开发环境方案二 - WSL2

使用微软自家的WSL2即可免去了下载VMware和安装的功夫,最重要的是windows和linux的协同,使得文件夹的共享变得方便
我个人是采用的这个方法,感觉比较方便,详细教程上网寻找,如果大家搞不定我再补充
参考微软官方文档安装即可,打开即用!

2.1 镜像网络配置(使用主机代理)

修改文件.wslconfig

2.2 USB串口的接收(唯一的问题)(未完成)

WSL2 串口配置官方参考文档:适用

总结版:

  1. 下载安装 usbipd-win 项目
  2. 连接 USB 串口设备
  3. 管理员模式打开 PowerShell 并输入usbipd list

3. 乐鑫ESP32 SDK环境搭建(基于Ubuntu 22.04)

3.1 更新

# 更新软件包列表
$ sudo apt-get update

# 更新已安装的软件,时间可能比较长,可以跳过
$ sudo apt-get upgrade

3.2 安装环境依赖工具

# 4.4版本项目
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

# 新版本项目
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

3.3 下载 ESP-IDF 源码(下载版本:4.4.2)

因为 GitHub 的网络连接问题出现错误,使用乐鑫官方的 esp-gitee-tools 下载工具,将 GitHub 的地址自动替换成 jihulab 上的镜像地址

$ mkdir -p esp
$ cd ~/esp

# 使用乐鑫工具,有代理的可以忽略
$ git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
$ cd esp-gitee-tools
$ ./jihu-mirror.sh set  # 执行脚本
$ cd ..

# 注意这里下载的是4.4版本的esp-idf
$ git clone -b release/v4.4 --recursive https://github.com/espressif/esp-idf.git

# 如果下载过程中出现子模块没更新成功,可以进入esp_idf目录内,单独更新子模块,让子模块也切换成对应版本
$ git submodule update --init --recursive
# --init:初始化子模块(如果它们还没有被初始化)
# --recursive:递归地更新子模块,确保子模块中的子模块也被正确初始化和更新

3.4 安装编译链

除了 ESP-IDF 本身,您还需要安装 ESP-IDF 使用的各种工具,比如编译器、调试器、Python 包等。

由于访问 Github 较为缓慢,通过设置一个环境变量,实现优先选择 Espressif 的下载服务器进行 Github 资源下载:

$ cd ~/esp/esp-idf

# 选择 Espressif 的下载服务器,如果你能用代理就不需要这一条
$ export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"

$ ./install.sh

等待完成后提示如下所示,我们的esp-idf 就部署完成了!

Installing collected packages: reedsolo, pyserial, pyparsing, pygdbmi, pyelftools, construct, brotli, bitstring, zstandard, Werkzeug, urllib3, tqdm, six, pyyaml, Pygments, pycparser, packaging, msgpack, MarkupSafe, kconfiglib, itsdangerous, idna, greenlet, future, filelock, contextlib2, colorama, click, charset-normalizer, certifi, schema, requests, python-engineio, jinja2, gevent, ecdsa, cffi, requests-toolbelt, requests-file, python-socketio, Flask, cryptography, cachecontrol, Flask-SocketIO, Flask-Compress, idf-component-manager, gdbgui
Successfully installed Flask-0.12.5 Flask-Compress-1.15 Flask-SocketIO-2.9.6 MarkupSafe-2.1.5 Pygments-2.18.0 Werkzeug-0.16.1 bitstring-3.1.9 brotli-1.1.0 cachecontrol-0.14.0 certifi-2024.8.30 cffi-1.17.1 charset-normalizer-3.3.2 click-8.1.7 colorama-0.4.6 construct-2.10.54 contextlib2-21.6.0 cryptography-43.0.1 ecdsa-0.19.0 filelock-3.16.0 future-1.0.0 gdbgui-0.13.2.0 gevent-1.5.0 greenlet-3.0.3 idf-component-manager-1.5.3 idna-3.8 itsdangerous-2.0.1 jinja2-3.0.3 kconfiglib-13.7.1 msgpack-1.1.0 packaging-24.1 pycparser-2.22 pyelftools-0.31 pygdbmi-0.9.0.2 pyparsing-2.3.1 pyserial-3.5 python-engineio-3.14.2 python-socketio-4.6.1 pyyaml-6.0.2 reedsolo-1.5.4 requests-2.32.3 requests-file-1.5.1 requests-toolbelt-1.0.0 schema-0.7.5 six-1.16.0 tqdm-4.66.5 urllib3-1.26.20 zstandard-0.23.0
All done! You can now run:

  . ./export.sh

3.5 设置 ESP-IDF 的环境变量

此时,您刚刚安装的工具尚未添加至 PATH 环境变量,无法通过“命令窗口”使用这些工具。因此,必须设置一些环境变量,这可以通过 ESP-IDF 提供的另一个脚本完成:

# 执行脚本文件
$ . $HOME/esp/esp-idf/export.sh

运行成功后提示如下所示:

Done! You can now compile ESP-IDF projects.
Go to the project directory and run:

  idf.py build

注意,该设置只是针对当前登录的用户,我们退出了重新登录,这些环境变量就没有了,我们又要重新执行一下以上命令。 如果您需要经常运行 ESP-IDF,您可以为执行 export.sh 创建一个别名,具体步骤如下(也推荐在 Ubuntu 中直接打开 bashrc 添加命令,省去了使用 vim 的过程):

  1. 在终端中使用 vim 打开 bashrc:
    sudo apt-get install vim
    vim ~/.bashrc
  2. 按键盘i按键进行编辑,把以下路径添加到本地环境变量中:
    alias get_idf='. $HOME/esp/esp-idf/export.sh'
  3. 按esc按键退出编辑,写入 :wq别漏冒号)保存退出
  4. 执行以下命令同步环境变量、刷新配置文件
    source ~/.bashrc
  5. 直接执行 get_idf 即可

现在您可以在任何终端窗口中运行 get_idf 来设置或刷新 esp-idf 环境。

3.6 判断是否搭建成功

这里参考的小智学长的指令查看

kemp@ubuntu:~/work/esp/esp-idf$ idf.py --version
ESP-IDF v4.4.2-296-g4b8915d7af-dirty

kemp@ubuntu:~/work/esp/esp-idf$ git log
commit 4b8915d7af37b0cdb9ae2bc3a95c9f1bc797f6e0 (HEAD -> release/v4.4, origin/release/v4.4)
Merge: 7cedbfabdf e4df3e2ad7
Author: Island <island@espressif.com>
Date:   Wed Sep 21 11:31:55 2022 +0800

    Merge branch 'bugfix/lpn_not_recv_message_to_all_node_4.4' into 'release/v4.4'
    
    ble_mesh: stack: Add option for lpn auto sub all-nodes(v4.4)
    
    See merge request espressif/esp-idf!20264

3.7 版本查看与同步

如果你已经下载了其它版本的IDF,可以自行切换

# 回到idf原始目录
$ cd $IDF_PATH

# 用于从远程仓库拉取最新的更改,但不自动合并这些更改到本地分支
$ git fetch 

# 切换到特定的版本 vX.Y.Z
$ git checkout vX.Y.Z   

# 确保所有子模块都正确地下载和更新到当前指定的版本
$ git submodule update --init --recursive   

重新执行设置后,执行get_idf

3.8 ipy.py的常用命令

● idf.py --help:可显示命令列表和使用说明。
● idf.py set-target esp32c3:设置编译目标,如替换为esp32c3。
● idf.py menuconfig:运行 menuconfig 终端图像化配置工具,可以选择或修改配置选项,配置结果将保存在sdkconfig文件中。
● idf.py build:开始编译代码,编译产生的中间文件和最终的可执行程序将默认保存在项目的build目录。编译过程是增量式的,如果仅对一个源文件进行修改,在下次编译时将只编译已修改的文件。
● idf.pyclean:清理项目编译产生的中间文件,下次编译时会强制编译整个项目。需要注意,清理时不会删除CMake配置和使用menuconfig修改的配置。
● idf.py fullclean:删除整个build目录下的内容,包括所有CMake的配置输出文件。在下次构建项目时,CMake会从头开始配置项目。请注意,该命令会递归删除构建目录下的所有文件,请谨慎使用,项目配置文件不会被删除。
● idf.py flash:将 build 生成的可执行程序二进制文件烧录到目标 ESP32-C3 中。选项-p <port_name>-b <baud_rate>分别用于设置串口的设备名和烧录时的波特率,如果不指定这两个选项,将自动搜索串口并使用默认的波特率。
● idf.py monitor:用于显示目标ESP32-C3的串口输出。选项-p可用于设置主机端串口的设备名,在串口打印期间,可按下组合键Ctrl+] 退出监视器。

4. 第一个工程Hello_World-未完待续

4.1 创建工程

# 提取 helloworld 工程模板
$ cd ~/esp
$ cp -r esp-idf/examples/get-started/hello_world .
$ cd ~/esp/hello_world

# 设置目标板卡相关
$ idf.py set-target esp32         

4.2 工程编译指令

# 配置环境
$ get_idf 
$ idf.py build 

4.3 烧录运行

把设备 USB 口接到电脑后,检查新增设备号,如果使用的 WSL2 请先添加 USB 设备,在其对应章节中有提到

# 查看设备号
$ ls /dev/tty   
# 查看所有的USB端口连接
ls /dev/tty*
# 查看新增的设备号
ls /dev/ttyU* 

# 烧录
$ idf.py -p /dev/ttyUSB0 flash   
# 监视器   
$ idf.py -p /dev/ttyUSB0 monitor  
# 结合版 --> 构建、下载、监视一体
$ idf.py -p /dev/ttyUSB0 flash monitor  

使用快捷键 Ctrl+],退出 IDF 监视器

到这里,第一个工程就完成啦!剩下的就靠朋友们自己啦!

番外1 Git的简单使用(未完成)

使用Git管理本地仓库的好处是,可以知道自己每次修改了哪些内容,随时进行版本切换。

git config user.name “freedom”
git config user.email

一、仓库初始化
git init
添加.gitignore build

二、打标签
git tag -a v1.2 -m “esp log”

三、查看标签
git tag -l

四、查看标签,每个标签查看5行
git tag -n5

五、切换指定标签且新建分支
git checkout -b dev v1.2

六、回退到某个标签版本
git reset --hard v1.1

七、删除分支
git branch -d dev

如果切换过程中,提示本地源码有修改未提交:

error: Your local changes to the following files would be overwritten by checkout:
        main/src/driver/ds_screen.c
Please commit your changes or stash them before you switch branches.
Aborting

解决方法:
1、保存修改,然后切换
git add *
git commit -m “修改了xxx”
git checkout dev1
2、放弃修改,然后切换
git checkout .
git checkout dev1

番外 idf.py常用命令(未完成)

idf.py的常用命令如下:
● idf.py --help:可显示命令列表和使用说明。
● idf.py set-target xxx :设置编译目标,如将 替换为esp32c3。
● idf.py menuconfig:运行menuconfig终端图像化配置工具,可以选择或修改配置选项,配置结果将保存在sdkconfig文件中。
● idf.py build:开始编译代码,编译产生的中间文件和最终的可执行程序将默认保存在项目的build目录。编译过程是增量式的,如果仅对一个源文件进行修改,在下次编译时将只编译已修改的文件。
● idf.pyclean:清理项目编译产生的中间文件,下次编译时会强制编译整个项目。需要注意,清理时不会删除CMake配置和使用menuconfig修改的配置。
● idf.py fullclean:删除整个build目录下的内容,包括所有CMake的配置输出文件。在下次构建项目时,CMake会从头开始配置项目。请注意,该命令会递归删除构建目录下的所有文件,请谨慎使用,项目配置文件不会被删除。
● idf.py flash:将build生成的可执行程序二进制文件烧录到目标ESP32-C3中。选项-p <port_name> 和-b <baud_rate> 分别用于设置串口的设备名和烧录时的波特率,如果不指定这两个选项,将自动搜索串口并使用默认的波特率。
● idf.py monitor用于显示目标ESP32-C3的串口输出。选项-p可用于设置主机端串口的设备名,在串口打印期间,可按下组合键Ctrl+] 退出监视器。

​ 以上命令也可以组合输入,如命令idf.py build flash monitor将依次进行代码编译、下载、打开串口监视器等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值