本文用于编译ESP32 S2 MINI(又叫LOLIN S2)的circuitpython固件
缺点:
Ubuntu 22.04.2 LTS
以下可以作为创建虚拟机的参考
CPU:>1核
内存:>2G
磁盘:>24G
由于需要拉取git,需要科学上网环境
apt install git
apt install python3-pip
pip3 install --upgrade -r requirements-dev.txt
pip3 install --upgrade -r requirements-doc.txt
clone -b v8.2.x https://github.com/adafruit/circuitpython.git
注意不要拉取全部模块,全部模块大约30多个G,网络耗死不说磁盘也会爆满(自己已爆过一次,希望后面的不要踩坑)。先进入到ESP目录,然后只拉取ESP的
cd ports/espressif
make fetch-port-submodules
接下来是漫长的等待
make -C mpy-cross
如果上一步能够顺利拉下来的话,在ports/espressif下会有esp-idf目录
cd ports/espressif/esp-idf
./install.sh
安装完后,需要初始化ESP编译环境
这里执行环境配置命令:(注意点号不要丢)
. export.sh
cd ports/espressif
make BOARD=lolin_s2_mini
清理的话,加个clean就可以
make clean BOARD=lolin_s2_mini
由于网络的原因,很可能某些子模块无法完整的拉下来。这时候就要使用更新模块的绝招“更新三连”
先在github上看有哪些子模块,进入到对应未拉取完整子模块的根目录,执行
git fetch --all
git reset --hard
git pull
然后才能完整编译,本人是修理了大约4-5个模块才终于能完全编译
本次编译的s2-mini,编译的固件在目录:
ports/espressif/build-lolin_s2_mini/
目录 | 文件 | 含义 |
---|---|---|
. | firmware.bin | 完整固件,可以从0x0烧录 |
. | circuitpython-firmware.bin | 程序部分,单独烧录从0x10000开始 |
./esp-idf/bootloader/ | bootloader.bin | bootloader,单独烧录从0x1000开始 |
./esp-idf/partition_table/ | partition-table.bin | 分区表,单独烧录从0x8000开始 |
然后安装esptool就可以烧录了
pip install esptool
长按0不放,短按rst,再松开0。开启烧录COM(与开发的COM口会不一样)烧录,我本机的是COM3
firmware.bin烧录命令:
esptool.py --port COM3 --baud 1000000 write_flash -z 0x0 firmware.bin
分开烧录的命令:
esptool.py -p COM3 -b 1000000 --before default_reset --after hard_reset --chip esp32s2 write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x1000 bootloader.bin 0x8000 partition-table.bin 0x10000 circuitpython-firmware.bin
默认的是双ota分区,用户空间剩余960K
下一回讲如何调整分区表获得最大分区,调整完后用户空间可以到2.5M