> 文档中心 > Ubuntu18.04:搭建ESP32 MicroPython编译环境

Ubuntu18.04:搭建ESP32 MicroPython编译环境

Ubuntu18.04:搭建ESP32 MicroPython编译环境

  • 开发环境
  • 步骤
    • 1.修改linux指向的python解释器为3.6
    • 2.安装交叉编译工具链所依赖的环境
    • 3.创建工作目录级设置编译链
      • 1.创建工作目录
      • 2.在官网上下载最新的交叉编译链
      • 3.解压交叉编译链
      • 4.设置环境变量
    • 4.获取并安装esp-idf开发套件
      • 1.从github上下载esp-idf
      • 2.为esp-idf设置环境变量
      • 3.安装 Python 软件包
    • 5.获取micropython并为ESP32配置环境
      • 1.从github上下载micropython源码
      • 2.配置ESP-IDF
    • 6.编译固件
  • 后记
  • 参考资料

开发环境

硬件: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 ~/espcd ~/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 ~/.profile2.在最后一行输入 export PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH" 退出保存3.使其生效 source ~/.profile

4.获取并安装esp-idf开发套件

1.从github上下载esp-idf

cd ~/espgit clone --recursive https://github.com/espressif/esp-idf.git #克隆仓库时,请务必添加--recursive选项,否则将需要单独克隆子模块

2.为esp-idf设置环境变量

1.打开 vi ~/.profile2.在最后一行输入 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 ~/espgit clone -b master https://github.com/micropython/micropython.git

2.配置ESP-IDF

cd ~/esp/micropython/ports/esp32vi Makefile在Makefile中找到ESPIDF_SUPHASH := cc93e14770e7b3681ebc80b30336e498cc96e961 #每个版本不同复制该字符串进入esp-idf 目录 cd ~/esp/esp-idf切换到该分支对应的esp-idfgit checkout cc93e14770e7b3681ebc80b30336e498cc96e961 #checkout 后面是你下载的版本的hashgit submodule update --init --recursive #更新子模块

6.编译固件

cd ~/esp/micropython/make -C mpy-cross #编译micropython交叉编译器cd ports/esp32git submodule init lib/berkeley-db-1.xxgit submodule update --init --recursivemake #编译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