mpbuild
轻松构建 MicroPython 固件!
mpbuild 在容器中构建 MicroPython 固件,因此您无需安装任何编译器工具链或开发工具。它知道每个板应使用哪个容器,从而使用相应的构建工具。
目录
用法
mpbuild 旨在在 MicroPython 仓库的根目录下执行。帮助文本(通过添加 --help 访问)内容详尽,并记录了高级选项。
[!NOTE] 请注意,存在一些 特殊 构建。
unix、webassembly和windows都可以指定为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`

左侧窗格显示在 MicroPython 树中找到的所有端口和板卡。选择某个板卡会在右侧窗格中填充其元数据,如果该板卡存在变体,则显示变体下拉菜单,并启用 Build / Rebuild / Clean 按钮。右下角的日志会在构建运行时流式传输 docker 输出。
键位绑定:
| 键 | 操作 |
|---|---|
↑ / ↓ | 导航树 |
→ | 展开当前分支 |
← | 折叠当前分支(或在叶节点上折叠父节点) |
Enter | 选择 |
b | 构建所选板卡 |
r | 重新构建所选板卡(先清理再构建) |
c | 清理所选板卡 |
s | 停止正在运行的构建 |
q | 退出 |
在构建已经运行时点击 Build、Rebuild 或 Clean,会在启动新构建之前终止正在运行的容器。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.toml 的 dev 组中声明。
安装开发依赖项:
uv sync --group dev
运行测试:
uv run pytest
带覆盖率运行:
uv run pytest --cov=mpbuild --cov-report=term-missing