小白也能快速学会的Micropython编译指南
大家好,我是优快云上的 上坂龍二 哦,今天给大家带来的是:如何快速一次成功地将Micropython和自己喜欢的模块编译进自己的Esp32固件中哦~
事前准备
Python
python的环境都可以,由于需要pip,推荐使用python3,pip模块更好用一些
Windows下访问https://www.python.org/下载安装python
Ubuntu下 apt install python3 python3-pip
MacOS下 curl https://bootstrap.pypa.io/get-pip.py | python3
make
Windows下需要单独安装,Linux和MacOS应该都是自带这玩意儿的
Windows下访问http://gnuwin32.sourceforge.net/packages/make.htm
下载Complete package, except sources版本的Setup
安装后手动将安装目录加入PATH就可以正常在powershell里面使用make了
Git
同上Windows下需要单独安装,Linux和MacOS应该都是自带这玩意儿的
Windows下访问https://gitforwindows.org/下载安装git,开启命令行支持更方便
第一步 - 克隆并配置ESP-IDF及工具链
1、准备好一个纯英文的专用路径,并且在你的终端中打开它
例如:
/Users/username/esp
/home/username/esp
D:\Workspace\esp
这样的路径,完全不要出现特殊字符和中文哦(如果不知道特殊符号如何界定的话,就只用英文吧)
在下文中,我们会将这个路径以 %ESP_ROOT% 来代替哦
在这一步准备好后,我们将在后续步骤中默认在终端窗口中已经进入了%ESP_ROOT%路径了
2、使用git来将esp-idf克隆进%ESP_ROOT%目录下
在这里,我们直接运行
git clone https://github.com/espressif/esp-idf.git
如果网络不是很好的话,需要挂上梯子,或者多尝试几遍、耐心等待一下
克隆下来后,将esp-idf设置为IDF_PATH
Linux及MacOS下应该在对应的shell配置文件中加入
export IDF_PATH=%ESP_ROOT%/esp-idf
Windows直接打开高级系统设置来配置路径和变量
3、访问网站,下载并将工具链加入PATH中
接下来,从 MacOS点这里 Linux点这里 Windows点这里 获取到相关的toolchain
将下载到的压缩文件解压到%ESP_ROOT%下并且将工具链中的bin文件夹加入到PATH中
Linux及MacOS下应该在对应的shell配置文件中加入
export PATH= P A T H : PATH: PATH:HOME/esp/xtensa-esp32-elf/bin
Windows直接打开高级系统设置来配置路径和变量
第二步 - 克隆并配置Micropython
1、克隆micropython项目到本地
回到%ESP_ROOT%路径下,使用git克隆micropython
git clone https://github.com/micropython/micropython.git
在确认无错误克隆下项目后,进入%ESP_ROOT%/micropython目录下,使用
git submodule update --init --recursive
来将依赖全部更新好,同样的,如果中间出现failed或者错误的话,要重复运行这个指令直到运行后什么都不提示为止哦
2、为项目选定ESP-IDF版本
打开%ESP_ROOT%/micropython/ports/esp32/Makefile,里面有个部分像这样写着
# The git hash of the currently supported ESP IDF version.
# These correspond to v3.3.2 and v4.0.1.
ESPIDF_SUPHASH_V3 := 9e70825d1e1cbf7988cf36981774300066580ea7
ESPIDF_SUPHASH_V4 := 4c81978a3e2220674a432a588292a4c860eef27b
这里指明了需要的esp-idf的版本和对应的checkout分支哦,因为3.3.2对于网络功能的支持更全一些,所以这里选择用v3的版本(记住你自己的makefile文件中记载的分支代码,因为需要制作的micropython版本不同,我这里的可能和你需要的不一样),所以我将这里的9e70825d1e1cbf7988cf36981774300066580ea7简称为 %ESP_IDF_V3_CHECKOUT% 。
然后回到%ESP_ROOT%/esp-idf文件夹下,执行
git checkout %ESP_IDF_V3_CHECKOUT%
git submodule update --init – recursive
将esp-idf指定版本后,更新所有的依赖,方便后续编译
3、创建虚拟的python环境
进入%ESP_ROOT%/micropython/ports/esp32目录下,依次执行
python3 -m venv build-venv
source build-venv/bin/activate
pip install --upgrade pip
pip install -r %ESP_ROOT%/esp-idf/requirements.txt
4、完成make前最后一步配置
进入%ESP_ROOT%/micropython/mpy-cross目录下,执行
make mpy-cross
进入%ESP_ROOT%/micropython/ports/esp32目录下,执行
make submodules
第三步 - 更改并编译你的固件
到这里,我们已经可以直接使用make来编译制作我们的固件了~
但是,既然都自己编译了,那么肯定有一些东西是我们希望能够添加到固件中的不是吗?
那么我们只需要知道以下几点哦
1、ntptime.py在esp8266目录下,可以修改一下让授时自动加上时区方便观看
2、添加自己写的py文件在modules文件夹中,可以将对应的模块编译到固件中哦
3、添加C语言编写的模块时,在%ESP_ROOT%下新建一个c_modules目录,将需要的模块放进去,然后在编译的时候加上USER_C_MODULES=%ESP_ROOT%/c_modules/ all参数即可
4、可以自己编写一个makefile,按照实际情况更改下面的内容即可
ESPIDF ?=
BOARD ?= GENERIC
# PORT ?= /dev/ttyUSB0
# FLASH_MODE ?= qio
# FLASH_SIZE ?= 4MB
# CROSS_COMPILE ?= xtensa-esp32-elf-
# USER_C_MODULES=%ESP_ROOT%/c_modules/ all
include Makefile
最后,使用make命令,即可完成对于你的专属固件的编译哦
后记
写的时候姑且还是蛮开心的,希望大家看的时候也能够一样开心吧
git操作的时候千万不要发脾气哦~