1 Star 0 Fork 2

resetlove/ESP32-C3 MicroPython 固件编译环境搭建教程

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README

ESP32-C3 MicroPython 固件编译环境搭建教程

前言

编译MicroPython固件的难度主要源自国内访问 GitHub 不顺畅,只要你能克服这个困难,那就不是难事

测试环境为 Windows 10 + WSL + Ubuntu 18.04.5 LTS

保姆级教程,所以还需要你具备一定的动手能力

前期准备工作

更新 Ubuntu 软件包

$ sudo apt update
$ sudo apt upgrade

切换国内源可以提高更新速度,切换方法 自行必应

安装相关软件包

$ sudo apt install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

更新 CMake 版本至 3.12 以上

$ wget https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz
$ tar zxvf cmake-3.12.2-Linux-x86_64.tar.gz
$ mv cmake-3.12.2-Linux-x86_64 /opt/cmake-3.12.2
$ ln -sf /opt/cmake-3.12.2/bin/*  /usr/bin/

项目克隆

准备一个工作目录

$ cd ~
$ mkdir esp32_idf4
$ cd esp32_idf4

克隆主项目

$ git clone https://github.com/micropython/micropython.git
# v4.3 并不是一个分支,所以后期无需更新
# 不选择主分支是因为第一次使用主分支进行编译的时候出错了

$ git clone -b v4.3 https://github.com/espressif/esp-idf.git

更新子模块

$ cd micropython
$ git submodule update --init --recursive

$ cd ../esp-idf
$ git submodule update --init --recursive

自动重复执行更新子模块

简单粗暴的方式,将更新子模块中的git命令行替换成如下内容即可

# 反正也不会一次就能完成,干脆重复执行它 100 次~

$ for i in {1..100}; do git submodule update --init --recursive; done

针对以上步骤的提示

  • 上述步骤是一个漫长且痛苦的过程

  • 如果出现包含fatalfailed的提示内容,只需要重复执行上一次的命令行即可重新开始

  • 如果长时间卡住可以尝试 ctrl+c 中断命令,并重新开始

  • 可以开两个终端对两个项目同时进行克隆和更新操作,即刻享受双倍痛苦~

  • 如果出现类似如下的提示内容,那么需要手动删除submodule path提到的那个目录,这里需要删除的是CMSIS_5

    fatal: Needed a single revision

    Unable to find current revision in submodule path 'lib/pico-sdk/lib/tinyusb/lib/CMSIS_5'

ESP-IDF 工具和设置

安装 ESP-IDF 工具

# 工具只需要安装一次即可
# 当前路径:~/esp32_idf4/esp-idf

$ export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
$ ./install.sh

设置环境变量

$ . $HOME/esp32_idf4/esp-idf/export.sh

export.sh设置别名

每次打开终端时之前设置的环境变量都会失效,可以使用别名的方式进行快速设置

$ vim ~/.profile # 打开 shell 配置文件并在最后一行粘贴如下内容

alias get_idf='. $HOME/esp32_idf4/esp-idf/export.sh' # 保存并退出

$ source ~/.profile # 刷新配置文件

设置好之后,每次需要编译固件的时候只需要执行如下命令即可

$ get_idf

vim 快捷键

i - 进入编辑模式

esc - 退出编辑模式

: - 打开命令行

w,q,回车 - 保存并退出

开始编译固件

假设到目前为止你已经完成了上述所有操作,包括:

  • 更新了Ubuntu系统软件包和CMake
  • 克隆了MicroPython主项目,并更新了子模块
  • 克隆了ESP-IDF主项目,并更新了子模块
  • 安装了ESP-IDF工具并设置了环境变量

那么我们重新打开一个终端,然后开始吧

重新设置环境变量

$ get_idf

更新MicroPython主项目

$ cd ~/esp32_idf4/micropython
$ git pull # 提示 "Already up to date." 表示更新成功

编译固件

$ make -C mpy-cross

$ cd ports/esp32

$ make BOARD=GENERIC_C3 clean # 可选项,如果需要完全重新编译则执行这行命令
$ make submodules
$ make BOARD=GENERIC_C3

如果一切顺利会出现类似如下的提示内容,代表编译成功!

Project build complete. To flash, run this command:
~/.espressif/python_env/idf4.3_py3.6_env/bin/python ../../../esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32c3  write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x0 build-GENERIC_C3/bootloader/bootloader.bin 0x8000 build-GENERIC_C3/partition_table/partition-table.bin 0x10000 build-GENERIC_C3/micropython.bin
or run 'idf.py -p (PORT) flash'
bootloader  @0x001000    16528  (   12144 remaining)
partitions  @0x008000     3072  (    1024 remaining)
application @0x010000  1408400  (  164464 remaining)
total                  1473936

烧录固件

目前MicroPython官方的makeimage.py代码有问题,所以不能直接烧录合并出来的firmware.bin文件

简化分解一下上边的提示内容

python esptool.py
    -p (PORT)
    -b 460800
    --before default_reset
    --after hard_reset
    --chip esp32c3
    write_flash
    --flash_mode dio
    --flash_size detect
    --flash_freq 80m
    0x0 build-GENERIC_C3/bootloader/bootloader.bin
    0x8000 build-GENERIC_C3/partition_table/partition-table.bin
    0x10000 build-GENERIC_C3/micropython.bin

Windows WSL环境下使用如下命令可以直接烧录固件

$ make BOARD=GENERIC_C3 deploy

前提是你可以正常访问串口,如果不能,请查看参考内容中的相关链接自行解决

还可以使用 Flash 下载工具 分别烧录上边得到的 3 个.bin文件,注意偏移量和文件名要一一对应正确

偏移量 固件文件
0x0 bootloader.bin
0x8000 partition-table.bin
0x10000 micropython.bin

或者使用Flash 下载工具将 3 个.bin文件合成为 1 个文件,合并后的固件烧录偏移量为0x0

编译固件过程中报错

如果编译过程中出现类似如下的错误提示内容

CMake Error at ~/esp32_idf4/esp-idf/tools/cmake/component.cmake:305 (message):
  Include directory
  '~/esp32_idf4/esp-idf/components/mbedtls/mbedtls/include' is
  not a directory.

则手动检查一下指定目录下是不是只有一个.git文件

~/esp32_idf4/esp-idf/components/mbedtls/mbedtls

如果是的话就把这个目录删除,并重新运行更新子模块命令

参考内容

合作交流

走线物联扇贝物联

Empty file

About

ESP32-C3 MicroPython 固件编译环境搭建教程 expand collapse
Cancel

Releases

No release

Contributors (1)

All

Activities

can not load any more
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/resetlove/esp32-c3_micropython_firmware.git
git@gitee.com:resetlove/esp32-c3_micropython_firmware.git
resetlove
esp32-c3_micropython_firmware
ESP32-C3 MicroPython 固件编译环境搭建教程
master

Search