circuitpython ESP32编译指南

circuitpython ESP32编译指南

本文用于编译ESP32 S2 MINI(又叫LOLIN S2)的circuitpython固件

这个玩意。
circuitpython ESP32编译指南_第1张图片
推荐理由:

  1. 8.8元价格,比合宙9.9元的C3价格还要卷
  2. IO口非常多,适合接较多外设
  3. 有2M PSRAM(买的时候看看型号,带PSRAM的好像贵2毛),开发图形音频都够用
  4. 除了micropython还可以玩circuitpython
  5. 默认固件就是micropython,无需再烧录
  6. 体积小巧,空间限制影响小

缺点:

  1. 没有蓝牙只有WIFI,不过I don’t care,8.8元的东西,要啥自行车
  2. CPU没有双核,是低速的160MHz(虽然circuitpython显示时240M,但……那不是真的)。单线程的话用好协程一样可以很好的处理多个外设
  3. 空间只有4M(调整好分区表,剩余2M以上没有问题,py编译为mpy后,程序部分大小又可以缩小到1/4)。实在还不够的话,SDIO还可以支持SD卡扩展

编译环境

Ubuntu 22.04.2 LTS

环境要求

以下可以作为创建虚拟机的参考
CPU:>1核
内存:>2G
磁盘:>24G

网络要求

由于需要拉取git,需要科学上网环境

编译步骤

  1. 安装git和python环境

apt install git
apt install python3-pip
pip3 install --upgrade -r requirements-dev.txt
pip3 install --upgrade -r requirements-doc.txt
  1. 拉取8.2版本

clone -b v8.2.x https://github.com/adafruit/circuitpython.git
  1. 拉取子模块

注意不要拉取全部模块,全部模块大约30多个G,网络耗死不说磁盘也会爆满(自己已爆过一次,希望后面的不要踩坑)。先进入到ESP目录,然后只拉取ESP的

cd ports/espressif
make fetch-port-submodules

接下来是漫长的等待

  1. 编译mpy-cross

make -C mpy-cross

  1. 安装ESP-IDF

如果上一步能够顺利拉下来的话,在ports/espressif下会有esp-idf目录

cd ports/espressif/esp-idf
./install.sh

安装完后,需要初始化ESP编译环境
在这里插入图片描述
这里执行环境配置命令:(注意点号不要丢)

. export.sh

成功执行类似如下:
circuitpython ESP32编译指南_第2张图片

  1. 进入编译目录

cd ports/espressif
make BOARD=lolin_s2_mini

清理的话,加个clean就可以

make clean BOARD=lolin_s2_mini
  1. 上一步有极大的概率出错,例如某个文件丢失什么的

由于网络的原因,很可能某些子模块无法完整的拉下来。这时候就要使用更新模块的绝招“更新三连”
先在github上看有哪些子模块,进入到对应未拉取完整子模块的根目录,执行

git fetch --all
git reset --hard
git pull

然后才能完整编译,本人是修理了大约4-5个模块才终于能完全编译

最后编译完成输出大约这样
circuitpython ESP32编译指南_第3张图片

  1. 我的固件编到哪去了

本次编译的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

你可能感兴趣的:(circuitpython,micropython,esp32,s2mini,lolin)