嵌入式开发 · 2023-01-17
micropython 编译esp32-c3固件
不同版本有不同的问题

前情提要:UBUNTU 20.04 LTSC,VPS(解决网络问题)
具体流程
更新源列表
sudo apt-get update
sudo apt-get upgrade #Optionalpython配置 将默认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-essentialcmake:
apt-get install cmake基于ARM内核编译的工具链:(可选的)
sudo apt-get install gcc-arm-none-eabiGit克隆 #网络环境
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 --recursiveMICROPYTHON源码克隆:
git clone -b v1.21.0 --recursive https://github.com/micropython/micropython.gitmicropython固件编译的安装
ESP-IDF 配置好编译环境
cd esp-idf
./install.sh
source export.sh编译 MICROPYTHON
必须先构建 MicroPython 交叉编译器,这将用于 预编译(冻结)内置 Python 代码。这个交叉编译器是构建的,并且 使用以下命令在主机上运行:
make -C mpy-crosscd 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参考资料:
[1]github.micropython esp32
[2]github.micropython rp2
[3]csdn,在micropython固件中加入自己的py库
[4]csdn.wsl代理