あんパン

こしあん派

Arch LinuxでRaspberry Pi Picoに繋いでLチカするまで

また自分用メモ。2週間くらい前にRaspberry Pi Picoを注文して放置してしまったのでそろそろ何かやりたい気持ちになった。


本体のBOOTSELボタンを押しながらUSBケーブルをPCに刺すとUSBマスストレージとして認識してくれる。

$ sudo dmesg
[93856.937775] usb 1-1: new full-speed USB device number 38 using xhci_hcd
[93857.079446] usb 1-1: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00
[93857.079459] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[93857.079464] usb 1-1: Product: RP2 Boot
[93857.079468] usb 1-1: Manufacturer: Raspberry Pi
[93857.079471] usb 1-1: SerialNumber: ***
[93857.083343] usb-storage 1-1:1.0: USB Mass Storage device detected
[93857.083789] scsi host2: usb-storage 1-1:1.0
[93858.095376] scsi 2:0:0:0: Direct-Access     RPI      RP2              3    PQ: 0 ANSI: 2

これをマウントしてストレージに書き込める状態を作っておく。lsblkでデバイスを確認して適当な場所にマウントする。

$ lsblk -f | grep RP2
└─sdb1 vfat FAT16 RPI-RP2 ***
$ sudo mkdir -p /media/RPI-RP2
$ sudo mount /dev/sdb1 /media/RPI-RP2
$ lsblk -f | grep RP2
└─sdb1 vfat FAT16 RPI-RP2 *** 127.8M  0% /media/RPI-RP2
$ ls /media/RPI-RP2
INDEX.HTM*  INFO_UF2.TXT*

クロスコンパイルするために必要なツールを入れておく。

$ sudo pacman -Sy arm-none-eabi-gcc arm-none-eabi-newlib

pico-sdkとpico-examplesをcloneしておいて、sdkのありかを環境変数 $PICO_SDK_PATH に設定しておく。

$ ghq get git@github.com:raspberrypi/pico-sdk.git
$ ghq get git@github.com:raspberrypi/pico-examples.git
$ ghq look raspberrypi/pico-sdk
$ git submodule update --init
$ pwd
/home/masawada/.ghq/github.com/raspberrypi/pico-sdk
$ export PICO_SDK_PATH=$(pwd)

pico-examplesbuild ディレクトリを作って cmake .. してから blink ディレクトリでmakeして実行ファイルを作る

$ ghq look raspberrypi/pico-examples
$ mkdir build
$ cd build
$ cmake ..
$ cd blink
$ make

cd blinkpico-examples/blink ではなく pico-examples/build/blink なので注意。あとはこれをマウントした場所にコピーすればOK

$ sudo cp blink.uf2 /media/RPI-RP2
$ sudo sync
$ sudo umount /media/RPI-RP2

syncした時点でRaspberry Pi Pico上のLEDが光り出す。

試しにsleepを短くして同じ手順で書き込むと、確かに点滅の間隔が短かくなることが確認できた。しかしヘッダファイルが見付からなくてaleで怒られてしまうのであとでなんとかしたい。

サンプル*1を開くと pico/stdlib.h: No such file or directory

調べてから https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf 見たらだいたい載ってた。