micropython RP2040/esp32/c3/s3自编译4MB/8MB/16MB固件分享

micropython RP2040/esp32/c3/s3自编译4MB/8MB/16MB固件分享


  • 固件基于当前版本:MicroPython v1.19.1自编译的,可以根据自己的PI PICOesp32/c3开发板flash容量自行选择其对应的固件进行烧录。

本文也提供了官方固件资源,例如:PI PICO开发板官方的板子是2MBflash,esp32/c3 4MB的固件资源

  • 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.binpartition-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 PSRAMOctal 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接口。
    在这里插入图片描述
### 如何在 Ubuntu 系统中编译 MicroPython 固件 #### 准备工作 为了成功编译 MicroPython 固件,在开始之前需要安装必要的依赖项以及配置开发环境。以下是具体的准备工作: 确保已安装 Git 工具以便克隆 MicroPython 的源码仓库[^2]。可以通过运行以下命令来安装: ```bash sudo apt-get update && sudo apt-get install git ``` 还需要安装一系列构建工具和库文件,这些工具对于编译过程至关重要。执行如下命令完成安装: ```bash sudo apt-get install gcc make libffi-dev libssl-dev python3-pip python3-setuptools ``` #### 获取 MicroPython 源代码 通过 Git 将 MicroPython 官方存储库克隆到本地环境中: ```bash git clone https://github.com/micropython/micropython.git cd micropython ``` #### 编译交叉编译器 MicroPython 使用一个特殊的跨平台编译器(cross-compiler),它用于处理 Python 字节码转换等工作。按照官方指南说明,需先编译此组件[^4]: ```bash make -C mpy-cross ``` #### 配置目标硬件支持 假设目标设备为 ESP32 平台,则进入对应目录并设置相关参数[^3]: ```bash cd ports/esp32 ``` 如果使用的是通用板子 GENERIC 或其他特定型号,请调整 `BOARD` 参数以适配具体需求。 #### 执行实际编译操作 启动多线程模式下的正式编译流程,这里指定四个 CPU 核心加速进程(-j4),同时定义好目标板型(如 GENERIC_CAM): ```bash make -j4 BOARD=GENERIC_CAM ``` 完成后可以在生成路径下找到最终产物 firmware.bin 文件及其组成部分,包括 bootloader.bin、partitions.bin 和 micropython.bin。 #### 总结 以上就是在 Ubuntu 上从零开始搭建环境直至产出可用固件的整体方法论描述。每一步都紧密关联前序环节成果,并严格遵循官方推荐实践标准。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值