micropython RP2040/esp32/c3/s3自编译4MB/8MB/16MB固件分享
- 固件基于当前版本:
MicroPython v1.19.1自编译的,可以根据自己的PI PICO,esp32/c3开发板flash容量自行选择其对应的固件进行烧录。
本文也提供了官方固件资源,例如:
PI PICO开发板官方的板子是2MB的flash,esp32/c34MB的固件资源
- micropython官方固件下载地址:
https://micropython.org/download/
⛳烧录注意事项
📢烧录前最好是做全片擦除,再写入,特别是对于原来是高容量的flash,写入了低容量的固件的目标板。在重新烧录固件时,这点尤为重要。如果不这样做,在烧录高容量固件时,会找不到文件系统。运行是会报如下错误:
The filesystem appears to be corrupted. If you had important data there, you
may want to make a flash snapshot to try to recover it. Otherwise, perform
factory reprogramming of MicroPython firmware (completely erase flash, followed
by firmware programming).
🚩本固件最适合以RP2040位核心的自主设计的开发板
- 🍂YD-RP2040兼容树莓派核心板RP2 Raspberry Pi Pico Micropython


- 🍓
Raspberry Pi Pico默认只有2MB的flash

✅RP2040 自编译调整flash修改位置一共有3处:
1. C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\rootfs\home\arm\micropython\ports\rp2\rp2_flash.c
#ifndef MICROPY_HW_FLASH_STORAGE_BYTES
//2MB flash
//#define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024)
//4MB flash
#define MICROPY_HW_FLASH_STORAGE_BYTES (3 * 1024 * 1024)
//16Mb flash
//#define MICROPY_HW_FLASH_STORAGE_BYTES (7 * 1024 * 1024)
//16Mb flash
//#define MICROPY_HW_FLASH_STORAGE_BYTES (15 * 1024 * 1024)
#endif
2. C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\rootfs\home\arm\micropython\ports\rp2\boards\PICO\mpconfigboard.h
#define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico"
#define MICROPY_HW_FLASH_STORAGE_BYTES (15 * 1024 * 1024)
//默认2MB:1408 * 1024
//4MB:3 * 1024 * 1024
//8MB:7 * 1024 * 1024
//16MB:15 * 1024 * 1024
3. C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\rootfs\home\arm\micropython\lib\pico-sdk\src\boards\include\boards\pico.h
#ifndef PICO_FLASH_SIZE_BYTES
//#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
//#define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024)
//#define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024)
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
#endif
16MB版本信息:MicroPython v1.19.1-339-g9a826e0f2-dirty on 2022-08-30; Raspberry Pi Pico with RP2040

8MB版本信息:MicroPython v1.19.1-339-g9a826e0f2-dirty on 2022-08-30; Raspberry Pi Pico with RP2040

4MB版本的容量信息:

官方的RP2040烧录演示

ESP32自编译需要修改的地方有1处
1. C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\rootfs\home\arm\micropython\ports\esp32\boards\sdkconfig.base
- 根据flash容量配置,在
sdkconfig.base文件中修改下面的对应内容即可:
# For cmake build
# CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
# CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-16MiB.csv"
📝ESP32固件烧录
- 📗esp32分别对应的容量有8MB和16MB的,只提供的是一个
bin文件,,也就是boot.bin文件、micropython.bin、partition-table.bin合并的一个文件。通过Thonny平台进行烧录。

- 如果是使用乐鑫官方的烧录工具:
flash_download_tool_3.9.3烧录工具 https://www.espressif.com.cn/zh-hans/support/download/other-tools- 烧录首地址改为
0x1000
🚩ESP32C3只能使用乐鑫官方的烧录工具:flash_download_tool_3.9.3烧录工具进行烧录
✔因为ESP32C3的烧录地址是从
0x0地址开始烧录的,而通过Thonny平台进行烧录的默认烧录地址是从0x1000开始烧录的。
- 分开烧录


- 🎯烧录完,使用
Thonny检测

- 🍂ESP32C3 16MB容量信息

- ⛳单文件烧录方式

⛳ESP32C3编译16MB说明
- ✨编译16MB的需要选择
OTA的分区表
# For cmake build
# CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
# CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions-16MiB-ota.csv"
- 🌿esp32c3 8MB flash

flash模式说明
- 📌SPI_FLASH_SLOWRD 标准SPI,对时钟速度有限制(速率较慢)
- 📌 SPI_FLASH_FASTRD 标准SPI
- 📌SPI_FLASH_DOUT 双线SPI(Dual SPI)只在数据阶段使用两根数据线通信
- 📌 SPI_FLASH_DIO 双线SPI(Dual SPI)地址、数据阶段都使用两根数据线通信
- 📌SPI_FLASH_QOUT 四线SPI(Qual SPI)只在数据阶段使用四根数据线通信
- 📌 SPI_FLASH_QIO 四线SPI(Qual SPI)地址、数据阶段使用四根数据线通信
- 📌SPI_FLASH_OPI_STR 四线SPI(Qual SPI)命令、地址、数据阶段(所有阶段)都使用四根数据线通信,并且一个时钟传输一位
- 📌SPI_FLASH_OPI_DTR 四线SPI(Qual SPI)命令、地址、数据阶段(所有阶段)都使用四根数据线通信,并且一个时钟传输两位
ESP32S3固件说明
- 按照
PSRAM模式分:Quad Mode PSRAM和Octal Mode PSRAM - 编译型号:
GENERIC_S3_SPIRAM,配置的是16MB flash,
- 编译采用是4线(Quad)中的
qout模式flash 8线(Octal)PSRAM配置,速度和flash的频率一样80MHz。官方固件默认是8M flash.


Octal Mode PSRAM

- 80MHz clock speed

⛳固件资源
- 2022年10月8日新增ESP32带PSRAM固件
- 📢esp32c3固件目前只能使用容量为4MB和16MB的,8MB的固件能烧录进去但是识别的容量空间为0,但是程序测试可以读到flash容量,8MB的固件不推荐使用,仅供测试。
链接:https://pan.baidu.com/s/1pHVWWB2ZMINVPyX2wYo7Hg
提取码:dd4v
📘ESP32S3官方固件参考
- ✨针对ESP32S3不同硬件配置的,如果想使用最新的固件,可以参考以下类型:NanoS3、TinyS3、FeatherS3 、ProS3
- 👉具体信息,参考链接:
https://esp32s3.com/ 
- ⚡烧录固件后,在通讯连接时,需要注意:使用的是USB连接的TypeC接口,进行调试的,而不是串口的TypeC接口。

本文介绍如何自编译适用于RP2040、ESP32/C3/S3等开发板的MicroPython固件,并提供不同容量的固件分享。详细说明了修改源代码以适配不同大小的Flash存储器的方法,以及烧录过程中的注意事项。

2108

被折叠的 条评论
为什么被折叠?



