作者归档:admin

自动化编译micropython固件计划

1 导入自定义的micropython模块
在对应的ports/esp8266/modules 下添加py模块,只能添加PY模块,可以是文件夹,但是只能py模块。
上传文件保存到该目录,并记下位置,编译完成后自动删除。【使用shell脚本】,干脆都放在固定的目录 如modules下的add_modules下面。

2 导入需要编译的c模块
cmake添加:将测试通过的c模块存在micropython项目同级目录下,通过在根目录添加一个micropython.cmake文件在编译时导入这个模块即可【需要自己先测试 目前ulab st7789可以兼容】【lvgl需要在未来测试】
存在问题:没有cmake的模块怎么办,如.c的文件 怎么加入?
比如说这个汉字:https://github.com/wangshujun-tj/mpy-Framebuf-boost-code

modframebuf.c 和 font_asc.h复制到extmod目录
然后直接按照原本的编译方式就可以工作了
https://github.com/wangshujun-tj/mpy-Framebuf-boost-code

失败 1.20 1.19版本可用,1.23无法通过编译

ESP32 ESP8266 micropython编译

Ubuntu 22.0.4系统下【请先安装python3.10-venv

1.ESP-IDF工具安装

git clone https://github.com/espressif/esp-idf.git
cd esp-idf
# git checkout v5.0.4
git submodule update --init --recursive

apt install python3.10-venv

cd esp-idf
./install.sh
source export.sh

#最后一步在进入编译前都得进行。 python >3.7

2.micropython源代码设置

git clone https://github.com/micropython/micropython.git
cd micropython
git submodule update --init --recursive

cd micropython
make -C mpy-cross
cd ports/esp32
make BOARD=ESP32_GENERIC_S3 clean
make submodules

make BOARD=ESP32_GENERIC_S3 
#make BOARD=ESP32_GENERIC_S3 USER_C_MODULES=../../../../micropython.cmake
#设置外部C编译模块,cmake的话 一个编译只能使用一个,但是可以将多个Cmake文件合成一个cmake就可以了。

注意路径上会多一个 ../ 上述模块其实micropython.cmake 和micropython文件夹同属一个目录
* micropython/ports/esp32 #在该目录执行命令
micropython.cmake
esp-idf

#需要使用的cmake在此处 原则上../../../micropython.cmake是../../../../micropython.cmake

3.添加其他C模块(cmake)编译【st7789 ulab】

#和micropython esp-idf 同级目录
git clone https://github.com/v923z/micropython-ulab.git ulab
git clone https://github.com/russhughes/st7789_mpy.git

#在该处创建micropython.cmake 文件,内容如下
include(${CMAKE_CURRENT_LIST_DIR}/ulab/code/micropython.cmake) include(${CMAKE_CURRENT_LIST_DIR}/st7789_mpy/st7789/micropython.cmake)


#最后的编译命令
make BOARD=ESP32_GENERIC_S3 USER_C_MODULES=../../../../micropython.cmake


ESP32S3 PSRAM

ESP32S3 编译 8MB PSRAM 16MBFlash N16R8

ESP32S3 编译 8MB PSRAM 16MBFlash N16R8

cd esp-idf

命令 进入esp-idf

source export.sh

设置idf.py命令

cd micropython

进入micropython

make -C mpy-cross

开始mpy-cross

cd ports/esp32

进入 ports下的esp32目录

make BOARD=ESP32_GENERIC_S3 clean

清除之前编译的信息

make submodules

预编译

make BOARD=ESP32_GENERIC_S3 USER_C_MODULES=../../../../micropython.cmake

设置编译后的开发板ESP32_GENERIC_S3 并载入C模块micropython.cmake

#

关于相关问题的修改

#

flash 修改文件:

#

boards/ESP32_GENERIC_S3/sdkconfig.board

其中的文件

CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME=”partitions-16MiB.csv”

#

PSRAM修改

#

修改文件boards/sdkconfig.spiram_sx

注释掉QUAD,并创建OCT

#CONFIG_SPIRAM_MODE_QUAD=y

CONFIG_SPIRAM_MODE_OCT=y

#

修改文件boards/ESP32_GENERIC_S3/mpconfigboard.cmake

set(IDF_TARGET esp32s3)

set(SDKCONFIG_DEFAULTS
boards/sdkconfig.base
${SDKCONFIG_IDF_VERSION_SPECIFIC}
boards/sdkconfig.usb
boards/sdkconfig.ble
boards/sdkconfig.spiram_sx
#上面选项添加
boards/ESP32_GENERIC_S3/sdkconfig.board
)

#

boards/sdkconfig.spiram_sx
#上面选项添加

#

ESP32s3编译固件 N16R8

cd esp-idf

source export.sh

cd micropython

make -C mpy-cross

cd ports/esp32

make BOARD=ESP32_GENERIC_S3 clean

make submodules

make BOARD=ESP32_GENERIC_S3 USER_C_MODULES=../../../../micropython.cmake

关于相关问题的修改

flash 修改:
boards/ESP32_GENERIC_S3/sdkconfig.board

CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME=”partitions-16MiB.csv”

PSRAM修改
boards/sdkconfig.spiram_sx

#CONFIG_SPIRAM_MODE_QUAD=y
CONFIG_SPIRAM_MODE_OCT=y

boards/ESP32_GENERIC_S3/mpconfigboard.cmake

set(IDF_TARGET esp32s3)

set(SDKCONFIG_DEFAULTS
    boards/sdkconfig.base
    ${SDKCONFIG_IDF_VERSION_SPECIFIC}
    boards/sdkconfig.usb
    boards/sdkconfig.ble
    boards/sdkconfig.spiram_sx
    boards/ESP32_GENERIC_S3/sdkconfig.board
)

esp32s2 lolin/esp32s3 编译 ulab和st7789坑

# ESP-IDF设置
cd esp-idf
./install.sh       # (or install.bat on Windows)
source export.sh   # (or export.bat on Windows)

# ----------------------

make -C mpy-cross

make BOARD=LOLIN_S2_MINI clean

cd micropython/ports/esp32

make submodules

make BOARD=LOLIN_S2_MINI USER_C_MODULES=../../../../st7789_mpy/st7789/micropython.cmake FROZEN_MANIFEST="" FROZEN_MPY_DIR=$UPYDIR/modules 
有且仅能使用一个cmake 但是可以包含
在st7789 和ulab的共同文件夹下创建micropython.cmake

# 里面文件内容:
include(${CMAKE_CURRENT_LIST_DIR}/ulab/code/micropython.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/st7789_mpy/st7789/micropython.cmake)

# 编译命令·
make BOARD=LOLIN_S2_MINI USER_C_MODULES=../../../../micropython.cmake 

解析 USER_C_MODULES=module1/*.c module2/*.c 可以添加多个模块。上面命令添加了ulab和st7789的c模块,但是只能添加一个micropython.cmake文件。破解

在st7789 和ulab的共同文件夹下创建micropython.cmake

include(${CMAKE_CURRENT_LIST_DIR}/ulab/code/micropython.cmake) include(${CMAKE_CURRENT_LIST_DIR}/st7789_mpy/st7789/micropython.cmake)

#ESP32S2 F4R2 LOLIN
make BOARD=LOLIN_S2_MINI USER_C_MODULES=../../../../micropython.cmake 

ESP32S3 PSRAM

make BOARD=ESP32_GENERIC_S3 clean

make submodules
make BOARD=ESP32_GENERIC_S3 USER_C_MODULES=../../../../micropython.cmake