编译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闪烁了。