RaspberryPi Pico SDKをWSLで構築する方法
2024年の情報です
RaspberryPi PICOが新チップが出たり、新しい2が出たりで盛り上がってるので、開発環境を一から作ってみたので、その記録を残しておきます。
実はPICOが登場時にも触ってたんですが、当時と開発方法が変わってたので、今後も変わるだろうと思って2024年版です。とは言え、もう11月末なので、2025年版と言って良いのかもしれません。
WSL2の準備
WindowsのPowerSellで以下のコマンドを実行します。
wsl --install
wsl --update
wsl --list --verbose
wsl --install は、時間がかかりますのでゲームでもしておいてください。
wsl --update こちらも時間がかかりますので、ゲームでもしておいてください。
初回であれば、username と passwordを設定すると自動にログインが出来ます。
二回目以降は、
wsl ~
でUbuntu側にログインが出来ます。
Ubuntu側の準備
以降、Ubuntuでの話になります。
sudo apt update
sudo apt upgrade
一先ず、この辺を試しておきましょう。
sudo apt update は、Ubuntuの更新情報やライブラリのリンク情報を取得します。
sudo apt upgradeは、前のupdateで見つかった更新情報をダウンロードして反映します。
この辺はUbuntuの嗜みですね。
その他、PICOにインストールする為のライブラリをインストールしていきます。
sudo apt install wget
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
sudo apt install python3 git tar build-essential
sudo apt install openocd
sudo apt install libusb-1.0-0-dev
sudo apt install pkg-config
この辺を入れて置けば、スタートは大丈夫そう。
RaspberryPi PICO-SDKの準備
され、入れていきますよ?Ubuntuでの話です。
※念のため、ホームディレクトリで作業します。
変更時の対応は各々で、オススメはしません汗
wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
まずは、PICO用のセットアップスクリプトをダウンロードしてきます。
chmod +x pico_setup.sh
実行権限を与えます。
./pico_setup.sh
実行します。
ここも長いです。ゲームでもしておきます。
homeにpicoと言うディレクトリが出来、そのディレクトリに移動します。
この中のpico-examplesには色んなサンプルがあります。眺めてみるのも良いかも。
Blinkをコンパイルしてみる
cd ~
cd pico
一旦、話を合わせる為にhomeディレクトリに移動し、picoフォルダに行きます。
export PICO_SDK_PATH=~/pico/pico-sdk
PATHを通すのを忘れないで。これは再起動したら毎回必要です。
pwdでディレクトリを表示し、pico-sdkのPATHを指定します。
cd pico-examples
mkdir build
cd build
サンプルをコンパイルする為に、buildフォルダを作成してそのディレクトリに入ります。
cmake ..
でた!CMAKE!
makefileで足りない機能や便利な機能をcmakeで補っているらしいんだが、どちらにしても魔術的な記述でさ(まだcmakeの方が読みやすい)その内、記事にまとめたいと思っています。
cmake .. で、<..>があるので、buildディレクトリの一個下のpico-examplesのCMakeList等を読みに行き、その結果をbuildフォルダに保存していきます。
cmake が進むと、buildディレクトリに色々フォルダがコピーされます。
cd blink
pwd
make
ディレクトリ(~/pico/pico-examples/build/blink)であると思うが、念のため確認し
make コマンドでコンパイルが走ります。
上手く行くと、こんな感じで、[100%]の表記や、elfと言ったバイナリ形式の出力が見る事が出来る。
lsコマンドでフォルダーを見ると、.uf2 ファイルがあるのが確認できます。
.uf2がPICOに書き込むバイナリデータになります。
PICO-WでのBlinkを行う場合
PICO-Wの場合、ちょっとだけ操作が変わります。
悲しい事に、通常のBlinkではLチカはしません。
WのLEDはWiFiモジュールからアクセスする形になります。
cd ~
cd pico
cd pico-examples
cd build
pico-examplesのbuildディレクトリに行きます。
cmake .. -DPICO_BOARD=pico_w
先ほどのcmakeに引数 -DPICO_BOARD=pico_w が追加されてます。
これでPICO-W用の環境が整います。
cd pico_w/wifi/blink
make
pico_w用のサンプルが別にあるので、そのディレクトリのblinkに良き、makeを行います。
picow_blink.uf2 が分かりやすいLチカです。
書き込み方はWindowsで行う方法で出来ます。
uf2ファイルをPICOに書き込む
さて、ここからはWindowsに戻ります。
※書き込みについてはWSLでもできますが、まぁこっちの方が慣れてるので今回はこれで
WindowsのディレクトリにLinuxと言うドライブが登場してると思います。
ここをクリックすると、Ubuntuと言う共有フォルダが見つかります。
そこから home > ユーザー名 > pico > pico-example > build > blink
と言った感じで、先ほどコンパイルしたフォルダーまで行きます。
こんな感じで表示されます。
blink.uf2 がある事を確認します。
PICOのBOOTSELボタンを押しながら、USBを接続します
そうすると、ピコんと言ってWindowsでディスクとして認識して上記画像の様に表示されます。
ここに、先ほどのblink.uf2を貼り付けます。
一瞬張り付いて、自動でリセットがかかり、USBの認識が消えます。
これでLチカがされると思います。
終わりに
さて、サンプルがコンパイル出来ましたね。
次回は、自作プロジェクトを作成する方法です。
え?Arduino?MicroPython?そんな楽をしたって身に付かないでしょ?
皆様も近代的な低レイヤー開発を学んでいこうと思って試してみてください。
cmake が至る所に出て来るので、その慣れにも良いかもですね。
実はPICOのArduinoで動いたはずの自作ライブラリが移植したら動かない!なんでだ?って思ったら、なんとArduinoのdigitalWriteが遅かった為にうごいて居た説があり、SDKで直接GPIOを叩いたらかなり早かったので、Arduinoなんか使っている内はマイコン本来の能力は到底扱えないだろうなぁと思った次第。是非皆さんも直書きしましょう!!(ライバルに負けない為に)
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
ArtifactNoise合同会社では技術コンサルタントを行っております。
ご興味があれば是非ご連絡くださいませ。
北神雄太 kitagami(at)artifactnoise.com
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
参考文献
WSL関連
PICO関連
Discussion