← 返回全部文章Notion · Cloudflare

嵌入式开发 · 2023-01-17

micropython 编译esp32-c3固件

不同版本有不同的问题

#开发

文章图片

前情提要:UBUNTU 20.04 LTSC,VPS(解决网络问题)

具体流程

更新源列表

sudo apt-get update
sudo apt-get upgrade  #Optional

python配置 将默认python版本改为python3

查看当前系统默认python版本

python --version

查看python3

whereis python3

删除原有python2的软连接

sudo rm /usr/bin/python

新建python3的软连接

sudo ln -s /usr/bin/python3.8 /usr/bin/python

安装pip

apt install python3-pip

安装virtualenv!!

pip install virtualenv

安装必备软件

Git:

sudo apt-get install git

资源库中,有一个名为 build-essential 的包,它包含 GCC 和其他各种编译器,如 g++ 和 make来安装:

sudo apt update
sudo apt install build-essential

cmake:

apt-get install cmake

基于ARM内核编译的工具链:(可选的)

sudo apt-get install gcc-arm-none-eabi

Git克隆 #网络环境

esp-idf克隆:注意 esp-idf版本!!

git clone -b v5.0.2 --recursive https://github.com/espressif/esp-idf.git

若esp-idf已经存在,请更新模块

cd esp-idf
git checkout v5.0.2
git submodule update --init --recursive

MICROPYTHON源码克隆:

git clone -b v1.21.0 --recursive https://github.com/micropython/micropython.git

micropython固件编译的安装

ESP-IDF 配置好编译环境

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

编译 MICROPYTHON

必须先构建 MicroPython 交叉编译器,这将用于 预编译(冻结)内置 Python 代码。这个交叉编译器是构建的,并且 使用以下命令在主机上运行:

make -C mpy-cross
cd ports/esp32
make submodules
make

生成的固件为:firmware.bin ..build-ESP32_GENERIC/

如果是编译esp32c3,在make后缀加型号:

make BOARD=GENERIC_C3

默认的 ESP-IDF 配置设置由目录中的 board 定义提供。对于自定义配置 您可以定义自己的 Board 目录。通过以下方式开始新的电路板配置 复制现有的(如)并修改它以适合您的开发板。ESP32_GENERICboards/ESP32_GENERICESP32_GENERIC

特定于 MicroPython 的配置值在特定于主板的文件中定义,该文件包含在 中。附加 设置被放入 ,包括配置 ESP-IDF 设置的文件列表。一些标准文件是 在目录中提供,例如 .您可以 此外,在 Board 目录中定义自定义的。mpconfigboard.h mpconfigport.h mpconfigboard.cmake sdkconfig boards/boards/sdkconfig.ble


如何在micropython固件中加入自己的py库

mpy的源码结构在不断更新

目前只需要找到对应的port文件夹下的modules就可以了,往里面直接扔py文件就会自动被编译到固件了

原理也不难,当前的manifest.py自动freeze了modules这个文件夹

比如esp32

就是ports\esp32\moduels


Raspberry RP2040

必须先构建 MicroPython 交叉编译器,这将用于 预编译(冻结)内置 Python 代码。这个交叉编译器是构建的,并且 使用以下命令在主机上运行:

make -C mpy-cross

此命令应从此存储库的根目录执行。 下面的所有其他命令都应该从 ports/rp2/ 目录执行。

RP2 固件的构建完全使用 CMake 完成,尽管简单 为了方便起见,还提供了 Makefile。要构建固件,请运行(从 此目录):

make submodules
make clean
make

如果你使用的是Rasoberry Pi Pico以外的其他板,那么你应该 将开发板名称传递给构建;例如,对于Raspberry Pi Pico W:

make BOARD=RPI_PICO_W submodules
make BOARD=RPI_PICO_W clean
make BOARD=RPI_PICO_W

参考资料:

[2]github.micropython rp2

[4]csdn.wsl代理