Ubuntu - 20.04系统安装乐鑫ESP-IDF工具链(2) --- 安装IDF
ESP-IDF的安装
乐鑫ESP-IDF工具链
ESP-IDF 是乐鑫官方的物联网开发框架,适用于 ESP32、ESP32-S 和 ESP32-C 系列 SoC。它基于 C/C++ 语言提供了一个自给自足的 SDK,方便用户在这些平台上开发通用应用程序。
就目前我们这边的反馈情况来看大部分初次使用的ESP32
的用户对于ESP-IDF
仍然是有安装不够友好,安装困难以及从安装到放弃等情况的出现。
因此我们在这里根据乐鑫官网上的的搭建教程编写这篇文章来帮助更多的用户,也记录本人在多次安装过程中碰到的各种问题以及解决方案。
ESP-IDF入门指南:https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/index.html
安装IDF
在我们的上一篇文章我们在虚拟机中安装好了Ubuntu 20.04 的操作系统,这里我们不再介绍 ubuntu 的安装与设置
打开IDF入门指南:https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/index.html
打开之后点击开到详细安装步骤
部分,乐鑫官方的安装指南给我们提供了详细的安装流程,分为了以下两大部分
第一步:安装准备
我们跟随乐鑫文档的步伐来到 第一步:安装准备
,我们使用的是linux系统,点击linux之后开始我们的配置过程
下面介绍有 编译 ESP-IDF 需要的软件包 ,我们点击左下角的菜单栏,找到Terminal/中文(终端)
,打开
复制linux下的安装命令,输入到ubuntu打开的窗口中
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
要求输入密码,输入密码之后 Y
确认回车,耐心的等待下载
下载完成
如果最终出现的界面不是 processing triggers for install - info...
而是其他的有 fail 之类的失败的那么重新输入命令重复下载几次就好了,会有成功的
如果是语言设置成中文很容易就能看懂是不是成功了(忘了设置成中文了,后面设置)
第二步:获取 ESP-IDF
乐鑫官方文档提供了以下三条命令
mkdir -p ~/esp
cd ~/esp
git clone -b v4.4.1 --recursive https://github.com/espressif/esp-idf.git
这里我们一条一条执行
遇到的问题:
报错:fatal: unable to access 'https://github.com/espressif/esp-idf.git/': Failed to connect to github.com port 443: Connection refused
我们看到最后一条命令在执行的时候部分同学会跟我下面一样出现 拒绝连接 而失败的情况,值得一说的是不是所有人都会出现这个情况,本人测试科学上网之后就好了,跟自己的网络环境有关系
解决方案:
方法一:
上面那条命令失败了那我们的解决方案就是将上面执行的命令 git clone -b v4.4.1 --recursive https://github.com/espressif/esp-idf.git 分成下面四个命令去实现成功率会高一些
cd ~/esp
git clone https://github.com/espressif/esp-idf.git
cd esp-idf
git submodule update --init
第一次安装的时候换成这四条命令成功了,不知道为什么在写文章的时候重新搭建又不行了,真是头秃
方法二:
文章是我第一次走过一边流程之后重新写再走一边流程的,然而又碰到了新的问题
github死活都是拒绝连接
还是建议科学上网,ubuntu下记得设置好代理,不然在终端里面会无效
网上也有人说把乐鑫在github上面的克隆下来
总之,这一步失败绝大部分是网络问题
,建议科学上网完美解决
第三步:设置工具
乐鑫的入门文档同样提供了相应的指令,都有较为详细的说明
Linux 和 macOS 操作系统
cd ~/esp/esp-idf
./install.sh esp32
或使用 Fish shell
cd ~/esp/esp-idf
./install.fish esp32
注解:通过一次性指定多个目标,可为多个目标芯片同时安装工具,如运行 ./install.sh esp32,esp32c3,esp32s3。 通过运行 ./install.sh 或 ./install.sh all 可一次性为所有支持的目标芯片安装工具。
方法一:
我们执行命令:./install.sh all
,接下来就会下载ESP32的编译工具了
./install.sh all
如果下载不了或者下载缓慢可以先执行命令 export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
之后再执行 ./install.sh all
IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh all
上面命令都是要在 esp/esp-idf
的文件路径下执行的
按照上面的方法一般都不会有问题,下载好的文件都在 .espressif/tools
文件夹下(前面有个点是隐藏文件需要勾选显示隐藏文件才能看到)
方法二:使用方法一还是下载不了可以手动下载过来之后解压添加到对应的文件夹里面也是可以的,一共7个文件,对应下面7个下载链接
https://dl.espressif.com/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz
https://dl.espressif.com/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz
https://dl.espressif.com/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/xtensa-esp32s3-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz
https://dl.espressif.com/github_assets/espressif/crosstool-NG/releases/download/esp-2021r2-patch3/riscv32-esp-elf-gcc8_4_0-esp-2021r2-patch3-linux-amd64.tar.gz
https://dl.espressif.com/github_assets/espressif/binutils-esp32ulp/releases/download/v2.28.51-esp-20191205/binutils-esp32ulp-linux-amd64-2.28.51-esp-20191205.tar.gz
https://dl.espressif.com/github_assets/espressif/binutils-esp32ulp/releases/download/v2.28.51-esp-20191205/binutils-esp32s2ulp-linux-amd64-2.28.51-esp-20191205.tar.gz
https://dl.espressif.com/github_assets/espressif/openocd-esp32/releases/download/v0.11.0-esp32-20220411/openocd-esp32-linux-amd64-0.11.0-esp32-20220411.tar.gz
下载好对应的文件之后放到 .espressif/tools
文件夹下 ,其中 esp32s2ulp-elf
和 esp32ulp-elf
这两个文件夹可以不用放进去,会自己下载好,对照下图七个文件
再执行命令 ./install.sh all
安装其余文件即可
只建议在上面的七个文件中有下载不了的这样去操作,当然一般也是不需要这样去特别操作的
第四步:设置环境变量
下面是乐鑫的入门文档提供了的配置指令,有详细的说明
Linux 和 macOS 操作系统
请在需要运行 ESP-IDF 的终端窗口运行以下命令:
. $HOME/esp/esp-idf/export.sh
对于 fish shell(仅支持 fish 3.0.0 及以上版本),请运行以下命令:
. $HOME/esp/esp-idf/export.fish
注意,命令开始的 “.”
与路径之间应有一个空格!
如果您需要经常运行 ESP-IDF
,您可以为执行 export.sh
创建一个别名,具体步骤如下:
1、复制并粘贴以下命令到 shell 配置文件中(.profile, .bashrc, .zprofile 等)
alias get_idf='. $HOME/esp/esp-idf/export.sh'
2、通过重启终端窗口或运行 source [path to profile]
,如 source ~/.bashrc
来刷新配置文件。
现在您可以在任何终端窗口中运行 get_idf
来设置或刷新 esp-idf 环境
。
这里不建议您直接将 export.sh
添加到 shell 的配置文件。因为这会导致在每个终端会话中都激活 IDF 虚拟环境(包括无需使用 IDF 的情况),从而破坏使用虚拟环境的目的,并可能影响其他软件的使用。
我们执行命令 . $HOME/esp/esp-idf/export.sh
即可,比较简单的过程
. $HOME/esp/esp-idf/export.sh
第五步:开始创建工程
乐鑫的示例我们在路径 ~/esp/esp-idf/examples
中可以找到,下面打开 examples/get-started
里面 hello_world
的示例进行编译
我们将前面提到的 ~/esp/esp-idf/examples hello_world/get-started
路径下的 hello_world
示例复制到 ~/esp
如下所示
那么这个就是我们的示例工程,其他的大量示例我们也可以同样的复制出来到我们自己工程的位置
第六步:配置
执行下面命令打开前面提到的 hello_world
工程所在的文件夹
cd ~/esp/hello_world
下面这个选择对应的型号或系列的芯片进行设置,这个操作会清除并且初始化之前配置好的设置
idf.py set-target esp32
下面我们执行指令进行配置
idf.py menuconfig
当我们输入完命令 idf.py menuconfig
之后会弹出如下界面可以自行研究进行配置一下
不配置就按 ESC
退出
第七步:编译工程
我们执行以下命令编译我们刚才的 hello_world
工程
idf.py build
首次编译时间略长,耐心等待之后编译完成
到这里我们在 ubuntu 系统下搭建 IDF 的工具就完成了,后面烧录到设备参照乐鑫入门指南的第九步即可,我这里虚拟机略微麻烦一些就不做截图演示了
烧录指令
idf.py -p PORT [-b BAUD] flash
中间的参数为波特率,默认 460800
,参照入门指南
总结
搭建的时候没有科学上网在克隆ESP-IDF
下来的时候过程尤为艰辛,一路搭建过来遇到不少问题一点一点的分析解决查了不少资料!
没有科学上网的话乐鑫的环境搭建感觉相当不友好,两次搭建碰到的都是不同的报错和问题,不过基本都是网络环境问题导致的!
另外也相信同样有不少人碰到其他的问题可以在下方留言大家探讨解决,也可以提出更简易稳定的搭建方法,感谢大佬们的一键三连!