Ubuntu18.04:搭建ESP32 MicroPython编译环境
开发环境
硬件:ESP32 开发板
软件:阿里云ECS Ubuntu 18.04虚拟机
步骤
1.修改linux指向的python解释器为3.6
sudo rm /usr/bin/python #删除旧的链接
sudo ln -s /usr/bin/ptyhon3.x /usr/bin/python #这里默认你已经安装了3.x版的python
2.安装交叉编译工具链所依赖的环境
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing python-pyelftools
3.创建工作目录级设置编译链
1.创建工作目录
mkdir ~/esp
cd ~/esp
2.在官网上下载最新的交叉编译链
wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz (64位)
wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz (32位)
3.解压交叉编译链
tar -xzf ~/Downloads/xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-linux-amd64.tar.gz #(64位)
tar -xzf ~/Downloads/xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-linux-i686.tar.gz #(32位)
4.设置环境变量
1.打开 vi ~/.profile
2.在最后一行输入 export PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH" 退出保存
3.使其生效 source ~/.profile
4.获取并安装esp-idf开发套件
1.从github上下载esp-idf
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git #克隆仓库时,请务必添加--recursive选项,否则将需要单独克隆子模块
2.为esp-idf设置环境变量
1.打开 vi ~/.profile
2.在最后一行输入 export IDF_PATH=~/esp/esp-idf 退出保存
3.使其生效 source ~/.profile
3.安装 Python 软件包
python -m pip install --user -r $IDF_PATH/requirements.txt #请提前更新pip,否则将有可能报错
5.获取micropython并为ESP32配置环境
1.从github上下载micropython源码
cd ~/esp
git clone -b master https://github.com/micropython/micropython.git
2.配置ESP-IDF
cd ~/esp/micropython/ports/esp32
vi Makefile
在Makefile中找到ESPIDF_SUPHASH := cc93e14770e7b3681ebc80b30336e498cc96e961 #每个版本不同
复制该字符串
进入esp-idf 目录
cd ~/esp/esp-idf
切换到该分支对应的esp-idf
git checkout cc93e14770e7b3681ebc80b30336e498cc96e961 #checkout 后面是你下载的版本的hash
git submodule update --init --recursive #更新子模块
6.编译固件
cd ~/esp/micropython/
make -C mpy-cross #编译micropython交叉编译器
cd ports/esp32
git submodule init lib/berkeley-db-1.xx
git submodule update --init --recursive
make #编译ESP32固件
编译好的固件包存放在 ~/esp/micropython/ports/esp32/build下,名字是 firmware.bin
它与micropython官方提供的固件包的刷入方式是相同的,可以用esptool刷入也可以用第三方gui刷入。
这里特别提醒:使用uPyCraft刷入固件时,刷入地址不要用默认的0x0,改成0x1000
后记
python在开发的时候太好用了,然而micropython官方给的固件限制的太死板了,有些功能实在是不太灵活,只能自己修改,mp的更新速度极快,网上的资料根本跟不上节奏,断层还是比较严重的。这也是我写这篇教程的动力,做了一些微小的贡献。
另外,micropython官方的资料里提到,我们需要自建一个 makefile 文件,然而一建就出错,所以本篇内删去了这方面的内容。
这篇教程对于VMware下的Ubuntu18.04也是有效的,奈何本地的网络实在不如阿里的网络稳定,所以建议在云服务器上搭建环境,搭建完后取回固件即可。
参考资料
micropython官方: https://github.com/micropython/micropython/tree/master/ports/esp32
乐鑫官方: https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html