快速入门 — ESP-MDF 编程指南 v1.0-158-g8d0b79a 文档 (espressif.com)
码云esp-gitee-tools仓库
github上esp-mdf README_cn.md。ESP-MDF框架安装使用说明
ESP-MDF 中文讨论版 - Page 2 - ESP32 Forum
//踩了三天坑,搭了十几次环境,用下面老哥的话“总结”一下ESP32的环境搭建和资料。
本文所有操作都是基于2023年2月10日的ESP-MDF master分支和ESP-IDF v4.4-rc1分支。后续esp版本更新,此教程可能失效,仅供参考。
目前esp-gitee-tools提供了两种下载ESP-IDF的方式,而且官方推荐使用jihu脚本安装,但是安装ESP-MDF框架的IDF必须使用submodule-update。
安装Ubuntu20.04,换清华源。为保证操作准确,所有操作命令都有cd+绝对路径。本文所有出现的"newyouth"单词是我自己电脑的主机名,共出现五处都需要换成你自己的Ubuntu主机名。
首先,需要下载如下软件包:
sudo apt-get install git wget flex bison gperf python3 python3-venv python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
然后,在家目录下载创建esp目录,后续的esp-mdf和esp-gitee-tools都放在该目录下。
mkdir -p ~/esp
cd ~/esp
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
./jihu-mirror.sh set
./jihu-mirror.sh set 命令将github切换到使用极狐镜像的 URL。
./jihu-mirror.sh unset 命令恢复,不使用镜像的 URL。
cd ~/esp
如果使用了jihu-mirror.sh脚本推荐从github克隆,如果卡住了则取消重试。
git clone --recursive https://github.com/espressif/esp-mdf.git
//当然,如果没有使用jihu-mirror.sh脚本也可以从gitee克隆
//git clone --recursive https://gitee.com/EspressifSystems/esp-mdf.git
如果忘加--recursive也没关系暂时不用管,在最后进行idf.py build时会自动从github下载相关的子模块,主要是需要下载esp-rainmaker子模块。
进入esp-mdf目录下,查看是否有esp-idf目录,如果没有则直接克隆esp-idf,如存在则使用rm -rf esp-idf删除后再克隆esp-idf。
cd ~/esp/esp-mdf
ls
git clone https://gitee.com/EspressifSystems/esp-idf.git
进入到esp-idf目录下,且换分支到v4.4-rc1
cd ~/esp/esp-mdf/esp-idf
git checkout v4.4-rc1
更新esp-idf子模块。
cd ~/esp/esp-gitee-tools/
./submodule-update.sh ../esp-mdf/esp-idf/
稍微等待几分钟。
ESP-IDF子模块克隆成功如下:
如 pip 版本 >= 10.0.0,建议先换pip的源:
pip --version
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip config set global.trusted-host mirrors.aliyun.com
使用以下方式来下载安装工具:
cd ~/esp/esp-gitee-tools
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh ~/esp/esp-mdf/esp-idf/
如果出现 /usr/bin/env: “python”: 没有那个文件或目录 问题。
解决:
方法一:sudo apt-get install python3 (下载python3)
方法二:sudo ln -s /usr/bin/python3 /usr/bin/python (前提是方法一的python3软件已经存在)
如果出现在某个包下载失败,可多次执行“./install.sh ~/esp/esp-mdf/esp-idf/”安装命令,直到所有包下载成功。
安装成功如下:
执行上图中红框的内容。
. /home/newyouth/esp/esp-mdf/esp-idf/export.sh
出现idf.py build则搭建成功。
将~/esp/esp-mdf写入环境变量。
cd ~/esp/esp-mdf
export MDF_PATH=~/esp/esp-mdf (注意不是:~/esp/esp-mdf/)
将环境变量写入shell配置文件中。
gedit ~/.bashrc
在结尾敲一下回车新建一行,写入如下命令并保存。
alias setmdf='export MDF_PATH=~/esp/esp-mdf;. /home/newyouth/esp/esp-mdf/esp-idf/export.sh'
更新一下配置文件。
source ~/.bashrc
可以尝试新开一个终端,输入setmdf,看看是否会出现idf.py build
cd ~/esp/esp-mdf/examples/get-started
idf.py build
编译成功如下:
如果将get-started工程拷到其他目录下编译会出现如下红框中的错误:
问题如下:
Executing action: all (aliases: build)
Running cmake in directory /home/newyouth/esp/get-started/build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DIDF_TARGET=esp32 -DCCACHE_ENABLE=0 /home/newyouth/esp/get-started"...
CMake Error at CMakeLists.txt:8 (include):
include could not find load file:
/home/newyouth/esp/get-started/../../project.cmake
解决办法:可以试试修改工程目录下的CMakeLists.txt文件,将红框中的三行注释掉。
插上开发板输入如下烧写命令,flash 烧写文件,monitor 打开串口监视器。
cd ~/esp/esp-mdf/examples/get-started
sudo chmod 777 /dev/ttyUSB0 && idf.py -p /dev/ttyUSB0 flash monitor
开始运行:
搭建ESP-MDF v1.0版本大致方法一样,克隆esp-mdf后将目录里面的esp-idf删除,然后重新克隆esp-idf。不过我没测试过,欢迎踩坑。
经过实际测试:
搭建好ESP-MDF,依旧可以直接编译之前ESP-IDF v4.4-rc1创建的工程,但是所有项目使用ESP-MDF环境编译时需要执行idf.py fullclean清除以前的编译文件。
如果将esp-idf克隆到~/esp/目录下(即和esp-mdf同级目录),再重新搭建ESP-IDF框架完全也是兼容ESP-MDF的。