目录
一、背景说明
ESP32的开发环境可分为两种:
1. ubuntu编译+esp-idf
2.windows编译+esp-idf
官方推荐用第一种,因为ubuntu编译速度快
二、ubuntu编译+esp-idf
为了能够使用ubuntu系统,我们windows用户可以在电脑中安装虚拟机并创建ubuntu虚拟机。然后在windows上面安装mobaxterm工具,以便能够登录到ubuntu账户;在windows上面安装vscode,并利用Remote SSH登录到ubuntu账户,以便进行开发编译。
(为什么esp-idf运行在Ubuntu,还需要在windows上面安装这么多东西?这是因为由于电脑资源限制,我安装的ubuntu系统是服务器版本,没有用户交互界面,所以需要借助windows上面的一些工具进行开发,代码的编辑主要还是在vscode上面完成的)
1.下载并安装虚拟机VMware Workstation
2.下载ubuntu20.04.6服务器版镜像(ubuntu-20.04.6-live-server-amd64.iso)。为什么选择服务器版?因为资源占用少
镜像下载地址:Index of /ubuntu-releases/20.04/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
3.在虚拟机VMware Workstation中安装ubuntu20.04,过程中分配的内存要大一点,如100G或200G,注意要选择SSH,同时注意选择不更新。安装完成后,需要使用你安装过程中设置的账号密码登录(假设账号名为nola),使用sudo apt-get install net-tools安装网络工具,以便于用ifconfig指令能够读取ubuntu的ip
4.在windows中安装mobaxterm工具
5.在mobaxterm工具中登录到ubuntu20.04
6.利用mobaxterm工具,在Ubuntu中安装开发相关的工具,指令如下:
1)安装Ubuntu必要的开发工具:
sudo apt-get install git wget flex bison gperf python3-pip python3-venv cmake ninja-build libffi-dev libssl-dev dfu-util libusb-1.0.0 net-tools
2)安装esp-idf(先拉取esp-gitee-tools,然后利用它辅助拉取esp-idf的SDK,这样可以解决github的网络问题,因为esp-gitee-tools可以将github的地址替换成镜像地址):
mkdir esp32
cd esp32
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
此时输入ls指令可以看到esp-gitee-tools
cd ./esp-gitee-tools/
此时输入ls指令可以看到jihu-mirror.sh
./jihu-mirror.sh
./jihu-mirror.sh set
cd ..
git clone --recursive https://github.com/espressif/esp-idf.git
此时输入ls指令可以看到esp-gitee-tools esp-idf
cd ./esp-idf
git checkout v5.2
git submodule update --init --recursive
../esp-gitee-tools/install.sh
3)编译
到此基本环境就安装完毕,接下来就可以进行开发了。我以现在的开发版例程进行学习,如下:
git clone --recursive https://gitee.com/vi-iot/esp32-board.git
此时输入ls指令可以看到esp32-board esp-gitee-tools esp-idf
cd ./esp32-board
此时输入ls指令可以看到
aliot ble_basic button display ledc mqtt nvs partition rtos smartconfig spiffs sr602 weather wifi
ap_prov ble_env dht11 helloworld lvgl_display ntc onenet README.md sdcard softap sr04 uart web_monitor ws2812
设置esp32的环境变量:
cd ../esp-idf
source export.sh
以上设置成功后,若电脑重启环境变量又无效了,idf.py命令无法被识别,这是因为上面设置的环境变量是临时的,每次重启需要重新设置。那么如何一劳永逸的设置呢?如下:
回到默认终端登录路径
cd ~
输入ls -al可以看到很多文件,存在.profile文件,该文件是登录中断后会默认执行的,我们可以在里面加入设置环境变量的语句
vim ./.profile
在弹出的文件底部加入source esp32/esp-idf/export.sh,保存后退出
可以通过退出ubuntu终端后重新登录,验证是否设置生效:
exit 按下R键重新登录
编译例程程序helloworld:
cd ../esp32-board/
cd ./helloworld
idf.py build
插入板子,注意把板子接入到ubuntu,烧录:
idf.py flash
如果提示Permission denied: /dev/ttyUSB0错误,请运行sudo chmod 777 /dev/ttyUSB0 赋予权限。如果我们重新插入开发板或者重启电脑,都有可能会出现这个权限问题。一劳永逸的解决办法如下:
sudo usermod -aG dialout nola
此时再运行idf.py flash会出现/dev/ttyUSB0正在忙或者不存在的问题,解决办法是回到虚拟机,选择虚拟机中的ubuntu,右键后在下拉的菜单中选择设置,选择USB控制器,选择USB 3.1后点击确认。此时重新连接终端进行烧录错误就不存在了
调试 (退出调试请按ctrl+]键):
idf.py monitor
7.在windows上面安装VSCode,在VSCode里面进行如下操作
1)安装Remote - SSH插件,以便于能够登录到ubuntu。登录成功后如下:
2)选择打开文件夹esp32/esp32-board/helloworld
3)下载插件(注意选择SSH:192.168.152.128安装插件):
下载插件C/C++、ESP-IDF
4)将esp-idf的源码路径加入到工程中,可以搜索函数、跳转函数、查看函数源码等
实现方式:按下ctrl+shift+P,选择ESP-IDF: Add vscode Configuration Folder
5)优化配置:
vscode中C/C++插件:点击C/C++插件旁边的小齿轮,找到扩展设置,在弹出的输入框中输入空格+workspace,找到100%CPU处,将值调整为medium。(这是因为此处默认是最高值,这会导致这个插件在运行时会100%占用ubuntu的CPU,显然我们不希望那么做)
vscode中连接ubuntu时,在进行某些操作时总是需要输入密码,如何可以不用输入密码?SSH登录是一个加密登录的方式,可以使用密码登录,也可以使用证书登录,用证书的方式就可以不用输入密码了。如何做呢?即在ubuntu中添加windows的公钥。
打开windows下的Powershell,生成证书文件。
ssh-keygen -t ed25519 -C wsy001223@163.com
生成的证书路径如下:C:\Users\nola\.ssh,其中id_ed25519(私钥)与id_ed25519.pub(公钥)就是本次生成的文件。
复制id_ed25519.pub文件的内容,将通过mobaXterm,将内容粘贴进ubuntu默认登录路径.ssh文件夹下的认证密钥文件中。(通过vscode修改.ssh文件夹下的认证密钥文件也可以)
三、windows编译+esp-idf
1.安装git
下载地址:Git - Downloading Package
2.在windows上面安装VSCode,在VSCode里面进行如下操作
1)下载插件:下载插件C/C++、ESP-IDF
2)左侧栏选中ESP-IDF小图标,点击Configure ESP-IDF Extension
3)在弹出来的界面中选择ADVANCED。在你要安装的路径上面新建一个esp32文件夹,如E:\esp32。随后在第一、第二项选择版本,第三、第四项分别填入E:\esp32、E:\esp32\.espressif,最后开始安装
可能出现python安装问题,因为网络问题。
如果失败了,可以配置网络环境(如VPN)后重试。直接在ESP-IDF首页选择USE EXISTING SETUP进行安装,可以不重复已经下载成功的,仅下载未成功安装的
3. 在esp32 文件中使用git如下指令下载开发板例程:
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
cd ./esp-gitee-tools
./jihu-mirror.sh set
cd ..
git clone --recursive https://gitee.com/vi-iot/esp32-board.git
4.选择helloworld工程,使用vscose上面的图标进行编译、烧录、调试
退出调试需要按下ctrl+]键
5.此处有疑问:如果我不使用vscode里面的图标,如何利用命令行进行编译、烧录、调试
1)无法直接在vscode中使用命令行,因为vscode无法识别idf.py
2)新建两个系统环境变量
IDF-PATH: 如E:\esp32\v5.2.3\esp-idf
IDF-TOOLS-PATH: E:\esp32\.espressif
3) 新建CMD命令窗口,输入命令
cd /d %IDF_PATH%/../..
set PATH=%IDF_TOOLS_PATH%/python_env/idf5.2_py3.11_env/Scripts/;%PATH%
%IDF_PATH%/export.bat
4)此时打开CMD命令窗口进入esp32-board文件夹任意例程,即可开始编译
idf.py fullclean
idf.py build
idf.py menuconfig
idf.py flash