前言
很多安装ESP-IDF的教程文章,都没有详细说明安装过程中,对应步骤的作用。同时网上也缺少纯命令行快速安装esp-idf的完整资料文章。我根据网上搜索找到的资料、以及自己安装几次环境的经验,写一下Ubuntu18.04命令行安装ESP-IDF环境的心得。
以下安装命令已考虑国内下载慢的问题,均使用国内资源加速下载过程。
源码篇
想使用esp32开发程序,就必须先下载esp-idf。
我们可以通过以下命令从官方仓拉取esp-idf的源码。
git clone https://gitee.com/EspressifSystems/esp-idf.git
拉取下来的文件目录结构如图:
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
完成子仓源码的拉取后,源码部分的工作就完成了。接下来可以安装工具链了。
安装编译工具链
安装前的准备工作(建议使用常规用户,而不是ROOT用户执行命令):
- 修改Ubuntu18.04的系统软件安装源,调整成国内源
- 切换Ubuntu18.04系统Python版本
- 修改pip的安装源,调整成国内源
- 安装编译所需的常规依赖软件包
现在开始修改系统软件安装源
一般建议先备份系统原有的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
接下来我们执行以下命令,确保系统的python使用了python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
该命令使用了Ubuntu系统自带的环境切换脚本,比手动执行python版本替换要靠谱一些。
接下来把pip的安装源替换成国内源,执行以下命令替换成阿里云pip源。
pip
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip config set global.trusted-host mirrors.aliyun.com
最后,安装常见编译软件、以及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
至此,准备工作都完成了。特别说明一下,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环境。