また自分用メモ。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-examples
に build
ディレクトリを作って cmake ..
してから blink
ディレクトリでmakeして実行ファイルを作る
$ ghq look raspberrypi/pico-examples $ mkdir build $ cd build $ cmake .. $ cd blink $ make
cd blink
は pico-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で怒られてしまうのであとでなんとかしたい。
調べてから https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf 見たらだいたい載ってた。