前言

这是一篇水贴。。。

这里记录了这几天安装esp-idf的一些过程,涉及到了换软件源(github镜像)的一些操作,可能会对大家有些许帮助,所以整理之后发布出来。

另外,本人的开发机是 ArchLinux,里面有些软件包的名字可能和 ubuntu/CentOS 等系统中不一样,这些系统按照官方指南进行安装即可。

提示

如果访问 github 有困难,可以使用以下网址替代https://github.com/进行 clone:

https://jihulab.com

例如:
git clone -b release/v4.3 --recursive https://github.com/espressif/esp-idf.git ./esp-idf-v4. 3
替换之后是
git clone -b release/v4.3 --recursive https://jihulab.com/esp-mirror/espressif/esp-idf.git ./esp-idf-v4.3

构建工具

先安装构建和编译工具链:

$ sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb

安装 IDF

克隆 esp-idf 到本地:

$ mkdir -p ~/esp
$ cd ~/esp
$ git clone --recursive https://github.com/espressif/esp-idf.git

如果下载速度较慢,可以试一下用手机热点下载。

设置 idf 目标平台

这一步主要是针对 esp32/esp8266 不同型号下载不同工具,如编译器、调试器、Python包等。

设置编译工具链安装位置:

$ export IDF_TOOLS_PATH=~/.Software/esp/espressif

这条指令将 IDF_TOOLS_PATH 安装到 ~/.Software/esp/espressif 目录下:

.Software/esp/espressif
▶ tree -L 1
.
├── dist
├── espidf.constraints.v5.0.txt
├── idf-env.json
├── python_env
└── tools # 里面就是编译和调试用的工具链

4 directories, 2 files

设置命令:

# 先设定 Espressif 的下载服务器进行 Github 资源下载
$ export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"

# 下载工具链
$ cd esp-idf
$ ./install.sh [platform1,platform2]

安装示例:

$ ./install.sh esp32 # 只安装 esp32 工具链
$ ./install.sh esp32,esp32s3 # 安装 esp32 和 esp32s3 工具链
$ ./install.sh all # 安装所有平台工具链

如果需要在安装后,将工具链转移到其他位置,可以通过两种方式完成:

  1. 修改 export.sh:

    # export.sh  
    2 export IDF_PATH=$HOME/.Software/esp/esp-idf
    3 export IDF_TOOLS_PATH=$HOME/.Software/esp/espressif
    

    修改完成之后,每次运行 export.sh,都会设置这两个环境变量。

  2. 修改文件 esp/esp-idf/tools/idf_tools.py 完成:

    # 修改前
    IDF_TOOLS_PATH_DEFAULT = os.path.join('~', '~/.espressif')
    # 修改后
    IDF_TOOLS_PATH_DEFAULT = os.path.join('~', '.Software/esp/espressif')
    

    修改之后将 espressif 移动到预定位置即可。

这里更推荐第一种方法,其灵活性更高,也更容易记住。这两种方法都需要和环境变量设置里面的 idf_start 搭配使用。

设定环境变量

在每次需要使用 esp-idf 时在 shell 里面执行 path/to/esp-idf/path/esp/esp-idf/export.sh 即可。

.profile(需要保证 .bashrc 或 .zshrc 里面有 source .profile 这一条语句) 或者 .bashrc 里面添加如下信息:

alias idf_start='source $HOME/esp/esp-idf/export.sh'

这样在每次需要使用idf的时候,执行指令idf_start即可。

也可以使用 idf_start 以外的名字,但是需要和环境中的各种命令区别开,避免重名。

同时安装多个版本

安装 idf 和 tools

按照官方 wiki 将各版本的idf和tools都安装在esp目录下,并修改相应信息:

▶ tree -L 1 esp
.
├── esp-idf-v4.4
├── esp-idf-v5.0
├── espressif-v5.0
├── xtensa-esp32-elf
└── xtensa-esp32-elf-v4.4

6 directories, 2 files

修改环境变量

这里将所有的环境变量全部放在 esp-idf/export.sh 中:

# esp-idf-v4.4/export.sh       
2 export IDF_PATH=$HOME/.Software/esp/esp-idf-v4.4
3 export IDF_TOOLS_PATH=$HOME/.Software/esp/xtensa-esp32-elf-v4.4

# esp-idf-v5.0/export.sh  
2 export IDF_PATH=$HOME/.Software/esp/esp-idf-v5.0
3 export IDF_TOOLS_PATH=$HOME/.Software/esp/espressif-v5.0

$HOME/.profile 里面设置各版本的环境变量指令:

6 # esp32
7 alias idf_start_v5='source $HOME/.Software/esp/esp-idf-v5.0/export.sh'
8 alias idf_start_v4.4='source $HOME/.Software/esp/esp-idf-v4.4/export.sh'

之后,只要在shell 中运行需要的指令就可以获取到 esp-idf 环境了。

环境变量 IDF_TOOLS_PATH 也可以直接写到 install.sh 中:

#!/usr/bin/env bash             
# 修改 Espressif 下载服务器
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
export IDF_TOOLS_PATH="/home/dark/.Software/esp/idf-tools-v4.3"

注:
在编译 esp-at 过程中,我也在安装 idf-tools 之后,将tools换到了其他位置,也修改了相关变量,但是最终编译 esp-at 时,出现了 idf.py build 出现cmake failed with exit code 1 的问题,该问题目前并没有找到合适解决方法,最后只能通过重新安装 idf-tools 到预定位置解决。错误提示如下:

Cannot add target-level dependencies to non-existent target "flash"

参考资料

本文中所有操作大部分均来源于以下资料,感谢这些作者的辛苦付出,让我在遇到各种问题的时候能够找到相关的解决方法。

ESP-IDF 快速入门

本文所有步骤均按照 espressif 提供的 edp-idf 安装页面 进行。

编译 ESP-AT 工程

https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/Compile_and_Develop/How_to_clone_project_and_compile_it.html

文中关于切换 github 镜像为国内镜像的操作在这篇文章里面可以找到。

idf.py build 出现cmake failed with exit code 1

https://github.com/espressif/esp-at/issues/559

这是 esp-at 的讨论,文末关于 esp-at 编译部分的问题可以在这里找到详细资料。

Logo

一站式 AI 云服务平台

更多推荐