本教程适合乐鑫官方ESP32-S3模组,非官方模组可能不适用

下载固件

Tips:根据 Commit 6201e77,现在MicroPython已经支持自动计算flash大小

进入MicroPython的ESP32 S3的固件下载页面https://micropython.org/download/ESP32_GENERIC_S3/

Firmware (Support for Octal-SPIRAM)下方找到最新的一个固件,点击[.bin]下载bin格式的固件。

安装刷入工具

这里使用乐鑫的官方刷入工具esptool

没有python环境请先安装python环境

1
pip install esptool

安装esptool时会自动配置好环境变量

刷入固件

将EPS32-S3接入计算机,建议使用USB to COM口,即插即用。

一般来说esptool会自动识别COM口,不需要在命令中手动指定;Linux环境下可能需要将命令中的esptool替换为esptool.py

首先擦除flash:

1
esptool erase_flash

然后刷入固件:

1
esptool --baud 460800 write_flash 0 你的固件.bin

如果中途刷入失败可以尝试降低或移除--baud 460800(一般不会)

使用MicroPython

刷完将板子重接接入计算机,使用各种交互式终端连接对应的COM口即可

可以使用下面代码查看内存和闪存情况:

查看内存:

1
2
import micropython
micropython.mem_info()

查看闪存:

1
2
3
import esp
esp.flash_size()
#或者esp.flash_size()/1024/1024

自行编译固件(可选)

本地编译

需要良好的网络环境

这里需要使用到IDF

目前,MicroPython支持IDF v5.2、v5.2.2、v5.3、v5.4、v5.4.1 和 v5.4.2

环境最好为Linux,Windows下则需要使用WSL

首先Clone拉取IDF

1
git clone -b v5.4.2 --recursive https://github.com/espressif/esp-idf

然后安装IDF:

1
2
3
cd esp-idf
./install.sh esp32
source export.sh #用于设置环境变量,每个新会话都需要重新设置

然后回到上一级目录,拉取MicroPython

1
git clone --recursive https://github.com/micropython/micropython

构建交叉编译器

1
2
cd micropython
make -C mpy-cross

构建MicroPython

1
2
3
cd ports/esp32
make submodules
make BOARD=ESP32_GENERIC_S3 BOARD_VARIANT=SPIRAM_OCT

构建完成后可以在build-ESP32_GENERIC_S3-SPIRAM_OCT文件夹中找到firmware.bin,这就是最终的固件。

GitHub Action 编译

可以使用GitHub Action来编译固件,避免网络环境问题。

https://github.com/GoodBoyboy666/ESP32-S3-N16R8-Action

可以自行fork修改

参考

https://github.com/micropython/micropython/tree/master/ports/esp32

https://github.com/micropython/micropython/tree/master/ports/esp32/boards/ESP32_GENERIC_S3

https://micropython.org/download/ESP32_GENERIC_S3/

http://micropython.com.cn/en/latet/esp32/quickref.html#installing-micropython

https://github.com/espressif/esp-idf/blob/master/README_CN.md

https://www.bilibili.com/video/BV1s24y137cK?vd_source=d70f12a573c31ee545ff78eaf31116ea