在Ubuntu配置树莓派pico C_C++开发环境
安装交叉编译相关工具
安装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
- 按住树莓派PICO上的BOOTSEL按钮,插入USB连接线,电脑会识别出新的存储设备。
- 把
.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