ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

mpbuild

轻松构建 MicroPython 固件!

mpbuild 在容器中构建 MicroPython 固件,因此您无需安装任何编译器工具链或开发工具。它知道每个板应使用哪个容器,从而使用相应的构建工具。

目录

用法

mpbuild 旨在在 MicroPython 仓库的根目录下执行。帮助文本(通过添加 --help 访问)内容详尽,并记录了高级选项。

[!NOTE] 请注意,存在一些 特殊 构建。unixwebassemblywindows 都可以指定为 BOARD,但它们的目标不是微控制器。有关详细信息,请参阅 MicroPython 文档

[!WARNING] 目前 mpbuild 已在 Linux 上(具体为 Windows 11 上 WSL 中的 Ubuntu 24.04)进行了测试,但旨在支持任何支持 Docker 的平台。

构建一个板,可选变体:

mpbuild build BOARD [VARIANT]

删除构建产物:

mpbuild clean BOARD [VARIANT]

清理并重新构建板卡(从头重建):

mpbuild rebuild BOARD [VARIANT]

列出可用的开发板,可选地按端口名称进行筛选。

显示开发板名称(作为可点击的链接)、变体以及每个端口的开发板数量:

mpbuild list [PORT]

交互模式

为了在无需输入名称的情况下探索看板并触发构建,mpbuild 附带了一个 Textual TUI:

mpbuild --interactive   # or `mpbuild -i`

Interactive TUI screenshot

左侧窗格显示在 MicroPython 树中找到的所有端口和板卡。选择某个板卡会在右侧窗格中填充其元数据,如果该板卡存在变体,则显示变体下拉菜单,并启用 Build / Rebuild / Clean 按钮。右下角的日志会在构建运行时流式传输 docker 输出。

键位绑定:

操作
/ 导航树
展开当前分支
折叠当前分支(或在叶节点上折叠父节点)
Enter选择
b构建所选板卡
r重新构建所选板卡(先清理再构建)
c清理所选板卡
s停止正在运行的构建
q退出

在构建已经运行时点击 BuildRebuildClean,会在启动新构建之前终止正在运行的容器。Stop 仅在构建实际流式传输时启用。

高级用法

验证板卡定义中引用的所有镜像的状态:

mpbuild check_images

作为模块使用

[!CAUTION] 这_很大程度上_是一个进行中的工作,API 可能会发生变化。

mpbuild 也可以作为 Python 模块使用。这使得它可以轻松集成到其他工具中。

示例:

import mpbuild

mpbuild.build("RPI_PICO")
mpbuild.list()

安装

uv tool install mpbuild

或者使用 pipx、pip 等。

安装完成后,您可能还想为 shell(支持 bash、zsh、fish 和 PowerShell)安装命令行标签补全功能。标签补全包括各种 mpbuild 命令以及板卡名称和变体:

mpbuild --install-completion

前提条件

MicroPython(或其分支)的克隆:

git clone git@github.com:micropython/micropython.git

Docker 目前对于管理容器是必需的,必须已安装并在系统路径中可用。

示例

$ mpbuild build RPI_PICO
# Downloads appropriate containers and builds firmware for the Raspberry Pi Pico
$ mpbuild list rp2
🐍 MicroPython Boards
└── rp2   19
    ├── ADAFRUIT_FEATHER_RP2040
    ├── ADAFRUIT_ITSYBITSY_RP2040
    ├── ADAFRUIT_QTPY_RP2040
    ├── ARDUINO_NANO_RP2040_CONNECT
    ├── GARATRONIC_PYBSTICK26_RP2040
    ├── NULLBITS_BIT_C_PRO
    ├── PIMORONI_PICOLIPO  FLASH_16M
    ├── PIMORONI_TINY2040  FLASH_8M
    ├── POLOLU_3PI_2040_ROBOT
    ├── POLOLU_ZUMO_2040_ROBOT
    ├── RPI_PICO
    ├── RPI_PICO2  RISCV
    ├── RPI_PICO_W
    ├── SIL_RP2040_SHIM
    ├── SPARKFUN_PROMICRO
    ├── SPARKFUN_THINGPLUS
    ├── W5100S_EVB_PICO
    ├── W5500_EVB_PICO
    └── WEACTSTUDIO  FLASH_2M, FLASH_4M, FLASH_8M

测试

测试套件使用 pytest。开发依赖项在 pyproject.tomldev 组中声明。

安装开发依赖项:

uv sync --group dev

运行测试:

uv run pytest

带覆盖率运行:

uv run pytest --cov=mpbuild --cov-report=term-missing