安装交叉编译相关工具

安装cmake、gcc-arm交叉编译器和newlib库(C和C++)。

sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib

安装SDK

开发环境是虚拟机,上github太卡,需要借助一下主机的https代理。

export https_proxy=http://主机IP:端口号

新建一个SDK相关的目录rpi_pico,拉取官方的pico-sdk仓库,并更新子模块。

cd ~
mkdir rpi_pico && cd rpi_pico
git clone https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init

为当前用户添加SDK环境变量。

echo "export PICO_SDK_PATH=/home/$USER/rpi_pico/pico-sdk" >> ~/.bashrc
source ~/.bashrc

更新SDK

cd ~/rpi_pico/pico-sdk
git pull
git submodule update

编译

以例程blink为例,我们先拉取官方的例程仓库。

cd ~/rpi_pico
git clone https://github.com/raspberrypi/pico-examples.git

pico-examples/blink为例,编译并烧录这个例程

# 构建pico-examples,为每个例程生成makefile
cd ~/rpi_pico/pico-examples/
mkdir build && cd build
cmake ..

# 生成的每个例程的makefile在当前目录,去编译blink
cd blink
# -j4表示使用4个线程进行编译
make -j4

编译完成后,在当前目录下会看到一堆文件:

blink.bin  blink.dis  blink.elf  blink.elf.map  blink.hex  blink.uf2  CMakeFiles  cmake_install.cmake  elf2uf2  Makefile

其中,以.elf为后缀的是elf文件,以.elf.map为后缀的是elf文件对应的内存分布情况,以.uf2为后缀的是可以烧录的文件。


烧录

windows

  1. 按住树莓派PICO上的BOOTSEL按钮,插入USB连接线,电脑会识别出新的存储设备。
  2. .uf2文件放入该存储设备,就会开始烧录文件,烧录完成后自动弹出设备。

linux

查看树莓派PICO的盘符。

sudo dmesg | tail
# [ 4936.463022]  sdb: sdb1
# [ 4936.478499] sd 33:0:0:0: [sdb] Attached SCSI removable disk

挂载到/mnt/pico/

sudo mkdir /mnt/pico
sudo mount /dev/sdb1 /mnt/pico/
ls /mnt/pico/
# INDEX.HTM  INFO_UF2.TXT
# 看到上述文件表示挂载成功了

接下来把.uf2文件拷贝至/mnt/pico目录下即可。

记得烧录完成后,卸载/mnt/pico

sudo umount /mnt/pico

参考

Getting started with Raspberry Pi Pico