[经验分享] 【基于AI摄像头的场景重现项目】ESP-IDE 环境 -- 命令行安装过程详细解析

walker2048   2022-10-18 22:42 楼主

前言

很多安装ESP-IDF的教程文章,都没有详细说明安装过程中,对应步骤的作用。同时网上也缺少纯命令行快速安装esp-idf的完整资料文章。我根据网上搜索找到的资料、以及自己安装几次环境的经验,写一下Ubuntu18.04命令行安装ESP-IDF环境的心得。

以下安装命令已考虑国内下载慢的问题,均使用国内资源加速下载过程。


1. 获取 esp-idf 源码

想使用esp32开发程序,就必须先下载esp-idf。

我们可以通过以下命令从官方仓拉取esp-idf的源码。

git clone https://gitee.com/EspressifSystems/esp-idf.git

拉取下来的文件目录结构如图:

poYBAGLBpn-AeyDLAAFCWveHs0Y485.png

ESP-IDF框架包含了esp32所有设备的源码、组件以及示范代码。examples目录里有非常多的示范代码,作为入门参考来说已经足够了。components目录包含了esp32设备源码、常用组件(官方组件库及RTOS等各种第三方库)。

使用国内源加速的话,我们还需要拉取gitee工具脚本仓

git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git

工具脚本仓里,包含两个工具,submodule-update.sh(子仓拉取脚本),install.sh(工具链安装脚本)。现在还不需要使用工具仓的脚本。因为我们通过以上命令下载下来的源码,是master分支,需要切换到需要用到的release分支。例如下面的命令就是进入esp-idf文件夹,并切换到4.4分支:

切换分支

ESP-IDF框架,不同分支支持的设备、函数是有少量的区别的。如果没有旧项目的分支需求,可以考虑使用最新release版本的分支(不建议使用master分支)。同时使用git拉取的方式,可以很方便的切换ESP-IDF的分支(切换完成后重新安装对应分支的工具链即可)。

cd esp-idf
git checkout 4.4

注意事项:若使用过一段时间ESP-IDF环境后,想切换版本。建议先试用git reset --hard方式强制将esp-idf目录恢复至原始版本后,再执行git checkout切换版本。切换版本后需要重新拉取子仓,以及安装工具链。

拉取子仓代码

前面我们已经拉取了gitee工具仓,选择好分支后,我们可以直接在esp-idf文件夹中执行下面的命令,通过gitee拉取子仓代码。

../esp-gitee-tools/submodule-update.sh

完成子仓源码的拉取后,源码部分的工作就完成了。接下来可以安装工具链了。


2. 安装编译工具链

安装前的准备工作(建议使用常规用户,而不是ROOT用户执行命令):
  1. 修改Ubuntu18.04的系统软件安装源,调整成国内源
  2. 切换Ubuntu18.04系统Python版本
  3. 修改pip的安装源,调整成国内源
  4. 安装编译所需的常规依赖软件包
现在开始修改系统软件安装源

一般建议先备份系统原有的sources.list 文件,如果不熟悉vim,也可以使用其他的编辑工具完成对应工作。

cd /etc/apt/
sudo cp sources.list sources.list.bak
sudo vim sources.list

将sources.list 文件的内容清空,替换成以下的内容:

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

替换完文件的内容后,可以执行以下命令更新软件包索引文件。

sudo apt-get update

接下来,安装常见编译软件、以及ESP-IDF工具链所需的软件包

sudo apt-get install git wget flex bison gperf python python-pip python-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util

然后我们执行以下命令,确保系统的python使用了python3

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

该命令使用了Ubuntu系统自带的环境切换脚本,比手动执行python版本替换要靠谱一些。

接下来把pip的安装源替换成国内源,执行以下命令替换成阿里云pip源。
pip --version
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip config set global.trusted-host mirrors.aliyun.com

至此,准备工作都完成了。特别说明一下,ninja-build, ccache两个软件包是加快esp-idf编译的两个重要软件包,建议安装。


现在我们可以开始安装工具链了,如果不介意多使用一些硬盘空间,可以直接使用gitee工具仓的install.sh脚本直接安装工具链(该脚本不可指定设备安装,只能全部设备的工具链都安装,包括esp32,esp32-c3,esp32-s2等设备)。

在ESP-IDF源码根目录执行以下命令安装所有设备的工具链

../esp-gitee-tools/install.sh

使用gitee工具仓中的安装脚本,将自动从国内源下载工具链,下载速度是很快的。

如果不想安装所有设备的工具链,例如只安装esp32-c3所需的工具链,我们可以通过两种方式来修改工具链下载地址。两种方法任选其一即可。
方式一、在Bash环境中设置IDF_GITHUB_ASSETS环境变量

export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"

这种方式相对第二种方式,更柔和一些,并不会修改esp-idf的文件内容。一般情况下建议这样安装。

方式二、通过直接改写tools.json里的下载地址,实现国内加速

在ESP-IDF源码根目录执行以下命令,替换工具链下载地址

sed -i 's,"url": "https://github.com/,"url": "https://dl.espressif.com/github_assets/,g' tools/tools.json

调整完工具链下载地址,现在可以安装工具链了,只安装esp32-c3所需的工具链可以执行以下命令

./install.sh esp32-c3

注意事项:安装脚本默认是在用户根目录创建一个独立的python虚拟环境,并将工具链和对应的脚本放入虚拟环境中。执行安装脚本时不能处于python虚拟环境的使用状态。安装完成后,建议在bashrc中添加一个alias,用于唤起ESP-IDF环境。

 

本帖最后由 walker2048 于 2022-10-18 22:44 编辑

回复评论 (3)

esp-idf 环境安装还是比较方便的,开发时要对一些命令有一定的了解。

点赞  2022-10-19 13:22
引用: wangerxian 发表于 2022-10-19 13:22 esp-idf 环境安装还是比较方便的,开发时要对一些命令有一定的了解。

是的,命令行越用越开心

点赞  2022-10-20 10:39
引用: walker2048 发表于 2022-10-20 10:39 是的,命令行越用越开心

哈哈,是的,用界面操作很多都操作不了。命令行还可以单独下载某个区域的内容。

点赞  2022-10-20 11:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复