编译MicroPython固件

MicroPython 是 Python 3 编程语言的一种轻量级实现,专为资源受限的嵌入式设备(如微控制器)设计。它允许开发者使用熟悉的 Python 语法直接控制硬件,无需深入底层寄存器或汇编代码,大幅降低了嵌入式开发的门槛。

本例程在Ubuntu 22.04上使用GCC交叉编译对树莓派Pico编译固件。

1. 基础环境

$ sudo apt install build-essential flex bc gawk texinfo file liblz4-dev ssh git libssl-dev libncurses-dev cmake
$ sudo apt install gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib pkg-config libusb-1.0-0-dev

2. 搭建树莓派环境

$ mkdir -p ~/pico
$ cd ~/pico
$ git clone --recurse-submodules https://github.com/raspberrypi/pico-sdk.git
$ git clone https://github.com/raspberrypi/picotool.git

声明sdk变量:

$ export PICO_SDK_PATH=$HOME/pico/pico-sdk

编译安装picotool:

$ cd ~/pico/picotool/
$ mkdir build
$ cd build/
$ cmake ..
$ make -j4
$ sudo make install

3. 编译MicroPython

$ cd ~/mpy

下载micropython源码,方式1:

$ git clone https://github.com/micropython/micropython.git

下载micropython源码,方式2 (以 v1.25.0 为例):

$ wget https://micropython.org/resources/source/micropython-1.25.0.tar.xz

我们不使用micropython自带的 '~/mpy/micropython/lib/pico-sdk',使用外部pico-sdk,以方便复用:

$ export PICO_SDK_PATH=$HOME/pico/pico-sdk

Note: 如果用mpy自带的pico-sdk, 执行: 'cd micropython && git submodule update --init lib/pico-sdk'。

编译MicroPython:

$ cd ~/mpy/micropython/ports/rp2
$ make -j4

生成的文件在:

$ ~/mpy/micropython/ports/rp2/build-RPI_PICO/firmware.uf2

4. 验证

树莓派pico按住bootsel,插入电脑,然后将 '~/mpy/micropython/ports/rp2/build-RPI_PICO/firmware.uf2' 复制到树莓派的存储空间。

把如下代码下载进树莓派pico (如使用Thonny IDE):

import time
from machine import Pin


led = Pin(25, Pin.OUT)

while True:
    led.value(1)
    time.sleep(1)
    led.value(0)
    time.sleep(1)

正常情况下,就可以看到板载LED闪烁了。

posted @ 2025-05-04 21:38  this毛豆  阅读(313)  评论(0)    收藏  举报